Sdílet prostřednictvím


Použití materializovaných zobrazení v Databricks SQL

Tento článek popisuje, jak vytvářet a používat materializovaná zobrazení v Databricks SQL ke zlepšení výkonu a snížení nákladů na úlohy zpracování a analýzy dat.

Poznámka:

Pokud chcete použít připojení Azure Private Link s materializovaným zobrazením, obraťte se na obchodního zástupce Databricks.

Důležité

Materializovaná zobrazení vytvořená v Databricks SQL jsou podporována bezserverovým kanálem DLT. Aby se tato funkce používala, musí váš pracovní prostor podporovat bezserverové kanály.

Co jsou materializovaná zobrazení?

V Databricks SQL jsou materializovaná zobrazení spravovanými tabulkami Katalogu Unity, které uživatelům umožňují předkompilace výsledků na základě nejnovější verze dat ve zdrojových tabulkách. Materializovaná zobrazení v Azure Databricks se liší od jiných implementací, protože vrácené výsledky odrážejí stav dat, když se materializované zobrazení naposledy aktualizovalo, než aby vždy aktualizovaly výsledky při dotazování materializovaného zobrazení. Můžete ručně aktualizovat materializovaná zobrazení nebo naplánovat aktualizace.

Materializovaná zobrazení jsou výkonná pro úlohy zpracování dat, jako je extrakce, transformace a načítání (ETL). Materializovaná zobrazení poskytují jednoduchý, deklarativní způsob zpracování dat pro dodržování předpisů, opravy, agregace nebo obecné zachytávání dat změn (CDC). Materializovaná zobrazení snižují náklady a zlepšují latenci dotazů předběžným výpočtem pomalých dotazů a často používaných výpočtů. Materializovaná zobrazení také umožňují snadno použitelné transformace čištěním, rozšiřováním a denormalizací základních tabulek. Materializovaná zobrazení můžou snížit náklady a zároveň poskytnout zjednodušené prostředí pro koncové uživatele, protože v některých případech můžou přírůstkově vypočítat změny ze základních tabulek.

Materializovaná zobrazení byla poprvé podporována v Azure Databricks se spuštěním DLT. Když vytvoříte materializované zobrazení ve službě Databricks SQL Warehouse, vytvoří se bezserverový kanál pro zpracování aktualizací materializovaného zobrazení. Stav operací aktualizace můžete sledovat v uživatelském rozhraní DLT nebo v rozhraní API . Vizte zobrazení stavu obnovení materializovaného pohledu.

Požadavky

Vytvoření nebo aktualizace materializovaných zobrazení:

  • Musíte použít pro nebo bezserverový SQL Warehouse s podporou katalogu Unity.
  • Pokud chcete aktualizovat materializované zobrazení, musíte být v pracovním prostoru, který ho vytvořil.
  • Váš pracovní prostor musí být v oblasti, která podporuje bezserverové služby SQL Warehouse.

Jak provést dotaz na materializovaná zobrazení:

  • Musíte být vlastníkem materializovaného zobrazení, nebo mít SELECT na materializovaném zobrazení, spolu s USE SCHEMA a USE CATALOG na jeho nadřazených prvcích.
  • Musíte použít jeden z následujících výpočetních prostředků:

Další informace o dalších omezeních používání materializovaných zobrazení najdete v tématu Omezení.

Vytvoření materializovaného zobrazení

Operace materializovaného zobrazení CREATE Databricks SQL používají službu Databricks SQL Warehouse k vytvoření a načtení dat v materializovaném zobrazení. Vytvoření materializovaného zobrazení je synchronní operace, což znamená, že CREATE MATERIALIZED VIEW příkaz blokuje, dokud se materializované zobrazení nevytvořilo a počáteční načtení dat se dokončí. Pro každé materializované zobrazení Databricks SQL se automaticky vytvoří bezserverový kanál DLT. Když je materializované zobrazení obnoveno, datový tok DLT zpracuje aktualizaci.

K vytvoření materializovaného zobrazení použijte CREATE MATERIALIZED VIEW příkaz. Pokud chcete odeslat vytvořit příkaz, použijte editor SQL v uživatelském rozhraní Azure Databricks, rozhraní příkazového řádku Databricks SQL nebo rozhraní Databricks SQL API.

Poznámka:

Uživatel, který vytvoří materializované zobrazení, je vlastníkem materializovaného zobrazení a musí mít následující oprávnění:

  • SELECT oprávnění pro základní tabulky, které odkazuje materializované zobrazení.
  • USE CATALOG a USE SCHEMA oprávnění k katalogu a schématu obsahujícím zdrojové tabulky pro materializované zobrazení.
  • USE CATALOG a USE SCHEMA oprávnění k cílovému katalogu a schématu pro materializované zobrazení.
  • CREATE TABLE a CREATE MATERIALIZED VIEW oprávnění k schématu obsahujícímu materializované zobrazení.

Následující příklad vytvoří materializované zobrazení mv1 ze základní tabulky base_table1:

CREATE MATERIALIZED VIEW mv1
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Komentáře sloupců v základní tabulce se automaticky rozšíří do nového materializovaného zobrazení. Chcete-li přidat plán, omezení tabulky nebo jiné vlastnosti, upravte definici materializovaného zobrazení. Další informace o syntaxi pro definování materializovaného zobrazení najdete v tématu CREATE MATERIALIZED VIEW.

Nastavte kanál modulu runtime

Materializovaná zobrazení vytvořená pomocí SQL Warehouse se automaticky aktualizují pomocí kanálu DLT. Kanály DLT ve výchozím nastavení používají modul runtime v kanálu current. Informace o procesu vydání najdete v poznámkách k verzi DLT a procesu aktualizace.

Databricks doporučuje používat current kanál pro produkční úlohy. Nové funkce jsou poprvé vydány na preview kanálu. Na kanál DLT ve verzi Preview můžete nastavit potrubí a otestovat nové funkce zadáním preview jako vlastnosti tabulky. Tuto vlastnost můžete zadat při vytváření tabulky nebo po vytvoření tabulky pomocí příkazu ALTER.

Následující příklad kódu ukazuje, jak nastavit kanál na náhled v příkazu CREATE:

CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
  *
FROM
  range(5)

Načtení dat z externích systémů

Databricks doporučuje pro podporované zdroje dat nahrát externí data pomocí federace Lakehouse. Informace o načítání dat ze zdrojů nepodporované službou Lakehouse Federation najdete v tématu Možnosti formátu dat.

Aktualizace materializovaného zobrazení

Operace REFRESH aktualizuje materializované zobrazení tak, aby odráželo nejnovější změny základní tabulky. Operace je ve výchozím nastavení synchronní, což znamená, že příkaz blokuje, dokud nebude operace aktualizace dokončena. K aktualizaci materializovaného zobrazení použijte REFRESH MATERIALIZED VIEW příkaz. Podrobnosti o syntaxi a parametrech SQL pro tento příkaz najdete v ( nebo ). Další informace o typech materializovaných zobrazení, která lze přírůstkově aktualizovat, najdete v tématu Přírůstková aktualizace pro materializovaná zobrazení.

Pokud chcete odeslat příkaz aktualizace, použijte editor SQL v uživatelském rozhraní Azure Databricks, poznámkový blok připojený ke službě SQL Warehouse, rozhraní příkazového řádku SQL Databricks nebo rozhraní SQL API Databricks.

Materializované zobrazení může REFRESH zobrazit pouze vlastník.

Následující příklad aktualizuje mv1 materializované zobrazení:

REFRESH MATERIALIZED VIEW mv1;

Jak se aktualizují materializovaná zobrazení SQL Databricks?

Materializovaná zobrazení automaticky vytvářejí a používají bezserverové kanály DLT ke zpracování operací aktualizace. Aktualizace se spravuje kanálem DLT a aktualizace se monitoruje službou Databricks SQL Warehouse, která slouží k vytvoření materializovaného zobrazení. Materializovaná zobrazení je možné aktualizovat pomocí kanálu DLT, který běží podle plánu. Viz Spouštěný vs. kontinuální režim kanálu.

Poznámka:

Modul runtime DLT nemůže rozpoznat změny v jiných zdrojích dat než Delta. Tabulka se stále pravidelně aktualizuje, ale s vyšším výchozím intervalem aktivační události, aby se zabránilo nadměrnému přepočítávání, které by zpomalilo jakékoli přírůstkové zpracování probíhající na výpočetních prostředcích.

Ve výchozím nastavení se operace aktualizace provádějí synchronně. Můžete také nastavit operaci aktualizace tak, aby probíhala asynchronně. Tuto možnost můžete nastavit pomocí příkazu refresh. Viz REFRESH (MATERIALIZED VIEW nebo STREAMING TABLE) Chování spojené s jednotlivými přístupy je následující:

  • Synchronní: Synchronní aktualizace brání dalším operacím v pokračování, dokud aktualizace nebude dokončena. Pokud je výsledek potřebný pro další krok, například při sekvencování operací aktualizace v nástrojích orchestrace, jako jsou úlohy Databricks, použijte synchronní aktualizaci. K orchestraci materializovaných zobrazení pomocí úlohy použijte typ úlohy SQL. Viz Přehled orchestrace v databricks.
  • asynchronní: Asynchronní aktualizace spustí úlohu na pozadí na výpočetním prostředí DLT, když začne aktualizace materializovaného zobrazení, což umožňuje, aby se příkaz vrátil před dokončením načítání dat. Tento typ aktualizace může ušetřit náklady, protože operace nemusí nutně obsahovat výpočetní kapacitu ve skladu, kde je inicializován příkaz. Pokud se aktualizace stane nečinnou a neběží žádné další úlohy, může být sklad uzavřen, zatímco aktualizace využívá jiné dostupné výpočetní prostředky. Asynchronní aktualizace navíc podporují paralelní spouštění více operací.

Některé dotazy je možné přírůstkově aktualizovat. Viz Přírůstková aktualizace pro materializovaná zobrazení. Pokud přírůstkovou aktualizaci nelze provést, provede se místo toho úplná aktualizace.

Naplánování aktualizací materializovaného zobrazení

Můžete nakonfigurovat materializované zobrazení SQL Databricks tak, aby se automaticky aktualizovalo na základě definovaného plánu. Pokud chcete nastavit plán, udělejte jednu z těchto věcí:

Při vytvoření plánu se automaticky nakonfiguruje nová úloha Databricks pro zpracování aktualizace.

Pokud chcete zobrazit plán, udělejte jednu z těchto věcí:

  • DESCRIBE EXTENDED Spusťte příkaz z editoru SQL v uživatelském rozhraní Azure Databricks.
  • K zobrazení materializovaného zobrazení použijte Průzkumníka katalogu. Plán je uvedený na kartě Přehled v části Stav aktualizace. Podívejte se, co je Průzkumník katalogu?

Zobrazení stavu aktualizace materializovaného zobrazení

Poznámka:

Vzhledem k tomu, že kanál DLT spravuje materializované aktualizace zobrazení, je latence způsobená časem spuštění kanálu. Tato doba může být v sekundách až minutách, kromě času potřebného k provedení aktualizace.

Stav aktualizace materializovaného zobrazení můžete zjistit zobrazením příslušného kanálu v uživatelském rozhraní DLT nebo dotazem na Aktualizovat informace vrácené příkazem DESCRIBE EXTENDED pro materializované zobrazení.

Historii aktualizací materializovaného zobrazení můžete zobrazit také dotazováním protokolu událostí DLT. Viz Zobrazení historie aktualizace pro materializované zobrazení.

Monitorování spuštění pomocí historie dotazů

Na stránce historie dotazů můžete získat přístup k podrobnostem dotazu a profilům dotazů, které vám pomůžou identifikovat špatně výkonné dotazy a kritické body v kanálu DLT používaném ke spouštění aktualizací streamovaných tabulek. Přehled o druhu informací dostupných pro historii dotazů a profily dotazů najdete v tématu Historie dotazů a profil dotazu.

Důležité

Tato funkce je ve verzi Public Preview. Správci pracovního prostoru můžou tuto funkci povolit na stránce Previews . Viz Správa Azure Databricks Previewy.

Všechny příkazy související s materializovanými zobrazeními se zobrazí v historii dotazů. Pomocí rozevíracího seznamu Příkaz můžete vybrat libovolný příkaz a zkontrolovat související dotazy. Za všemi příkazy CREATE následuje příkaz REFRESH, který se provádí asynchronně v kanálu DLT. Příkazy REFRESH obvykle zahrnují podrobné plány dotazů, které poskytují přehled o optimalizaci výkonu.

Pokud chcete získat přístup k REFRESH příkazům v uživatelském rozhraní historie dotazů, postupujte následovně:

  1. Kliknutím Ikona historie na levý boční panel otevřete uživatelské rozhraní historie dotazů.
  2. Vyberte políčko REFRESH ze seznamu Výkaz.
  3. Kliknutím na název příkazu dotazu zobrazíte souhrnné podrobnosti, jako je doba trvání dotazu a agregované metriky.
  4. Kliknutím na Zobrazit profil dotazu otevřete profil dotazu. Podrobnosti o navigaci v profilu dotazu najdete v Profilu dotazu.
  5. Volitelně můžete pomocí odkazů v části Zdroj dotazů otevřít související dotaz nebo kanál.

Viz CREATE MATERIALIZED VIEW.

Zobrazení stavu aktualizace v uživatelském rozhraní DLT

Ve výchozím nastavení není kanál DLT, který spravuje materializované zobrazení, viditelný v uživatelském rozhraní DLT. Pokud chcete kanál zobrazit v uživatelském rozhraní DLT, musíte získat přímý přístup k odkazu na podrobnosti kanálu stránce. Přístup k odkazu:

  • Zkopírujte a vložte odkaz zobrazený v řádku Poslední aktualizace tabulky vrácené příkazem DESCRIBE EXTENDED .
  • Na kartě rodokmenu materializovaného zobrazení klikněte na Kanály a potom klikněte na odkaz kanálu.

U asynchronních REFRESH příkazů odeslaných pomocí editoru SQL v uživatelském rozhraní Azure Databricks můžete stav aktualizace zobrazit pomocí odkazu zobrazeného na panelu Výsledky .

Zastavení aktivní aktualizace

Pokud chcete zastavit aktivní aktualizaci v uživatelském rozhraní DLT, v podrobnostech kanálu stránce kliknutím na Zastavit zastavte aktualizaci kanálu. Aktualizaci můžete také zastavit pomocí Databricks CLI nebo operace POST /api/2.0/pipelines/{pipeline_id}/stop v rozhraní Pipelines API.

Aktualizace definice materializovaného zobrazení

Chcete-li aktualizovat definici materializovaného zobrazení, musíte nejprve odstranit a pak znovu vytvořit materializované zobrazení.

Trvalé odstranění záznamů z materializovaného zobrazení s povolenými vektory odstranění

Důležité

Podpora příkazu REORG s materializovanými zobrazeními je ve verzi Public Preview.

Poznámka:

  • Použití příkazu REORG s materializovaným zobrazením vyžaduje Databricks Runtime 15.4 a vyšší.
  • I když můžete použít příkaz REORG s libovolným materializovaným zobrazením, je vyžadován pouze při odstraňování záznamů z materializovaného zobrazení s odstranění vektory povolené. Příkaz nemá žádný vliv při použití s materializovaným zobrazením bez povolených vektorů odstranění.

Pokud chcete fyzicky odstranit záznamy z podkladového úložiště pro materializované zobrazení s povolenými vektory odstranění, jako je například dodržování gdpr, je potřeba provést další kroky, aby se zajistilo, že se operace VACUUM spustí na datech materializovaného zobrazení.

Následující text podrobněji popisuje tyto kroky:

  1. Spusťte příkaz REORG v materializovaném zobrazení a zadejte parametr APPLY (PURGE). Například REORG TABLE <materialized-view-name> APPLY (PURGE);. Viz REORG TABLE.
  2. Počkejte, až uplyne doba uchovávání dat pro materializované zobrazení. Výchozí doba uchovávání dat je sedm dní, ale je možné ji nakonfigurovat pomocí vlastnosti delta.deletedFileRetentionDuration tabulky. Vizte Konfigurace uchovávání dat pro dotazy s časovým cestováním.
  3. REFRESH materializované zobrazení. Viz také Aktualizovat materializované zobrazení. Do 24 hodin od operace REFRESH se automaticky spustí úlohy údržby DLT, včetně operace VACUUM, která se vyžaduje k trvalému odstranění záznamů. Vizte Úlohy údržby prováděné DLT.

Odstranění materializovaného zobrazení

Poznámka:

Chcete-li odeslat příkaz k vyřazení materializovaného zobrazení, musíte být vlastníkem tohoto materializovaného zobrazení nebo mít oprávnění MANAGE pro materializované zobrazení.

Chcete-li odstranit materializované zobrazení, použijte příkaz DROP VIEW. K odeslání DROP příkazu můžete použít editor SQL v uživatelském rozhraní Azure Databricks, rozhraní příkazového řádku SQL Databricks nebo rozhraní SQL API Databricks. Následující příklad zruší mv1 materializované zobrazení:

DROP MATERIALIZED VIEW mv1;

Popis materializovaného zobrazení

K načtení sloupců a datových typů pro materializované zobrazení použijte DESCRIBE příkaz. Pokud chcete načíst sloupce, datové typy a metadata, jako je vlastník, umístění, čas vytvoření a stav aktualizace materializovaného zobrazení, použijte DESCRIBE EXTENDED. Pokud chcete odeslat DESCRIBE příkaz, použijte editor SQL v uživatelském rozhraní Azure Databricks, Databricks SQL CLI nebo Databricks SQL API.

Změna vlastníka materializovaného zobrazení

Vlastník materializovaného zobrazení můžete změnit, pokud jste správcem metastoru i správcem pracovního prostoru. Materializovaná zobrazení automaticky vytvářejí a používají kanály DLT ke zpracování změn. Pomocí následujících kroků můžete změnit vlastníka materializovaných zobrazení:

  • Na kartě závislostí materializovaného zobrazení klikněte na Pipeliny a potom klikněte na odkaz pipeline.
  • Klikněte na Sdílet. Zobrazí se dialogové okno nastavení oprávnění .
  • Kliknutím na x napravo od jména aktuálního vlastníka odeberete aktuálního vlastníka.
  • Začněte psát a vyfiltrujte seznam dostupných uživatelů. Klikněte na uživatele, který by měl být novým vlastníkem kanálu.
  • Kliknutím na Uložit uložte změny a zavřete dialogové okno.

Všechny prostředky potrubí, včetně materializovaných zobrazení definovaných v potrubí, vlastní nový vlastník potrubí. Všechny budoucí aktualizace se spouštějí pomocí identity nového vlastníka.

Řízení přístupu k materializovaným zobrazením

Materializovaná zobrazení podporují bohaté řízení přístupu, které podporují sdílení dat a zároveň se vyhýbají potenciálně privátním datům. Materializovaný vlastník zobrazení nebo uživatel s oprávněním MANAGE může ostatním uživatelům udělit oprávnění SELECT. Uživatelé s SELECT přístupem k materializovanému zobrazení nepotřebují SELECT přístup k tabulkám odkazovaným materializovaným zobrazením. Toto řízení přístupu umožňuje sdílení dat při řízení přístupu k podkladovým datům.

Udělit oprávnění materializovanému zobrazení

Pokud chcete udělit přístup k materializovanému zobrazení, použijte tento GRANT příkaz:

GRANT
  privilege_type [, privilege_type ] ...
  ON <mv_name> TO principal;

Privilege_type může být:

  • SELECT – uživatel může SELECT materializované zobrazení.
  • REFRESH – uživatel může REFRESH materializované zobrazení. Aktualizace se spouští pomocí oprávnění vlastníka.

Následující příklad vytvoří materializované zobrazení a udělí uživateli oprávnění k výběru a aktualizaci:

CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;

Odebrat oprávnění z materializovaného zobrazení

Pokud chcete odvolat přístup z materializovaného zobrazení, použijte tento REVOKE příkaz:

REVOKE
  privilege_type [, privilege_type ]
  ON <name> FROM principal;

Pokud jsou oprávnění SELECT v základní tabulce odvolána od vlastníka materializovaného zobrazení nebo jakéhokoli jiného uživatele, kterému byla udělena oprávnění MANAGE nebo SELECT k materializovanému zobrazení, nebo je základní tabulka odstraněna, vlastník materializovaného zobrazení nebo uživatel s uděleným přístupem může stále dotazovat materializované zobrazení. Dochází však k následujícímu chování:

  • Vlastník materializovaného zobrazení nebo jiní uživatelé, kteří ztratili přístup k materializovanému zobrazení, už nemohou REFRESH toto materializované zobrazení a materializované zobrazení bude zastaralé.
  • Pokud je plán automatizovaný, další naplánovaný plán REFRESH selže nebo se nespustí.

Následující příklad odvolá SELECT oprávnění z mv1:

REVOKE SELECT ON mv1 FROM user1;

Povolit záznam změn dat

U základních tabulek materializovaných zobrazení je vyžadován datový kanál změn, s výjimkou některých pokročilých případů použití. Pokud chcete u základní tabulky povolit datový kanál změn, nastavte delta.enableChangeDataFeed vlastnost tabulky pomocí následující syntaxe:

ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

Zobrazení historie aktualizací pro materializované zobrazení

Pokud chcete zobrazit stav REFRESH operací v materializovaném zobrazení, včetně aktuálních a minulých aktualizací, zadejte dotaz na protokol událostí DLT:

SELECT
  *
FROM
  event_log(TABLE(<fully-qualified-table-name>))
WHERE
  event_type = "update_progress"
ORDER BY
  timestamp desc;

Nahraďte <fully-qualified-table-name> plně kvalifikovaným názvem materializovaného zobrazení, včetně katalogu a schématu.

Viz Co je protokol událostí DLT?.

Získání podrobných informací o materializovaných zobrazeních pomocí Průzkumníka katalogu

Pomocí Průzkumníka katalogu můžete zobrazit podrobnosti o materializovaném zobrazení.

  1. Na bočním panelu klikněte na ikonu Katalog .
  2. Ve stromu Průzkumníka katalogu vlevo otevřete katalog a vyberte schéma, ve kterém se nachází materializované zobrazení.
  3. Otevřete položku Tabulky pod vybraným schématem a klikněte na materializované zobrazení.

Odtud můžete pomocí karet pod názvem materializovaného zobrazení zobrazit a upravit informace o materializovaném zobrazení, včetně:

  • Obnovit stav a historii
  • Schéma tabulky
  • Ukázková data (vyžaduje aktivní výpočetní prostředky)
  • Dovolení
  • Rodokmen, včetně tabulek a kanálů, které toto materializované zobrazení závisí na
  • Vhledy do využití
  • Monitory, které jste vytvořili pro toto materializované zobrazení

Omezení

  • Požadavky na výpočetní prostředky a pracovní prostor najdete v tématu Požadavky.
  • Materializovaná zobrazení nepodporují sloupce identit ani náhradní klíče.
  • Pokud materializované zobrazení používá agregaci součtu nad sloupcem, který umožňuje NULL, a v daném sloupci zůstanou pouze hodnoty NULL, výsledná agregační hodnota materializovaného zobrazení je nula místo NULL.
  • Z materializovaného zobrazení nelze číst změnový datový tok.
  • Dotazy týkající se cestování v čase nejsou podporovány v materializovaných zobrazeních.
  • Podkladové soubory podporující materializovaná zobrazení mohou zahrnovat data z nadřazených tabulek (včetně možných identifikovatelných osobních údajů), které se nezobrazují v definici materializovaného zobrazení. Tato data se automaticky přidají do podkladového úložiště, aby podporovala přírůstkovou aktualizaci materializovaných zobrazení. Vzhledem k tomu, že podkladové soubory materializovaného zobrazení můžou riskovat zveřejnění dat z nadřazených tabulek, které nejsou součástí schématu materializovaného zobrazení, databricks doporučuje nesdílit podkladové úložiště s nedůvěryhodnými podřízenými příjemci. Předpokládejme například, že definice materializovaného zobrazení obsahuje COUNT(DISTINCT field_a) klauzuli. I když materializovaná definice zobrazení obsahuje pouze agregační COUNT DISTINCT klauzuli, podkladové soubory budou obsahovat seznam skutečných hodnot field_a.