Případy použití materializovaných zobrazení
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer
materializovaná zobrazení zveřejnit agregační dotaz na zdrojovou tabulku nebo jiné materializované zobrazení. Tento článek popisuje běžné a pokročilé případy použití materializovaných zobrazení.
Běžné případy použití
Toto jsou běžné scénáře, které je možné řešit pomocí materializovaného zobrazení:
Aktualizovat data: Aktualizovat data vrácením posledního záznamu na entitu pomocí
arg_max()
(agregační funkce). Vytvořte například zobrazení, které odteď materializuje pouze záznamy přijaté od této chvíle:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Snížit rozlišení dat Snížit rozlišení dat výpočtem pravidelných statistik nad nezpracovanými daty. Používejte různé agregační funkce podle časového období. Udržujte například up-tosnímek data jedinečných uživatelů za den:
.create materialized-view UsersByDay on table T { T | summarize dcount(User) by bin(Timestamp, 1d) }
odstranění duplicitních dat záznamů: odstranění duplicitních dat v tabulce pomocí
take_any()
(agregační funkce). Můžete například vytvořit materializované zobrazení, které deduplikuje zdrojovou tabulku na základě sloupceEventId
pomocí zpětného vyhledávání 6 hodin. Záznamy se deduplikují jenom u ingestovaných záznamů 6 hodin před aktuálními záznamy..create materialized-view with(lookback=6h) DeduplicatedTable on table T { T | summarize take_any(*) by EventId }
Poznámka
Zdrojovou tabulku můžete skrýt tak, že vytvoříte funkci se stejným názvem jako tabulka, která místo toho odkazuje na materializované zobrazení. Tento vzor zajišťuje, že volající dotazující se na tabulku přistupují k materializovanému zobrazení s odstraněnými duplicitními daty, protože funkce přepisují tabulky se stejným názvem. Pokud se chcete vyhnout cyklickým odkazům v definici zobrazení, použijte funkci table() odkaz na zdrojnou tabulku:
.create materialized-view DeduplicatedTable on table T { table('T') | summarize take_any(*) by EventId }
Další příklady najdete v příkazu .create materialized-view.
Pokročilý scénář
K vytvoření, aktualizaci nebo odstranění zpracování událostí můžete použít materializované zobrazení. U záznamů s neúplnými nebo zastaralými informacemi v každém sloupci může materializované zobrazení poskytovat nejnovější aktualizace pro každý sloupec s výjimkou entit, které byly odstraněny.
Představte si následující vstupní tabulku s názvem Events
:
vstupní
Časová značka | žvanec | ID | sloupec 1 | sloupec 2 | sloupec 3 |
---|---|---|---|---|---|
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 |
Pomocí agregační funkce arg_max() vytvořte materializované zobrazení pro získání nejnovější aktualizace na sloupec:
.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
}
výstupní
ID | Timestamp_col1 | sloupec 1 | Timestamp_col2 | sloupec 2 | Timestamp_col3 | sloupec 3 | Časová značka | žvanec |
---|---|---|---|---|---|---|---|---|
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 |
Pokud chcete výsledky dále vyčistit, můžete vytvořit uloženou funkci:
ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud
konečný výstupní
Nejnovější aktualizace pro každý sloupec pro ID 1
, protože ID 2
bylo odstraněno.
Časová značka | ID | sloupec 1 | sloupec 2 | sloupec 3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Materializovaná zobrazení vs. zásady aktualizace
Materializovaná zobrazení a zásady aktualizace fungují odlišně a slouží různým případům použití. Pomocí následujících pokynů určete, který z nich byste měli použít:
Materializovaná zobrazení jsou vhodná pro agregace, zatímco zásady aktualizace nejsou. Zásady aktualizace běží pro každou dávku příjmu dat samostatně, a proto můžou provádět agregace pouze ve stejné dávce příjmu dat. Pokud potřebujete agregační dotaz, vždy použijte materializovaná zobrazení.
Zásady aktualizace jsou užitečné pro transformace dat, rozšiřování tabulek dimenzí (obvykle pomocí operátoru vyhledávání ) a dalších manipulací s daty, které se můžou spouštět v rozsahu jednoho příjmu dat.
Aktualizace zásad běží během doby příjmu dat. Data nejsou k dispozici pro dotazy ve zdrojové tabulce nebo cílové tabulce, dokud se nespustí všechny zásady aktualizace. Materializovaná zobrazení na druhé straně nejsou součástí kanálu příjmu dat. Proces materializace pravidelně běží na pozadí, po ingestování. Záznamy ve zdrojové tabulce jsou k dispozici pro dotazy dříve, než se materializují.
Aktualizace zásad i materializovaná zobrazení mohou zahrnovat spojení, ale jejich účinnost je omezená na konkrétní scénáře. Spojení jsou vhodná pouze v případě, že data potřebná pro spojení z obou stran jsou přístupná v době procesu aktualizace nebo materializace. Pokud se při spuštění zásad aktualizace nebo materializace ingestují odpovídající entity, hrozí riziko přehlédnutí dat. Další informace o
dimension tables
najdete v materializovaném parametru dotazu zobrazení a v tabulkách faktů a dimenzí .
Poznámka
Pokud potřebujete materializovat spojení, která nejsou vhodná pro zásady aktualizací a materializovaná zobrazení, můžete tento proces spravovat sami. K vytvoření a uložení výsledků operací spojení použijte nástroje pro orchestraci a ingestování z příkazů dotazu.