Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sia i flussi REPLACE WHERE che le viste materializzate standalone permettono di mantenere tabelle derivate che restano aggiornate man mano che i dati sorgente cambiano, ma risolvono problemi diversi. Per la maggior parte dei carichi di lavoro batch extract, transform and load (ETL) che periodicamente sovrascrivono una finestra temporale o una partizione, si utilizza un flusso incrementale REPLACE WHERE (REPLACE flow). Usa viste materializzate per un livello di query-acceleration che serve risultati precalcolati a dashboard e report.
Questa pagina copre tabelle di streaming indipendenti e visualizzazioni materializzate. Per i flussi REPLACE WHERE in una pipeline Lakeflow, vedi Elaborazione batch con flussi REPLACE WHERE.
Usa REPLACE WHERE per le sovrascritture batch
Un flusso REPLACE WHEREflow ricalcola e sovrascrive solo le righe che corrispondono a un predicato, come una finestra temporale o una partizione. Tutte le altre righe restano intatte. Poiché il flow rivaluta la query sorgente solo per quell'intervallo di predicati, il costo di ogni refresh dipende dalla dimensione dell'intervallo, non dalla dimensione della tabella.
Una vista materializzata mantiene il risultato completo della sua query di definizione. Azure Databricks aggiorna una visualizzazione materializzata in modo incrementale quando la query e i dati sorgente la supportano, e altrimenti esegue un aggiornamento completo. Se un refresh sia incrementale dipende dalla struttura delle query e dalle tabelle sorgente, quindi il costo di ogni refresh è più difficile da prevedere. Consulta Come vengono aggiornate le viste materializzate autonome?
Per un modello di dati ETL batch che cambia nei range limitati, un flusso REPLACE WHERE ti permette di controllare esattamente quali righe ogni refresh riscrive. Una vista materializzata è la scelta migliore quando i lettori hanno bisogno di un accesso rapido a un risultato precalcolato.
Mappare i costrutti ai livelli medaglione
La tabella seguente mappa ogni livello di un'architettura a medaglione al costrutto raccomandato da Databricks:
| Livello | Costruire | Perché |
|---|---|---|
| Bronzo (acquisizione grezza) | Ingestione con Lakeflow Connect o Auto Loader | Acquisisce i record grezzi in modo incrementale man mano che arrivano, senza rielaborare i dati storici. |
| Argento (informazioni) | Flusso REPLACE incrementale WHERE | Sovrascrive solo le finestre temporali o le partizioni interessate per aggiornamenti delle tabelle dei fatti, dati in ritardo e correzioni. |
| Argento (dimensioni) |
AUTO CDC Flusso |
Applica automaticamente la semantica di inserimento, aggiornamento e cancellazione e preserva la cronologia con dimensione a cambiamento lento (SCD) Tipo 1 o Tipo 2. |
| Oro (aggregazioni e modelli di dati) | Flusso REPLACE incrementale WHERE | Ricalcola solo l'intervallo del predicato per aggregati e modelli, evitando i ricalcoli completi della tabella. |
| Accelerazione delle query ed erogazione | vista materializzata | Fornisce i risultati precalcolati a dashboard e report e mantiene aggiornati i risultati delle query. |
Guida alle decisioni
Usa la seguente guida per scegliere tra i due costrutti.
Usa un flusso REPLACE WHERE nei seguenti casi:
- Esegui sovrascritture batch periodiche di un intervallo di tempo o di una partizione.
- Correggi i dati arrivati in ritardo.
- Applicare le eliminazioni per conformità normativa a un intervallo limitato.
- Aggiorna i dati a livello di partizione.
Usa una vista materializzata quando:
- Accelera le query della dashboard.
- Fornisci aggregazioni precalcolate ai lettori.
- Mantieni aggiornati i risultati delle query per un layer di serving.
Esempio: sovrascrittura incrementale con REPLACE WHERE
Il seguente esempio definisce una tabella target che sovrascrive solo gli ultimi 7 giorni di dati ad ogni aggiornamento. Durante il refresh, il flow elimina le righe corrispondenti al predicato, ricalcola la query sorgente per lo stesso intervallo e inserisce i risultati. Le file fuori dalla finestra restano intatte:
CREATE OR REFRESH STREAMING TABLE payments_latest
FLOW REPLACE WHERE payment_date >= date_add(current_date(), -7) BY NAME
SELECT payment_id, booking_id, status, payment_date
FROM samples.wanderbricks.payments;
BY NAME è necessario affinché le colonne corrispondano per nome e non per posizione. Per la sintassi completa, gli override dei predicati, i backfill e il comportamento incrementale di refresh, vedi REPLACE WHERE flows per le tabelle di streaming standalone.