Używanie zmaterializowanych widoków w usłudze Databricks SQL
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
W tym artykule opisano sposób tworzenia i używania 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 zmaterializowane widoki to tabele zarządzane przez wykaz aparatu Unity, które pozwalają użytkownikom wstępnie skompilować wyniki na podstawie najnowszej wersji danych w tabelach źródłowych. Zmaterializowane widoki w usłudze Azure Databricks różnią się od innych implementacji, ponieważ zwrócone wyniki odzwierciedlają stan danych, gdy zmaterializowany widok został ostatnio odświeżony, a nie zawsze aktualizując wyniki podczas wykonywania zapytań dotyczących zmaterializowanego widoku. Możesz ręcznie odświeżyć zmaterializowane widoki lub zaplanować odświeżanie.
Zmaterializowane widoki są zaawansowane w przypadku 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 zmniejszają koszty i zwiększają opóźnienie zapytań przez wstępne przetwarzanie wolnych zapytań i często używanych obliczeń. Zmaterializowane widoki umożliwiają również łatwe w użyciu przekształcenia, czyszcząc, wzbogacając i denormalizując tabele podstawowe. Zmaterializowane widoki mogą obniżyć koszty, zapewniając uproszczone środowisko użytkownika końcowego, ponieważ w niektórych przypadkach mogą przyrostowo obliczać zmiany z tabel bazowych.
Zmaterializowane widoki były po raz pierwszy obsługiwane na platformie analizy danych usługi Databricks z uruchomieniem funkcji Delta Live Tables. Podczas tworzenia zmaterializowanego widoku w usłudze Databricks SQL Warehouse tworzony jest potok delta live tables w celu przetworzenia odświeżeń do zmaterializowanego widoku. Stan operacji odświeżania można monitorować w interfejsie użytkownika tabel na żywo delty, interfejsie API tabel delta live lub interfejsie wiersza polecenia delta live tables. Zobacz Wyświetlanie stanu zmaterializowanego odświeżania widoku.
Wymagania
Aby utworzyć i odświeżyć zmaterializowane widoki, należy użyć usługi Databricks SQL Warehouse z obsługą wykazu aparatu Unity.
Obszar roboczy musi znajdować się w regionie bezserwerowym.
Aby dowiedzieć się więcej o ograniczeniach podczas korzystania z materializowanych widoków w usłudze Databricks SQL, zobacz Ograniczenia.
Tworzenie zmaterializowanego widoku
Aby utworzyć zmaterializowany widok, użyj instrukcji CREATE MATERIALIZED VIEW
. Zobacz CREATE MATERIALIZED VIEW (TWORZENIE ZMATERIALIZOWANEGO WIDOKU ) w dokumentacji sql usługi Databricks. Aby przesłać instrukcję create, użyj edytora SQL w interfejsie użytkownika usługi Azure Databricks, interfejsie wiersza polecenia SQL usługi Databricks lub interfejsie API SQL usługi Databricks.
Uwaga
Użytkownik, który tworzy zmaterializowany widok, jest zmaterializowanym właścicielem widoku i musi mieć następujące uprawnienia:
SELECT
uprawnienia do tabel bazowych, do których odwołuje się zmaterializowany widok.USE CATALOG
iUSE SCHEMA
uprawnienia w wykazie i schemacie zawierającym tabele źródłowe dla zmaterializowanego widoku.USE CATALOG
iUSE SCHEMA
uprawnienia w wykazie docelowym i schemacie dla zmaterializowanego widoku.CREATE TABLE
iCREATE MATERIALIZED VIEW
uprawnienia schematu zawierającego zmaterializowany widok.
Poniższy przykład tworzy zmaterializowany widok mv1
z tabeli base_table1
podstawowej :
CREATE MATERIALIZED VIEW mv1
AS SELECT
date, sum(sales) AS sum_of_sales
FROM
table1
GROUP BY
date;
Jak są tworzone zmaterializowane widoki?
Operacje zmaterializowanego widoku CREATE
sql usługi Databricks używają usługi Databricks SQL Warehouse do tworzenia i ładowania danych w zmaterializowanym widoku. Ponieważ tworzenie zmaterializowanego widoku jest operacją synchroniczną w usłudze Databricks SQL Warehouse, CREATE MATERIALIZED VIEW
polecenia są blokowane do momentu utworzenia zmaterializowanego widoku i zakończenia początkowego ładowania danych. Potok delta live tables jest tworzony automatycznie dla każdego widoku zmaterializowanego sql usługi Databricks. Po odświeżeniu zmaterializowanego widoku zostanie uruchomiona aktualizacja potoku Delta Live Tables.
Załaduj dane z systemów zewnętrznych
Usługa Databricks zaleca ładowanie danych zewnętrznych przy użyciu federacji lakehouse dla obsługiwanych źródeł danych. Aby uzyskać informacje na temat ładowania danych ze źródeł nieobsługiwanych przez federację usługi Lakehouse, zobacz Opcje formatu danych.
Odświeżanie zmaterializowanego widoku
Operacja REFRESH
odświeża zmaterializowany widok, aby odzwierciedlić najnowsze zmiany w tabeli podstawowej. Aby odświeżyć zmaterializowany widok, użyj instrukcji REFRESH MATERIALIZED VIEW
. Zobacz ODŚWIEŻANIE (ZMATERIALIZOWANY WIDOK i TABELA PRZESYŁANIA STRUMIENIOWEGO) w dokumentacji SQL usługi Databricks. Aby przesłać instrukcję odświeżania, użyj edytora SQL w interfejsie użytkownika usługi Azure Databricks, interfejsie wiersza polecenia SQL usługi Databricks lub interfejsie API SQL usługi Databricks.
Tylko właściciel może REFRESH
zmaterializować widok.
Poniższy przykład odświeża mv1
zmaterializowany widok:
REFRESH MATERIALIZED VIEW mv1;
W jaki sposób są odświeżane widoki zmaterializowane w usłudze Databricks?
Zmaterializowane widoki SQL usługi Databricks używają tabel delta live na potrzeby operacji odświeżania. Po odświeżeniu zmaterializowanego widoku rozpocznie się aktualizacja potoku Delta Live Tables zarządzającego zmaterializowanym widokiem.
Ponieważ odświeżanie jest zarządzane przez potok delta Live Tables, usługa Databricks SQL Warehouse używana do tworzenia zmaterializowanego widoku nie jest używana i nie musi być uruchomiona podczas operacji odświeżania.
Niektóre zapytania można odświeżać przyrostowo. Zobacz Operacje odświeżania dla zmaterializowanych widoków. Jeśli nie można wykonać odświeżania przyrostowego, zamiast tego jest wykonywane pełne odświeżanie.
Planowanie zmaterializowanych odświeżeń widoku
Możesz skonfigurować zmaterializowany widok SQL usługi Databricks w celu automatycznego odświeżania na podstawie zdefiniowanego harmonogramu. Skonfiguruj ten harmonogram przy użyciu klauzuli SCHEDULE
podczas tworzenia zmaterializowanego widoku lub dodawania harmonogramu za pomocą instrukcji ALTER VIEW . Po utworzeniu harmonogramu nowe zadanie usługi Databricks jest automatycznie skonfigurowane do przetwarzania aktualizacji. Harmonogram można wyświetlić za pomocą instrukcji DESCRIBE EXTENDED
.
Aktualizowanie definicji zmaterializowanego widoku
Aby zaktualizować definicję zmaterializowanego widoku, należy najpierw usunąć, a następnie ponownie utworzyć zmaterializowany widok.
Usuwanie zmaterializowanego widoku
Uwaga
Aby przesłać polecenie w celu usunięcia zmaterializowanego widoku, musisz być właścicielem tego zmaterializowanego 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 pominie mv1
zmaterializowany widok:
DROP MATERIALIZED VIEW mv1;
Opisywanie zmaterializowanego widoku
Aby pobrać kolumny i typy danych dla zmaterializowanego widoku, użyj instrukcji DESCRIBE
. Aby pobrać kolumny, typy danych i metadane, takie jak właściciel, lokalizacja, czas tworzenia i stan odświeżania dla zmaterializowanego widoku, użyj polecenia DESCRIBE EXTENDED
. Aby przesłać instrukcjęDESCRIBE
, użyj edytora SQL w interfejsie użytkownika usługi Azure Databricks, interfejsie wiersza polecenia SQL usługi Databricks lub interfejsie API SQL usługi Databricks.
Wyświetlanie stanu zmaterializowanego odświeżania widoku
Uwaga
Ponieważ potok delta Live Tables zarządza zmaterializowanymi odświeżeniami widoku, występuje opóźnienie spowodowane czasem uruchamiania potoku. Ten czas może znajdować się w sekundach do minut oprócz czasu wymaganego do przeprowadzenia odświeżania.
Stan zmaterializowanego odświeżania widoku można wyświetlić, wyświetlając potok, który zarządza zmaterializowanym widokiem w interfejsie użytkownika tabel delta Live Tables lub wyświetlając informacje odświeżania zwrócone przez DESCRIBE EXTENDED
polecenie dla zmaterializowanego widoku.
Historię odświeżania zmaterializowanego widoku można również wyświetlić, wysyłając zapytanie do dziennika zdarzeń tabel delta Live Tables. Zobacz Wyświetlanie historii odświeżania dla zmaterializowanego widoku.
Wyświetlanie stanu odświeżania w interfejsie użytkownika tabel na żywo usługi Delta
Domyślnie potok Delta Live Tables, który zarządza zmaterializowanym widokiem, nie jest widoczny w interfejsie użytkownika delta Live Tables. Aby wyświetlić potok w interfejsie użytkownika tabel delta Live Tables, musisz uzyskać bezpośredni dostęp do linku do strony szczegółów potoku potoku. Aby uzyskać dostęp do linku:
- Jeśli prześlesz
REFRESH
polecenie w edytorze SQL, postępuj zgodnie z linkiem w panelu Wyniki. - Postępuj zgodnie z linkiem zwróconym przez instrukcję
DESCRIBE EXTENDED
. - Na karcie Pochodzenie dla zmaterializowanego widoku kliknij pozycję Potoki, a następnie kliknij link potoku.
Zatrzymywanie aktywnego odświeżania
Aby zatrzymać aktywne odświeżanie w interfejsie użytkownika tabel na żywo delty, na stronie Szczegóły potoku kliknij przycisk Zatrzymaj , aby zatrzymać aktualizację potoku. Odświeżanie można również zatrzymać za pomocą interfejsu wiersza polecenia usługi Databricks lub post /api/2.0/pipelines/{pipeline_id}/stop w interfejsie API potoków.
Zmienianie właściciela zmaterializowanego widoku
Jeśli jesteś administratorem magazynu metadanych i administratorem obszaru roboczego, możesz zmienić właściciela zmaterializowanego widoku. Zmaterializowane widoki automatycznie tworzą potoki delta Live Tables i używają ich do przetwarzania zmian. Aby zmienić zmaterializowanego właściciela widoków, wykonaj następujące czynności:
- Kliknij pozycję Przepływy pracy, a następnie kliknij kartę Delta Live Tables (Tabele na żywo delty).
- Kliknij nazwę potoku, którego właściciel chcesz zmienić.
- Kliknij menu kebab po prawej stronie nazwy potoku, a następnie kliknij pozycję Uprawnienia. Spowoduje to otwarcie okna dialogowego uprawnień.
- Kliknij przycisk x po prawej stronie nazwy bieżącego właściciela, aby usunąć bieżącego właściciela.
- Zacznij wpisywać, aby filtrować listę dostępnych użytkowników. Kliknij użytkownika, który powinien być nowym właścicielem potoku.
- Kliknij przycisk Zapisz , aby zapisać zmiany i zamknąć okno dialogowe.
Wszystkie zasoby potoku, w tym zmaterializowane widoki zdefiniowane w potoku, są własnością nowego właściciela potoku. Wszystkie przyszłe aktualizacje są uruchamiane przy użyciu tożsamości nowego właściciela.
Kontrola dostępu do zmaterializowanych widoków
Zmaterializowane widoki obsługują zaawansowane mechanizmy kontroli dostępu do obsługi udostępniania danych, jednocześnie unikając uwidaczniania potencjalnie prywatnych danych. Zmaterializowany właściciel widoku może udzielić SELECT
uprawnień innym użytkownikom. Użytkownicy z dostępem SELECT
do zmaterializowanego widoku nie potrzebują SELECT
dostępu do tabel, do których odwołuje się zmaterializowany widok. Ta kontrola dostępu umożliwia udostępnianie danych podczas kontrolowania dostępu do danych bazowych.
Udzielanie uprawnień do zmaterializowanego widoku
Aby udzielić dostępu do zmaterializowanego widoku, użyj instrukcji GRANT
:
GRANT
privilege_type [, privilege_type ] ...
ON <mv_name> TO principal;
Privilege_type może być:
SELECT
— użytkownik możeSELECT
zmaterializować widok.REFRESH
— użytkownik możeREFRESH
zmaterializować widok. Operacje odświeżania są uruchamiane przy użyciu uprawnień właściciela.
Poniższy przykład tworzy zmaterializowany widok i przyznaje użytkownikowi uprawnienia wyboru i odświeżania:
CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;
Odwoływanie uprawnień z zmaterializowanego widoku
Aby odwołać dostęp z zmaterializowanego widoku, użyj instrukcji REVOKE
:
REVOKE
privilege_type [, privilege_type ]
ON <name> FROM principal;
Gdy SELECT
uprawnienia w tabeli bazowej zostaną odwołane od zmaterializowanego właściciela widoku lub dowolnego innego użytkownika, któremu udzielono SELECT
uprawnień do zmaterializowanego widoku, albo tabela podstawowa zostanie porzucona, zmaterializowany właściciel widoku lub użytkownik, któremu udzielono dostępu, nadal może wykonać zapytanie dotyczące zmaterializowanego widoku. Jednak występuje następujące zachowanie:
- Zmaterializowany właściciel widoku lub inni, którzy stracili dostęp do zmaterializowanego widoku, nie może już
REFRESH
tak zmaterializować widoku, a zmaterializowany widok stanie się nieaktualny. - W przypadku automatycznego z harmonogramem kolejna zaplanowana
REFRESH
awaria lub nie zostanie uruchomiona.
Poniższy przykład odwołuje SELECT
uprawnienie z elementu mv1
:
REVOKE SELECT ON mv1 FROM user1;
Włączanie zestawienia danych zmian
Zestawienie danych zmian jest wymagane w tabelach podstawowych zmaterializowanych widoków, z wyjątkiem niektórych zaawansowanych przypadków użycia. Aby włączyć zestawienie danych zmian w tabeli podstawowej, ustaw delta.enableChangeDataFeed
właściwość tabeli przy użyciu następującej składni:
ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Wyświetlanie historii odświeżania dla zmaterializowanego widoku
Aby wyświetlić stan REFRESH
operacji w zmaterializowanym widoku, w tym bieżących i przeszłych odświeżeń, wykonaj zapytanie w dzienniku zdarzeń usługi Delta Live Tables:
SELECT
*
FROM
event_log(TABLE(<fully-qualified-table-name>))
WHERE
event_type = "update_progress"
ORDER BY
timestamp desc;
Zastąp <fully-qualified-table-name>
w pełni kwalifikowaną nazwą zmaterializowanego widoku, w tym wykazem i schematem.
Zobacz Co to jest dziennik zdarzeń tabel delta live?.
Określanie, czy jest używane odświeżanie przyrostowe lub pełne
Aby zoptymalizować wydajność zmaterializowanych odświeżeń widoku, usługa Azure Databricks używa modelu kosztów do wybierania techniki używanej do odświeżania. W poniższej tabeli opisano następujące techniki:
Technika | Odświeżanie przyrostowe? | opis |
---|---|---|
FULL_RECOMPUTE |
Nie. | Zmaterializowany widok został w pełni ponownie skompilowany |
NO_OP |
Nie dotyczy | Zmaterializowany widok nie został zaktualizowany, ponieważ nie wykryto żadnych zmian w tabeli podstawowej. |
ROW_BASED lub PARTITION_OVERWRITE |
Tak | Zmaterializowany widok został odświeżony przyrostowo przy użyciu określonej techniki. |
Aby określić użytą technikę, wykonaj zapytanie w dzienniku zdarzeń delta Live Tables, w którym znajduje się planning_information
parametr event_type
:
SELECT
timestamp,
message
FROM
event_log(TABLE(<fully-qualified-table-name>))
WHERE
event_type = 'planning_information'
ORDER BY
timestamp desc;
Zastąp <fully-qualified-table-name>
w pełni kwalifikowaną nazwą zmaterializowanego widoku, w tym wykazem i schematem.
Zobacz Co to jest dziennik zdarzeń tabel delta live?.
Ograniczenia
Istnieją ograniczenia dotyczące sposobu zarządzania telewizorami i miejscami, w których można wykonywać zapytania:
- Zmaterializowane widoki SQL usługi Databricks można tworzyć i odświeżać tylko w magazynach Pro SQL Warehouse i bezserwerowych magazynach SQL.
- Zmaterializowany widok SQL usługi Databricks można odświeżyć tylko z poziomu utworzonego obszaru roboczego.
- Zmaterializowane widoki SQL usługi Databricks mogą być odpytywane tylko z magazynów SQL usługi Databricks, tabel delta live i udostępnionych klastrów z uruchomionym środowiskiem Databricks Runtime 11.3 lub nowszym. Nie można wykonywać zapytań dotyczących zmaterializowanych widoków z klastrów trybu dostępu pojedynczego użytkownika.
Zmaterializowane widoki nie obsługują kolumn tożsamości ani kluczy zastępczych.
Jeśli zmaterializowany widok używa agregacji sumy w
NULL
kolumnie -able i tylkoNULL
wartości pozostają w tej kolumnie, zmaterializowane widoki wynikowa wartość agregacji wynosi zero zamiastNULL
.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. Te dane są automatycznie dodawane do bazowego magazynu 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ę rzeczywistychfield_a
wartości .Zmaterializowane widoki SQL usługi Databricks nie są obsługiwane w regionach Południowo-środkowe stany USA i Zachodnie stany USA 2.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla