Optymalne odświeżanie w przypadku zmaterializowanych widoków jeziora w jeziorze

Za każdym razem, gdy zaplanowane odświeżanie jest uruchamiane dla zmaterializowanych widoków typu lake, usługa Fabric określa najlepszą strategię użycia — bez odświeżania, przyrostowego lub pełnego — na podstawie tego, co zmieniło się w danych źródłowych. To zachowanie jest nazywane optymalnym odświeżaniem i ułatwia aktualizowanie zmaterializowanych widoków jeziora przy jednoczesnym minimalizowaniu kosztów obliczeń i czasu odświeżania.

W tym artykule wyjaśniono, jak działa optymalne odświeżanie, co robi każda strategia i jak w razie potrzeby przełączyć się do trybu pełnego odświeżania.

Uwaga / Notatka

Optymalne odświeżanie nie jest obsługiwane w następujących scenariuszach:

  • Definicje PySpark: optymalne odświeżanie ma zastosowanie tylko do MLV zdefiniowanych za pomocą Spark SQL. Dynamiczne maszyny MLV zdefiniowane przez program PySpark zawsze używają pełnego odświeżania.
  • Tabele źródłowe inne niż Delta: Zmaterializowane widoki typu lake, które używają tabel innych niż Delta jako źródło, zawsze wykonują pełne odświeżanie. Strategie przyrostowe i bez odświeżania wymagają źródeł w postaci tabel Delta.

Zalety optymalnego odświeżania

Analizując commity delta w tabelach źródłowych, funkcja optymalnego odświeżania może podejmować inteligentne decyzje dotyczące przetwarzania danych. Jeśli to możliwe, może to spowodować:

  • Niższy koszt: Mniej obliczeń i przechowywania jest używanych, gdy Fabric wykryje, że dane źródłowe nie uległy zmianie i całkowicie pomija odświeżanie. Nie są naliczane dodatkowe opłaty za optymalne odświeżanie — opłaty są naliczane na podstawie użycia zasobów obliczeniowych podczas operacji odświeżania.
  • Większa wydajność: szybsze cykle odświeżania, gdy trzeba przetworzyć tylko zmienione dane, co pomaga dostarczać świeższe szczegółowe informacje.
  • Oszczędność czasu: krótszy czas trwania odświeżania podczas stosowania przetwarzania przyrostowego zamiast ponownego skompilowania pełnego zestawu danych.

Optymalne strategie odnowienia

W poniższej tabeli opisano strategie odświeżania, które może wybrać optymalne odświeżanie:

Polityka Odświeżania Description
Brak odświeżania Jeśli w tabelach źródłowych nie zostaną wykryte żadne nowe delta commits, Fabric całkowicie pomija odświeżanie, unikając niepotrzebnych obliczeń.
Odświeżanie przyrostowe Przetwarza tylko zmienione dane, gdy zostaną wykryte nowe komity delta w tabelach źródłowych.
Pełne odświeżanie Przelicza cały zmaterializowany widok jeziora z pełnego źródłowego zestawu danych. Ta strategia jest używana w przypadku wykrycia nieobsługiwanych wyrażeń, gdy zmiany nie mogą być przetwarzane przyrostowo lub gdy źródłowy zestaw danych jest wystarczająco mały, że pełna ponowna kompilacja jest szybsza niż przetwarzanie przyrostowe.

Ważne

Odświeżanie stopniowe jest stosowane na podstawie następujących czynników:

  • Wzorzec danych źródłowych. Dane tylko do dodawania wspierają inkrementalne przetwarzanie wstawek. Dla danych nieprzypisanych, takich jak usuwanie lub aktualizacje, odświeżanie przyrostowe jest obsługiwane tylko wtedy, gdy zmaterializowany widok jeziora używa podpowiedzi odświeżającej identyfikującą tożsamość wiersza. W przeciwnym razie silnik wraca do pełnego odświeżania. Aby uzyskać więcej szczegółów, zobacz Przyrostowe odświeżanie i wzorce zmian danych.
  • Strumień danych o zmianach Delta (CDF). CDF musi być włączone (delta.enableChangeDataFeed=true) we wszystkich tabelach źródeł cytowanych w zmaterializowanej definicji widoku jeziora. Bez CDF optymalne odświeżanie może jedynie wybrać między brakiem odświeżania a pełnym odświeżaniem. Aby uzyskać więcej informacji, zobacz Włączanie odświeżania przyrostowego.

Konfigurowanie optymalnego odświeżania

Optymalny przełącznik odświeżania zapewnia strategie bez odświeżania i pełnego odświeżania bez konieczności dodatkowej konfiguracji. Aby włączyć strategię odświeżania przyrostowego, należy również włączyć przepływ danych ze zmian na tabelach źródłowych.

Włączanie optymalnego trybu odświeżania

Domyślnie dla rodowodu widoku jeziora jest włączony optymalny tryb odświeżania. Jeśli nie jest włączona, wykonaj następujące kroki, aby ją włączyć:

  1. Przejdź do jeziora i wybierz pozycję Zmaterializowane widoki na jezioro.

  2. Wybierz pozycję Zarządzaj, a następnie wybierz przełącznik Optymalne odświeżanie , aby go włączyć.

    Zrzut ekranu przedstawiający przełącznik umożliwiający włączenie optymalnego trybu odświeżania.

Wzorce odświeżania i zmiany danych

Odświeżanie przyrostkowe obsługuje zarówno wzorce danych tylko z dodawaniem, jak i bez dołączania, gdy zapytanie i dane współpracują ze strategią odświeżania.

Uwaga / Notatka

Gdy odświeżanie przyrostowe nie jest najwydajniejszą opcją, silnik może zastosować pełne odświeżenie na podstawie skali i kosztu zmian. Ten mechanizm awaryjny pomaga utrzymać wydajne odświeżanie przy jednoczesnym zachowaniu poprawności.

W przypadku odświeżeń tylko z dodawaniem Fabric przetwarza tylko nowe wiersze dodane po poprzednim odświeżeniu. W przypadku operacji innych niż dopisywanie danych, takich jak usuwanie lub aktualizowanie, silnik potrzebuje niezawodnego sposobu na identyfikację wierszy. Jeśli zmaterializowany widok jeziora definiuje podpowiedzi odświeżającej, która deklaruje unikalny klucz, Fabric może stosować delta stopniowo. Jeśli nie ma dostępnego kompatybilnego klucza, silnik wraca do pełnego odświeżania – nawet gdy CDF jest włączone, a zapytanie korzysta tylko z obsługiwanych konstrukcji SQL.

Więcej informacji o obsłudze usuwania i aktualizowania znajdziesz w artykule Obsługa usuwania i aktualizowania w materializowanych widokach jeziora z wskazówkami odświeżania.

Włącz odświeżanie przyrostowe

Aby użyć odświeżania przyrostowego, należy włączyć właściwość strumienia zmian różnicowych (CDF) dla wszystkich tabel źródłowych lub zmaterializowanych widoków jeziora, które są referencjami w definicji zmaterializowanego widoku jeziora. Usługa CDF umożliwia usłudze Fabric odczytywanie tylko wierszy, które uległy zmianie od czasu ostatniego odświeżania, zamiast ponownego przetwarzania pełnego zestawu danych.

Bez włączonej funkcji CDF optymalne odświeżanie może wybierać tylko między brakem odświeżania a pełnym odświeżaniem.

Wskazówka

Aby ułatwić identyfikację możliwości optymalizacji odświeżania, Fabric wyświetla baner z listą zmaterializowanych widoków jeziora danych, które kwalifikują się do odświeżania przyrostowego, ale są zablokowane, ponieważ w co najmniej jednej tabeli źródłowej nie włączono funkcji CDF. Baner pojawia się w widoku pochodzenia, w szczegółach ostatnich uruchomień i na poziomie poszczególnych węzłów, dzięki czemu można zauważyć brak niezależnie od używanego punktu wejścia.

Zrzut ekranu przedstawiający baner Save refresh and cost (Zapisz odświeżanie i koszt) na stronie Zmaterializowane widoki lake z przyciskiem Aktywuj usługę CDF.

Aby włączyć usługę CDF bezpośrednio z baneru:

  1. Na banerze wybierz pozycję Aktywuj usługę CDF.

  2. W oknie dialogowym Włączanie zestawienia danych zmian przejrzyj listę zmaterializowanych widoków typu lake i tabel źródłowych, w których będzie włączona usługa CDF.

    Zrzut ekranu przedstawiający okno dialogowe Włącz kanał informacyjny zmian danych, zawierające zmaterializowane widoki lake i tabele źródłowe, dla których zostanie włączony mechanizm CDF.

  3. Wybierz Włącz. Następne odświeżenie uwzględnia zaktualizowany stan CDF.

Uwaga / Notatka

Włączenie CDF w tabelach źródłowych nie ma mierzalnego wpływu na wykorzystanie pamięci masowej ani na wydajność tabel źródłowych używanych przez zmaterializowane widoki Lake. CDF to standardowa właściwość tabeli Delta Lake, z której mogą korzystać również inne funkcje Fabric. Aby uzyskać więcej informacji o sposobie działania usługi CDF, zobacz Use Delta Lake change data feed (Używanie zestawienia zmian usługi Delta Lake).

Usługę CDF można włączyć w czasie tworzenia, dołączając TBLPROPERTIES do instrukcji CREATE :

CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT 
    o.order_id,
    o.order_date,
    o.product_id,
    p.product_name,
    o.quantity,
    p.price,
    o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id

W przypadku istniejących tabel źródłowych użyj polecenia ALTER TABLE , aby włączyć usługę CDF:

ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

Aby na przykład włączyć usługę CDF w obu tabelach źródłowych z przewodnika Wprowadzenie:

ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

Konstrukcje SQL obsługiwane przez odświeżanie przyrostowe

Odświeżanie przyrostowe działa, gdy zmaterializowana definicja widoku jeziorowego (lake view) wykorzystuje wyłącznie opisane tutaj konstrukcje SQL. Jeśli zapytanie zawiera nieobsługiwane konstrukcje, takie jak funkcje okna lub funkcje niedeterministyczne, Fabric nadal odświeża dane, ale przechodzi do pełnego odświeżania.

Konstrukcja SQL Uwaga
Wyrażenie SELECT Obsługiwane są funkcje i wyrażenia deterministyczne. Funkcje niedeterministyczne, takie jak rand(), uuid()i current_timestamp() nie są obsługiwane. DISTINCT i funkcje okien nie są obsługiwane.
FROM Obsługuje tabele delty i zmaterializowane widoki lake. Podzapytania i CTE działają, jeśli używają tylko obsługiwanych klauzul.
WHERE Obsługiwane są tylko funkcje wbudowane deterministyczne.
SPRZĘŻENIE WEWNĘTRZNE Supported.
LEWE DOŁĄCZENIE ZEWNĘTRZNE / LEWE PÓŁPOŁĄCZENIE Supported. Odświeżanie przyrostowe działa tylko wtedy, gdy tabela po prawej stronie pozostanie niezmieniona podczas cyklu odświeżania. Każda zmiana w tabeli po prawej stronie wyzwala pełne odświeżenie.
GRUPUJ WEDŁUG /agregacje Supported. Użycie agregatów (AVG(), STDDEV(), i innych) wymaga, aby każda tabela źródłowa była podzielona na partycje, a kolumna partycji była uwzględniona w klauzuli GROUP BY zapytania MLV – ten wymóg pozwala Fabric stopniowo przeliczać tylko dotknięte partycje.
SUM(), MIN(), MAX(), oraz COUNT() (bez DISTINCT) są szczególnym przypadkiem: obsługują odświeżanie przyrostowe bez wymogu partycjonowania.
Mieszanie innych funkcji agregatu z SUM(), COUNT(), MIN(), i MAX() w tym samym zapytaniu (na przykład SELECT SUM(amount), AVG(price) ...) wymaga spełnienia warunku partycjonowania dla całego zapytania; w przeciwnym razie Fabric wraca do pełnego odświeżania. GROUP BY kolumny muszą być wyświetlane na SELECT liście.
ZWIĄZEK WSZYSTKICH Supported.
WITH Typowe wyrażenia tabeli (CTE), jeśli używają tylko obsługiwanych klauzul.
Podzapytania w wyrażeniach Podzapytania w wyrażeniach SELECT lub WHERE (takich jak podzapytania skalarne lub EXISTS) wyzwalają pełne odświeżanie, jeśli jakakolwiek tabela, do której odwołuje się odwołanie, ulegnie zmianie.
Ograniczenia dotyczące jakości danych Tylko deterministyczne wbudowane funkcje są obsługiwane w ograniczeniach.

Uwaga / Notatka

Korzystanie z nieobsługiwanych konstrukcji nie uniemożliwia tworzenia zmaterializowanego widoku jeziora. Oznacza to tylko, że Fabric używa pełnego odświeżania zamiast odświeżania przyrostowego.

Pełne odświeżanie

Optymalne odświeżanie automatycznie wraca do pełnego odświeżania w razie potrzeby, więc zwykle nie trzeba go wymuszać. Istnieją jednak przypadki, w których można ręcznie wyzwolić pełne odświeżanie — na przykład w celu rozwiązywania problemów z nieoczekiwanymi wynikami lub ponownego przetwarzania danych po skorygowaniu.

Uruchamianie jednorazowego pełnego odświeżania przy użyciu języka SQL

Aby wymusić pełne odświeżenie określonego zmaterializowanego widoku lake, uruchom następujące polecenie:

REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL

Uwaga / Notatka

Jeśli nazwa obszaru roboczego zawiera spacje, umieść ją w apostrofach: `My Workspace`.lakehouse.schema.view_name

Wyłącz optymalne odświeżanie

Jeśli chcesz, aby każdy zaplanowany przebieg wykonał pełne odświeżanie, możesz wyłączyć przełącznik optymalnego odświeżania. Spowoduje to wyłączenie strategii bez odświeżania i przyrostowych — każde uruchomienie ponownie skompiluje pełny zestaw danych, nawet jeśli żadne dane źródłowe nie uległy zmianie.

  1. Przejdź do jeziora i wybierz pozycję Zmaterializowane widoki na jezioro.

  2. Wybierz Zarządzaj i wyłącz przełącznik Optymalnego odświeżania .

    Zrzut ekranu przedstawiający przełączenie do trybu pełnego odświeżania.