Případy použití materializovaných zobrazení
Materializovaná zobrazení zpřístupňují agregační dotaz přes zdrojovou tabulku nebo jiné materializované zobrazení. Tento článek se zabývá běžnými a pokročilými případy použití materializovaných zobrazení.
Běžné případy použití
Níže jsou uvedené běžné scénáře, které je možné vyřešit pomocí materializovaného zobrazení:
Aktualizovat data: Aktualizujte data vrácením posledního záznamu na entitu pomocí
arg_max()
(agregační funkce). Vytvořte například zobrazení, které materializuje jenom záznamy, které od této chvíle ingestují:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Snížení rozlišení dat Snižte rozlišení dat výpočtem pravidelné statistiky nad nezpracovanými daty. Používejte různé agregační funkce podle časového období. Můžete například udržovat aktuální snímek 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 záznamů: Odstranění duplicitních záznamů v tabulce pomocí
take_any()
(agregační funkce) Můžete například vytvořit materializované zobrazení, které odstranění duplicitních dat zdrojové tabulky naEventId
základě sloupce pomocí zpětného pohledu 6 hodin. Odstranění duplicit záznamů se pouze u záznamů přijatých 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 vytvořením funkce se stejným názvem jako tabulka, která místo toho odkazuje na materializované zobrazení. Tento model 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řepíší tabulky se stejným názvem. Pokud se chcete vyhnout cyklickým odkazům v definici zobrazení, použijte funkci table() k odkazu na zdrojovou 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ář
Pro zpracování událostí vytvoření, aktualizace nebo odstranění můžete použít materializované zobrazení. Při zpracování záznamů s neúplnými nebo zastaralými informacemi pro každý sloupec může materializované zobrazení poskytovat nejnovější aktualizace pro každý sloupec s výjimkou odstraněných entit.
Představte si následující vstupní tabulku s názvem Events
:
Vstup
Timestamp | Ž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 pro 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ýstup
ID | Timestamp_col1 | sloupec 1 | Timestamp_col2 | sloupec 2 | Timestamp_col3 | sloupec 3 | Timestamp | Ž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ýstup
Nejnovější aktualizace pro každý sloupec id 1
, protože ID 2
bylo odstraněno.
Timestamp | ID | sloupec 1 | sloupec 2 | sloupec 3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Materializovaná zobrazení vs. zásady aktualizací
Materializovaná zobrazení a zásady aktualizace fungují odlišně a slouží různým případům použití. Podle následujících pokynů určete, který z nich byste měli použít:
Materializovaná zobrazení jsou vhodná pro agregace, ale zásady aktualizací ne. Zásady aktualizace se spouští samostatně pro každou dávku příjmu dat, a proto můžou provádět agregace pouze v rámci stejné dávky příjmu dat. Pokud potřebujete agregační dotaz, vždy používejte materializovaná zobrazení.
Zásady aktualizace jsou užitečné pro transformace dat, rozšiřování pomocí tabulek dimenzí (obvykle pomocí operátoru vyhledávání) a další manipulace s daty, které se dají spustit v rámci jednoho příjmu dat.
Zásady aktualizace se spouštějí během doby příjmu dat. Data nejsou k dispozici pro dotazy ve zdrojové nebo cílové tabulce, dokud se nespustí všechny zásady aktualizace. Materializovaná zobrazení na druhou stranu nejsou součástí kanálu příjmu dat. Proces materializace se po příjmu dat pravidelně spouští na pozadí. Záznamy ve zdrojové tabulce jsou k dispozici pro dotazy před jejich materializaci.
Zásady aktualizace i materializovaná zobrazení můžou zahrnovat spojení, ale jejich efektivita je omezená na konkrétní scénáře. Konkrétně jsou spojení vhodná pouze v případě, že jsou data potřebná pro spojení z obou stran přístupná v době aktualizace zásad nebo procesu materializace. Pokud se při spuštění zásad aktualizace nebo materializace ingestují odpovídající entity, existuje riziko přehlédnutí dat. Další informace najdete
dimension tables
v parametru dotazu materializovaného zobrazení a v tabulkách faktů a dimenzí.
Poznámka
Pokud potřebujete materializovat spojení, která nejsou vhodná pro zásady aktualizace a materializovaná zobrazení, můžete k tomu orchestrovat vlastní proces pomocí nástrojů pro orchestraci a ingestování z příkazů dotazů.
Související obsah
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro