Zmaterializowane przypadki użycia widoków
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer
zmaterializowane widoki uwidaczniać zapytanie agregacji względem tabeli źródłowej lub innego zmaterializowanego widoku. W tym artykule opisano typowe i zaawansowane przypadki użycia zmaterializowanych widoków.
Typowe przypadki użycia
Poniżej przedstawiono typowe scenariusze, które można rozwiązać przy użyciu zmaterializowanego widoku:
Aktualizowanie danych: Aktualizuj dane, zwracając ostatni rekord dla jednostki przy użyciu funkcji
arg_max()
(funkcja agregacji). Na przykład utwórz widok, który zmaterializuje tylko rekordy pozyskane od teraz:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Zmniejsz rozdzielczość danych Zmniejsz rozdzielczość danych, obliczając okresowe statystyki na danych pierwotnych. Użyj różnych funkcji agregacji według okresu czasu. Na przykład zachowaj up-to— migawkę daty różnych użytkowników dziennie:
.create materialized-view UsersByDay on table T { T | summarize dcount(User) by bin(Timestamp, 1d) }
rekordy deduplikacji: deduplikuj rekordy w tabeli przy użyciu
take_any()
(funkcja agregacji). Na przykład utwórz zmaterializowany widok, który deduplikuje tabelę źródłową na podstawie kolumnyEventId
przy użyciu wyszukiwania wstecznego 6 godzin. Rekordy są deduplikowane tylko względem rekordów pozyskanych 6 godzin przed bieżącymi rekordami..create materialized-view with(lookback=6h) DeduplicatedTable on table T { T | summarize take_any(*) by EventId }
Nuta
Tabelę źródłową można ukryć, tworząc funkcję o takiej samej nazwie jak tabela odwołująca się do zmaterializowanego widoku. Ten wzorzec gwarantuje, że osoby wywołujące odpytujące tabelę uzyskują dostęp do zduplikowanego zmaterializowanego widoku, ponieważ funkcje zastępują tabele o tej samej nazwie. Aby uniknąć odwołań cyklicznych w definicji widoku, użyj funkcji table(), aby odwołać się do tabeli źródłowej:
.create materialized-view DeduplicatedTable on table T { table('T') | summarize take_any(*) by EventId }
Aby uzyskać więcej przykładów, zobacz polecenie .create materialized-view.
Scenariusz zaawansowany
Do przetwarzania zdarzeń tworzenia/aktualizowania/usuwania można użyć zmaterializowanego widoku. W przypadku rekordów z niekompletnymi lub nieaktualnymi informacjami w każdej kolumnie zmaterializowany widok może udostępniać najnowsze aktualizacje dla każdej kolumny, z wyłączeniem usuniętych jednostek.
Rozważ następującą tabelę danych wejściowych o nazwie Events
:
wejściowe
Sygnatury czasowej | cud | ID | kolumna 1 | kolumna 2 | 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 |
Utwórz zmaterializowany widok, aby pobrać najnowszą aktualizację dla kolumny przy użyciu funkcji agregacji arg_max():
Uruchom zapytania
.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
}
wyjściowe
ID | Timestamp_col1 | kolumna 1 | Timestamp_col2 | kolumna 2 | Timestamp_col3 | col3 | Sygnatury czasowej | 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 |
Aby dokładniej wyczyścić wyniki, możesz utworzyć funkcji przechowywanej:
ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud
końcowe dane wyjściowe
Najnowsza aktualizacja dla każdej kolumny identyfikatora 1
, ponieważ identyfikator 2
został usunięty.
Sygnatury czasowej | ID | kolumna 1 | kolumna 2 | col3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Zmaterializowane widoki a zasady aktualizacji
Zmaterializowane widoki i zasady aktualizacji działają inaczej i obsługują różne przypadki użycia. Skorzystaj z poniższych wskazówek, aby określić, którego z nich należy użyć:
Zmaterializowane widoki są odpowiednie dla agregacji , podczas gdy zasady aktualizacji nie są. Zasady aktualizacji są uruchamiane oddzielnie dla każdej partii pozyskiwania i dlatego mogą wykonywać agregacje tylko w ramach tej samej partii pozyskiwania. Jeśli potrzebujesz zapytania agregacji, zawsze używaj zmaterializowanych widoków.
Zasady aktualizacji są przydatne w przypadku przekształceń danych, wzbogacania tabel wymiarów (zwykle przy użyciu operatora wyszukiwania ) i innych manipulacji danymi, które mogą być uruchamiane w zakresie pojedynczego pozyskiwania.
Zasady aktualizacji są uruchamiane w czasie pozyskiwania. Dane nie są dostępne dla zapytań w tabeli źródłowej lub tabeli docelowej do momentu uruchomienia wszystkich zasad aktualizacji. Zmaterializowane widoki z drugiej strony nie są częścią potoku pozyskiwania. Proces materializacji jest okresowo uruchamiany w tle po pozyskaniu. Rekordy w tabeli źródłowej są dostępne dla zapytań, zanim zostaną zmaterializowane.
Zarówno zasady aktualizacji, jak i zmaterializowane widoki mogą obejmować sprzężenia, ale ich skuteczność jest ograniczona do określonych scenariuszy. W szczególności sprzężenia są odpowiednie tylko wtedy, gdy dane wymagane dla sprzężenia z obu stron są dostępne w czasie procesu aktualizacji lub materializacji. Jeśli pasujące jednostki są pozyskiwane po uruchomieniu zasad aktualizacji lub materializacji, istnieje ryzyko pomijania danych. Zobacz więcej na temat
dimension tables
w zmaterializowanym parametrze zapytania widoku i w tabelach faktów i wymiarów .
Nuta
Jeśli musisz zmaterializować sprzężenia, które nie są odpowiednie dla zasad aktualizacji i zmaterializowane widoki, możesz samodzielnie zarządzać tym procesem. Aby utworzyć i zapisać wyniki operacji sprzężenia, użyj narzędzi orkiestracji i pozyskiwania z poleceń zapytań.