Casi d'uso delle viste materializzate
Si applica a: ✅Microsoft Fabric✅Esplora dati di Azure
viste materializzate esporre una query di aggregazione su una tabella di origine o un'altra vista materializzata. Questo articolo illustra i casi d'uso comuni e avanzati per le visualizzazioni materializzate.
Casi d'uso comuni
Di seguito sono riportati scenari comuni che possono essere risolti usando una vista materializzata:
Aggiornare i dati: Aggiornare i dati restituendo l'ultimo record per entità usando
arg_max()
(funzione di aggregazione). Ad esempio, creare una vista che materializzi solo i record inseriti da ora in poi:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Ridurre la risoluzione dei dati Ridurre la risoluzione dei dati calcolando statistiche periodiche sui dati non elaborati. Usare varie funzioni di aggregazione per periodo di tempo. Ad esempio, mantenere uno snapshot up-to-date di utenti distinti al giorno:
.create materialized-view UsersByDay on table T { T | summarize dcount(User) by bin(Timestamp, 1d) }
record deduplicati : record deduplicati in una tabella usando
take_any()
(funzione di aggregazione). Ad esempio, creare una vista materializzata che deduplica la tabella di origine in base alla colonnaEventId
, usando un lookback di 6 ore. I record vengono deduplicati in base solo ai record inseriti 6 ore prima dei record correnti..create materialized-view with(lookback=6h) DeduplicatedTable on table T { T | summarize take_any(*) by EventId }
Nota
È possibile nascondere la tabella di origine creando una funzione con lo stesso nome della tabella che fa riferimento alla vista materializzata. Questo modello garantisce che i chiamanti che eseguono query sulla tabella acceda alla vista materializzata deduplicata perché funzioni eseguono l'override delle tabelle con lo stesso nome. Per evitare riferimenti ciclici nella definizione della vista, usare la funzione table() per fare riferimento alla tabella di origine:
.create materialized-view DeduplicatedTable on table T { table('T') | summarize take_any(*) by EventId }
Per altri esempi, vedere il comando .create materialized-view.
Scenario avanzato
È possibile usare una vista materializzata per l'elaborazione di eventi di creazione/aggiornamento/eliminazione. Per i record con informazioni incomplete o obsolete in ogni colonna, una vista materializzata può fornire gli aggiornamenti più recenti per ogni colonna, escluse le entità eliminate.
Si consideri la tabella di input seguente denominata Events
:
input
Timestamp | Cud | ID | col1 | col2 | col3 |
---|---|---|---|---|---|
2023-10-24 00:00:00.0000000 | C | 1 | 1 | 2 | |
2023-10-24 01:00:00.0000000 | U | 1 | 22 | 33 | |
2023-10-24 02:00:00.0000000 | U | 1 | 23 | ||
2023-10-24 00:00:00.0000000 | C | 2 | 1 | 2 | |
2023-10-24 00:10:00.0000000 | U | 2 | 4 | ||
2023-10-24 02:00:00.0000000 | D | 2 |
Creare una vista materializzata per ottenere l'aggiornamento più recente per colonna usando la funzione di aggregazione arg_max():
.create materialized-view ItemHistory on table Events
{
Events
| extend Timestamp_col1 = iff(isnull(col1), datetime(1970-01-01), Timestamp),
Timestamp_col2 = iff(isnull(col2), datetime(1970-01-01), Timestamp),
Timestamp_col3 = iff(isnull(col3), datetime(1970-01-01), Timestamp)
| summarize arg_max(Timestamp_col1, col1), arg_max(Timestamp_col2, col2), arg_max(Timestamp_col3, col3), arg_max(Timestamp, cud) by id
}
output
ID | Timestamp_col1 | col1 | Timestamp_col2 | col2 | Timestamp_col3 | col3 | Timestamp | Cud |
---|---|---|---|---|---|---|---|---|
2 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 00:10:00.0000000 | 4 | 1970-01-01 00:00:00.0000000 | 2023-10-24 02:00:00.0000000 | D | |
1 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 02:00:00.0000000 | 23 | 2023-10-24 01:00:00.0000000 | 33 | 2023-10-24 02:00:00.0000000 | U |
È possibile creare una funzione archiviata per pulire ulteriormente i risultati:
ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud
output finale
Aggiornamento più recente per ogni colonna per ID 1
, dal momento che l'ID 2
è stato eliminato.
Timestamp | ID | col1 | col2 | col3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Viste materializzate e criteri di aggiornamento
Le viste materializzate e i criteri di aggiornamento funzionano in modo diverso e gestiscono casi d'uso diversi. Usare le linee guida seguenti per identificare quale usare:
Le viste materializzate sono adatte per le aggregazioni , mentre i criteri di aggiornamento non sono. I criteri di aggiornamento vengono eseguiti separatamente per ogni batch di inserimento e pertanto possono eseguire solo aggregazioni all'interno dello stesso batch di inserimento. Se è necessaria una query di aggregazione, usare sempre viste materializzate.
I criteri di aggiornamento sono utili per le trasformazioni dei dati, gli arricchimenti con le tabelle delle dimensioni (in genere usando operatore di ricerca) e altre manipolazioni dei dati che possono essere eseguite nell'ambito di un singolo inserimento.
I criteri di aggiornamento vengono eseguiti durante il tempo di inserimento. I dati non sono disponibili per le query nella tabella di origine o nella tabella di destinazione fino a quando non vengono eseguiti tutti i criteri di aggiornamento. Le viste materializzate, d'altra parte, non fanno parte della pipeline di inserimento. Il processo di materializzazione viene eseguito periodicamente in background, dopo l'inserimento. I record nella tabella di origine sono disponibili per le query prima che vengano materializzati.
Sia i criteri di aggiornamento che le viste materializzate possono incorporare join, ma l'efficacia è limitata a scenari specifici. In particolare, i join sono adatti solo quando i dati necessari per il join da entrambi i lati sono accessibili al momento del processo di aggiornamento o materializzazione. Se le entità corrispondenti vengono inserite quando vengono eseguiti i criteri di aggiornamento o la materializzazione, è possibile ignorare i dati. Per altre informazioni sulle
, vedere parametro di query della vista materializzata e in tabelle dei fatti e delle dimensioni .
Nota
Se è necessario materializzare join non adatti per i criteri di aggiornamento e le viste materializzate, è possibile gestire manualmente questo processo. Per creare e archiviare i risultati delle operazioni di join, usare strumenti di orchestrazione e inserire dai comandi di query.