Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób tworzenia i odświeżania zmaterializowanych widoków w usłudze Databricks SQL w celu zwiększenia wydajności i zmniejszenia kosztów obciążeń przetwarzania i analizy danych.
Co to są zmaterializowane widoki?
W usłudze Databricks SQL, widoki materializowane to tabele zarządzane w katalogu Unity, które fizycznie przechowują wyniki zapytania. W przeciwieństwie do widoków standardowych, które obliczają wyniki na żądanie, zmaterializowane widoki buforują wyniki i aktualizują je w miarę zmiany bazowych tabel źródłowych — zgodnie z harmonogramem lub automatycznie.
Zmaterializowane widoki są dobrze dostosowane do obciążeń przetwarzania danych, takich jak przetwarzanie wyodrębniania, przekształcania i ładowania (ETL). Zmaterializowane widoki zapewniają prosty, deklaratywny sposób przetwarzania danych pod kątem zgodności, poprawek, agregacji lub ogólnego przechwytywania danych zmian (CDC). Zmaterializowane widoki umożliwiają również łatwe w użyciu przekształcenia, czyszcząc, wzbogacając i denormalizując tabele podstawowe. Dzięki wstępnemu obliczaniu kosztownych lub często używanych zapytań, widoki zmaterializowane obniżają opóźnienie zapytań i zużycie zasobów. W wielu przypadkach mogą przyrostowo obliczać zmiany z tabel źródłowych, co zwiększa wydajność i środowisko użytkownika końcowego.
Poniżej przedstawiono typowe przypadki użycia zmaterializowanych widoków:
- Aktualizowanie pulpitu nawigacyjnego analizy biznesowej przy minimalnym opóźnieniu zapytań użytkownika końcowego.
- Zmniejszenie złożonej aranżacji ETL przy użyciu prostej logiki SQL.
- Tworzenie złożonych, warstwowych przekształceń.
- Wszelkie przypadki użycia, które wymagają spójnej wydajności z up-to-date insights.
Podczas tworzenia zmaterializowanego widoku w usłudze Databricks SQL Warehouse tworzony jest potok bezserwerowy do obsługi operacji tworzenia i odświeżania tego widoku. Stan operacji odświeżania można monitorować w Eksploratorze wykazu. Zobacz Wyświetlanie zmaterializowanych szczegółów widoku za pomocą polecenia DESCRIBE EXTENDED
.
Wymagania
Zmaterializowane widoki utworzone w usłudze Databricks SQL są wspierane przez potok bezserwerowy. Wasz obszar roboczy musi obsługiwać potoki bezserwerowe, aby wykorzystać tę funkcję.
Wymagania dotyczące tworzenia lub odświeżania zmaterializowanych widoków:
Musisz użyć magazynu SQL Warehouse w trybie pro lub bezserwerowym z obsługą Unity Catalog.
Aby odświeżyć zmaterializowany widok, musisz znajdować się w utworzonym obszarze roboczym.
Aby przyrostowo odświeżyć zmaterializowany widok z tabel Delta, tabele źródłowe muszą mieć włączone śledzenie wierszy.
Właściciel (użytkownik tworzący zmaterializowany widok) musi mieć następujące uprawnienia:
-
SELECT
uprawnienia dotyczące tabel bazowych, do których odwołuje się zmaterializowany widok. -
USE CATALOG
iUSE SCHEMA
uprawnienia w katalogu i schemacie zawierających tabele źródłowe dla zmaterializowanego widoku. -
USE CATALOG
iUSE SCHEMA
uprawnienia w katalogu docelowym i schemacie dla zmaterializowanego widoku. -
CREATE TABLE
iCREATE MATERIALIZED VIEW
uprawnienia do schematu zawierającego zmaterializowany widok.
-
Aby odświeżyć zmaterializowany widok, musisz mieć
REFRESH
uprawnienia do zmaterializowanego widoku.
- Obszar roboczy musi znajdować się w regionie obsługującym bezserwerowe magazyny SQL.
Wymagania dotyczące zapytań o zmaterializowane widoki:
Musisz być właścicielem zmaterializowanego widoku lub mieć
SELECT
na zmaterializowanym widoku, a takżeUSE SCHEMA
iUSE CATALOG
na jego elementach nadrzędnych.Należy użyć jednego z następujących zasobów obliczeniowych:
SQL Warehouse
Interfejsy lakeflow dla deklaratywnych przepływów danych
Obliczenia w standardowym trybie dostępu (dawniej tryb dostępu współdzielonego)
Tryb dedykowanego dostępu (dawniej tryb dostępu pojedynczego użytkownika) w środowisku Databricks Runtime w wersji 15.4 lub nowszej, o ile obszar roboczy jest włączony na potrzeby przetwarzania bezserwerowego. Zobacz Szczegółową kontrolę dostępu na dedykowanej jednostce obliczeniowej.
Jeśli jesteś właścicielem zmaterializowanego widoku, możesz użyć zasobu obliczeniowego w dedykowanym trybie dostępu, który uruchamia środowisko Databricks Runtime w wersji 14.3 i nowszej.
Aby dowiedzieć się więcej o innych ograniczeniach dotyczących używania zmaterializowanych widoków, zobacz Ograniczenia.
Tworzenie zmaterializowanego widoku
Operacje zmaterializowanego widoku SQL Databricks używają magazynu danych SQL Databricks do tworzenia i ładowania danych w zmaterializowanym widoku. Tworzenie zmaterializowanego widoku jest operacją synchroniczną, co oznacza, że CREATE MATERIALIZED VIEW
polecenie blokuje do momentu utworzenia zmaterializowanego widoku i zakończenia początkowego ładowania danych. Potok bezserwerowy jest automatycznie tworzony dla każdego zmaterializowanego widoku sql usługi Databricks. Gdy zmaterializowany widok zostanie odświeżony, potoki deklaratywne Lakeflow przetwarzają odświeżenie.
Aby utworzyć zmaterializowany widok, użyj instrukcji CREATE MATERIALIZED VIEW
. Aby przesłać instrukcję 'create', użyj edytora SQL w interfejsie użytkownika usługi Azure Databricks, Databricks SQL CLI lub Databricks SQL API.
Użytkownik, który tworzy zmaterializowany widok, jest zmaterializowanym właścicielem widoku.
Poniższy przykład tworzy zmaterializowany widok mv1
z tabeli base_table1
podstawowej :
-- This query defines the materialized view:
CREATE OR REPLACE MATERIALIZED VIEW mv1
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Po utworzeniu zmaterializowanego widoku przy użyciu instrukcji CREATE OR REPLACE MATERIALIZED VIEW
początkowe odświeżanie danych i populacja zaczynają się natychmiast. Nie korzysta to z zasobów obliczeniowych usługi SQL Warehouse. Zamiast tego bezserwerowe deklaratywne potoki Lakeflow są używane do tworzenia i kolejnych odświeżeń.
Komentarze kolumn w tabeli podstawowej są automatycznie propagowane tylko podczas tworzenia nowego zmaterializowanego widoku. Aby dodać harmonogram, ograniczenia tabeli lub inne właściwości, zmodyfikuj zmaterializowaną definicję widoku (zapytanie SQL).
Ta sama instrukcja SQL odświeży zmaterializowany widok, jeśli zostanie wywołany w późniejszym czasie lub zgodnie z harmonogramem. Odświeżanie wykonywane w ten sposób działa jak każde inne odświeżanie. Aby uzyskać szczegółowe informacje, zobacz Odświeżanie zmaterializowanego widoku.
Aby dowiedzieć się więcej na temat konfigurowania zmaterializowanego widoku, zobacz Konfigurowanie zmaterializowanych widoków w usłudze Databricks SQL. Aby dowiedzieć się więcej o pełnej składni tworzenia zmaterializowanego widoku, zobacz CREATE MATERIALIZED VIEW. Aby dowiedzieć się więcej na temat ładowania danych w różnych formatach i z różnych miejsc, zobacz Ładowanie danych za pomocą potoków deklaratywnych usługi Lakeflow.
Załaduj dane z systemów zewnętrznych
Usługa Databricks zaleca ładowanie danych zewnętrznych przy użyciu Lakehouse Federation do obsługiwanych źródeł danych. Aby uzyskać informacje na temat ładowania danych ze źródeł nieobsługiwanych przez federację usługi Lakehouse, zobacz Opcje formatów danych. Aby uzyskać ogólne informacje na temat ładowania danych, w tym przykłady, zobacz Ładowanie danych za pomocą potoków deklaratywnych Lakeflow.
Ukrywanie poufnych danych
Ważne
Ta funkcja jest dostępna w publicznej wersji testowej.
Możesz użyć zmaterializowanych widoków, aby ukryć poufne dane przed użytkownikami, którzy uzyskują dostęp do tabeli. Jednym ze sposobów wykonania tej czynności jest utworzenie zapytania, aby nie uwzględniało tych danych w pierwszej kolejności. Można jednak również maskować kolumny lub filtrować wiersze na podstawie uprawnień użytkownika kwerendy. Można na przykład ukryć kolumnę tax_id
dla użytkowników, którzy nie znajdują się w grupie HumanResourcesDept
. Aby to zrobić, użyj składni ROW FILTER
i MASK
podczas tworzenia zmaterializowanego widoku. Aby uzyskać więcej informacji, zobacz Filtry wierszy i maski kolumn.
Odśwież zmaterializowany widok
Odświeżenie zmaterializowanego widoku aktualizuje widok, aby odzwierciedlać najnowsze zmiany w tabeli podstawowej w momencie odświeżania.
Podczas definiowania zmaterializowanego widoku instrukcja CREATE OR REPLACE MATERIALIZED VIEW
jest używana zarówno do tworzenia widoku, jak i do odświeżania go dla wszystkich zaplanowanych odświeżeń. Możesz również użyć instrukcji REFRESH MATERIALIZED VIEW
, aby odświeżyć zmaterializowany widok bez konieczności ponownego podawania zapytania. Aby uzyskać szczegółowe informacje na temat składni i parametrów języka SQL dla tego polecenia, zobacz REFRESH (MATERIALIZED VIEW lub STREAMING TABLE ). Aby dowiedzieć się więcej o typach zmaterializowanych widoków, które mogą być odświeżane przyrostowo, zobacz Odświeżanie przyrostowe dla zmaterializowanych widoków.
Aby przesłać instrukcję odświeżania, użyj edytora SQL w interfejsie użytkownika Azure Databricks, notesu dołączonego do usługi SQL Warehouse, Databricks SQL CLI lub Databricks SQL API.
Właściciel i każdy użytkownik, któremu udzielono REFRESH
uprawnień do tabeli, może odświeżyć zmaterializowany widok.
Przykład poniżej odświeża zmaterializowany widok mv1
.
REFRESH MATERIALIZED VIEW mv1;
Operacja jest domyślnie synchroniczna, co oznacza, że polecenie blokuje działanie do czasu ukończenia operacji odświeżania. Aby odświeżyć asynchronicznie, możesz dodać ASYNC
słowo kluczowe:
REFRESH MATERIALIZED VIEW mv1 ASYNC;
W jaki sposób są odświeżane widoki zmaterializowane w usłudze Databricks?
Zmaterializowane widoki automatycznie tworzą i używają bezserwerowych deklaratywnych pipeline'ów Lakeflow do przetwarzania operacji odświeżania. Odświeżanie jest zarządzane przez potok, a aktualizacja jest monitorowana przez magazyn SQL Databricks używany do tworzenia widoku materializowanego. Zmaterializowane widoki można aktualizować przy użyciu potoku uruchamianego zgodnie z harmonogramem. Usługa Databricks SQL utworzyła zmaterializowane widoki zawsze uruchamiane w trybie wyzwalanym. Zobacz Tryb wyzwalany vs. ciągły tryb potokowy.
Zmaterializowane widoki są odświeżane przy użyciu jednej z dwóch metod.
- Odświeżanie przyrostowe — system ocenia zapytanie widoku w celu zidentyfikowania zmian, które wystąpiły po ostatniej aktualizacji i scala tylko nowe lub zmodyfikowane dane.
- Pełne odświeżanie — jeśli nie można wykonać odświeżania przyrostowego, system uruchamia całe zapytanie i zastępuje istniejące dane w zmaterializowanym widoku nowymi wynikami.
Struktura zapytania i typ danych źródłowych określają, czy odświeżanie przyrostowe jest obsługiwane. Aby obsługiwać odświeżanie przyrostowe, dane źródłowe powinny być przechowywane w tabelach Delta, z włączonym śledzeniem wierszy i kanałem danych o zmianach. Po utworzeniu zmaterializowanego widoku można monitorować jego zachowanie odświeżania, aby sprawdzić, czy jest aktualizowany przyrostowo, czy za pomocą pełnego odświeżania.
Aby uzyskać szczegółowe informacje na temat typów odświeżania i sposobu optymalizacji pod kątem odświeżania przyrostowego, zobacz Odświeżanie przyrostowe dla zmaterializowanych widoków.
Odświeżanie asynchroniczne
Domyślnie operacje odświeżania są wykonywane synchronicznie. Można również ustawić operację odświeżania, która ma być wykonywana asynchronicznie. Można to ustawić za pomocą polecenia refresh ze ASYNC
słowem kluczowym. Zobacz REFRESH (MATERIALIZED VIEW lub STREAMING TABLE) Zachowanie skojarzone z każdym podejściem jest następujące:
- Synchroniczne: synchroniczne odświeżanie uniemożliwia kontynuowanie innych operacji do momentu ukończenia odświeżania. Jeśli wynik jest potrzebny do następnego kroku, na przykład przy sekwencjonowaniu operacji odświeżania w narzędziach orkiestracji, takich jak Zadania Lakeflow, użyj synchronicznego odświeżania. Aby zorganizować zmaterializowane widoki za pomocą zadania, użyj typu zadania SQL . Zobacz Zadania lakeflow.
- Asynchroniczne: Asynchroniczne odświeżanie uruchamia zadanie w tle w ramach Lakeflow Deklaratywne Potoki Obliczeniowe, gdy rozpoczyna się odświeżanie zmaterializowanego widoku, co pozwala na zwrócenie polecenia przed zakończeniem ładowania danych. Ten typ odświeżania może zaoszczędzić na kosztach, ponieważ operacja nie musi przechowywać pojemności obliczeniowej w magazynie, w którym inicjowane jest polecenie. Jeśli odświeżanie stanie się bezczynne i nie są uruchomione żadne inne zadania, magazyn może zostać zamknięty, podczas gdy odświeżanie używa innych dostępnych zasobów obliczeniowych. Ponadto operacje odświeżania asynchronicznego obsługują równoległe uruchamianie wielu operacji.
Zaplanowanie odświeżania widoków zmaterializowanych
Możesz skonfigurować zmaterializowany widok SQL usługi Databricks w celu automatycznego odświeżania na podstawie zdefiniowanego harmonogramu. Aby ustawić harmonogram, wykonaj jedną z następujących czynności:
- Konfigurowanie harmonogramu przy użyciu klauzuli
SCHEDULE
podczas tworzenia zmaterializowanego widoku - Dodaj harmonogram z instrukcją ALTER MATERIALIZED VIEW.
Uwaga / Notatka
Alternatywnie możesz utworzyć zadanie w pracy zawierającej instrukcję CREATE OR REPLACE MATERIALIZED VIEW
lub REFRESH
i zorganizować je tak, jak w przypadku innych zadań. Zobacz Zadania lakeflow.
Poniższy przykład tworzy zmaterializowany widok mv1
z tabeli base_table1
podstawowej i harmonogram odświeżania zmaterializowanego widoku raz na godzinę:
CREATE OR REPLACE MATERIALIZED VIEW mv1
SCHEDULE EVERY 1 hour
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Aby ustawić lub zmienić harmonogram po utworzeniu, użyj instrukcji ALTER MATERIALIZED VIEW
:
ALTER MATERIALIZED VIEW sales ALTER SCHEDULE EVERY 1 day;
Po utworzeniu harmonogramu nowe zadanie usługi Databricks jest automatycznie skonfigurowane do przetwarzania aktualizacji.
Aby wyświetlić harmonogram, wykonaj jedną z następujących czynności:
- Uruchom instrukcję
DESCRIBE EXTENDED
z edytora SQL w interfejsie użytkownika usługi Azure Databricks. Zobacz: DESCRIBE TABLE. - Użyj Eksploratora wykazu, aby wyświetlić zmaterializowany widok. Harmonogram jest wyświetlany na karcie Przegląd pod Stan odświeżania. Zobacz Co to jest Eksplorator wykazu?.
Jeśli istnieje harmonogram odświeżania, nadal masz możliwość ręcznego odświeżania w dowolnym momencie, jeśli potrzebujesz zaktualizowanych danych.
Zatrzymaj aktywne odświeżanie
Aby zatrzymać aktywne odświeżanie w interfejsie użytkownika Potoków Deklaratywnych Lakeflow, na stronie Szczegóły potoku kliknij Zatrzymaj, aby wstrzymać aktualizację potoku. Odświeżanie można również zatrzymać za pomocą Databricks CLI lub operacji POST /api/2.0/pipelines/{pipeline_id}/stop w interfejsie API Pipelines.
trwale usuń rekordy z zmaterializowanego widoku z włączonymi wektorami usuwania
Ważne
Obsługa dla instrukcji REORG
z widokami zmaterializowanymi jest dostępna w publicznej wersji zapoznawczej.
Uwaga / Notatka
- Użycie instrukcji
REORG
z zmaterializowanym widokiem wymaga oprogramowania Databricks Runtime w wersji 15.4 lub nowszej. - Chociaż można użyć instrukcji
REORG
z dowolnym zmaterializowanym widokiem, jest to wymagane tylko podczas usuwania rekordów z zmaterializowanego widoku z włączonymi wektorami usuwania . Polecenie nie ma efektu, gdy jest używane ze zmaterializowanym widokiem bez włączonych wektorów usuwania.
Aby fizycznie usunąć rekordy z magazynu bazowego dla zmaterializowanego widoku z włączonymi wektorami usuwania, na przykład w celu zapewnienia zgodności z RODO, należy wykonać dodatkowe kroki, aby zapewnić uruchomienie operacji VACUUM na danych zmaterializowanego widoku.
Aby fizycznie usunąć rekordy:
- Uruchom instrukcję
REORG
względem zmaterializowanego widoku, określając parametrAPPLY (PURGE)
. Na przykład:REORG TABLE <materialized-view-name> APPLY (PURGE);
. Zobacz: REORG TABLE. - Poczekaj, aż minie okres przechowywania danych dla zmaterializowanego widoku. Domyślny okres przechowywania danych wynosi siedem dni, ale można go skonfigurować za pomocą właściwości tabeli
delta.deletedFileRetentionDuration
. Zobacz Konfigurowanie przechowywania danych dla zapytań dotyczących podróży w czasie. -
REFRESH
widok materializowany. Zobacz Odświeżanie zmaterializowanego widoku. W ciągu 24 godzin odREFRESH
operacji zadania konserwacji potoków deklaratywnych Lakeflow, w tym operacji wymaganejVACUUM
do zapewnienia trwałego usunięcia rekordów, są uruchamiane automatycznie.
Usuń zmaterializowany widok
Uwaga / Notatka
Aby przesłać polecenie w celu usunięcia zmaterializowanego widoku, musisz być właścicielem tego zmaterializowanego widoku lub mieć uprawnienia MANAGE
w zmaterializowanym widoku.
Aby usunąć zmaterializowany widok, użyj instrukcji DROP VIEW. Aby przesłać instrukcję DROP
, możesz użyć edytora SQL w interfejsie użytkownika usługi Azure Databricks, interfejsie wiersza polecenia SQL usługi Databricks lub interfejsie API SQL usługi Databricks. Poniższy przykład usuwa widok zmaterializowany mv1
.
DROP MATERIALIZED VIEW mv1;
Możesz także skorzystać z Eksploratora Katalogu, aby usunąć zmaterializowany widok.
- Kliknij
Wykaz na pasku bocznym.
- W drzewie po lewej stronie w Eksploratorze Katalogów otwórz katalog i wybierz schemat, w którym znajduje się zmaterializowany widok.
- Otwórz element Tables w wybranym schemacie i kliknij na zmaterializowany widok.
- Na ikonie menu kebab
wybierz Usuń.
Omówienie kosztów zmaterializowanego widoku
Ponieważ zmaterializowany widok jest uruchamiany w obliczeniach bezserwerowych, poza obliczeniami skonfigurowanymi dla notesu lub zadania, możesz się zastanawiać, jak zrozumieć związane z nim koszty. Wykorzystanie zmaterializowanego widoku jest śledzone poprzez zużycie jednostek DBU. Aby dowiedzieć się więcej, zobacz Jaka jest konsumpcja DBU w zmaterializowanym widoku lub tabeli przesyłania strumieniowego?
Włączanie śledzenia wierszy
Aby obsługiwać odświeżanie przyrostowe z tabel delty, śledzenie wierszy musi być włączone dla tych tabel źródłowych. Jeśli ponownie utworzysz tabelę źródłową, musisz ponownie włączyć śledzenie wierszy.
W poniższym przykładzie pokazano, jak włączyć śledzenie wierszy w tabeli:
ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);
Aby uzyskać więcej informacji, zobacz Używanie śledzenia wierszy dla tabel Delta
Ograniczenia
- Aby uzyskać informacje o wymaganiach dotyczących zasobów obliczeniowych i obszarów roboczych, zobacz Wymagania.
- Aby uzyskać informacje o wymaganiach dotyczących odświeżania przyrostowego, zobacz Odświeżanie przyrostowe dla zmaterializowanych widoków.
- Zmaterializowane widoki nie obsługują kolumn tożsamości ani kluczy zastępczych.
- Jeśli zmaterializowany widok używa agregacji sumy w kolumnie
NULL
-owalnej i tylko wartościNULL
pozostają w tej kolumnie, to wynikowa wartość agregacji w zmaterializowanym widoku wynosi zero zamiastNULL
. - Nie można odczytać strumienia danych zmian z zmaterializowanego widoku.
- Zapytania dotyczące podróży w czasie nie są obsługiwane w zmaterializowanych widokach.
- Pliki bazowe obsługujące zmaterializowane widoki mogą zawierać dane z tabel nadrzędnych (w tym możliwe dane osobowe), które nie są wyświetlane w zmaterializowanej definicji widoku. Dane te są automatycznie dodawane do bazowej pamięci masowej w celu obsługi przyrostowego odświeżania zmaterializowanych widoków. Ponieważ podstawowe pliki zmaterializowanego widoku mogą spowodować ujawnienie danych z tabel nadrzędnych, które nie są częścią zmaterializowanego schematu widoku, usługa Databricks zaleca, aby nie udostępniać bazowego magazynu niezaufanym użytkownikom podrzędnym. Załóżmy na przykład, że definicja zmaterializowanego widoku zawiera klauzulę
COUNT(DISTINCT field_a)
. Mimo że zmaterializowana definicja widoku zawiera tylko klauzulę agregacjiCOUNT DISTINCT
, pliki bazowe będą zawierać listę rzeczywistych wartościfield_a
. - Niektóre opłaty za zasoby obliczeniowe bezserwerowe mogą być naliczane nawet w przypadku korzystania z tych funkcji w dedykowanych obliczeniach.
- Jeśli potrzebujesz użyć połączenia Azure Private Link ze zmaterializowanym widokiem, skontaktuj się z przedstawicielem Databricks.