Udostępnij za pośrednictwem


Zmaterializowane przypadki użycia widoków

Dotyczy: ✅Microsoft FabricAzure 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 kolumny EventId 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ń.