Sdílet prostřednictvím


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

Tento článek popisuje, jak vytvořit a aktualizovat materializovaná zobrazení v Databricks SQL za účelem zlepšení výkonu a snížení nákladů na úlohy zpracování a analýzy dat.

Co jsou materializovaná zobrazení?

V Databricks SQL jsou materializovaná zobrazení spravovanými tabulkami Katalogu Unity, které fyzicky ukládají výsledky dotazu. Na rozdíl od standardních pohledů, které počítají výsledky na vyžádání, materializované pohledy ukládají výsledky do mezipaměti a aktualizují je, jakmile se změní podkladové zdrojové tabulky—buď podle plánu, nebo automaticky.

Materializovaná zobrazení jsou vhodná 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í také umožňují snadno použitelné transformace čištěním, rozšiřováním a denormalizací základních tabulek. Materializovaná zobrazení, díky předvýpočtu nákladných nebo často používaných dotazů, snižují latenci dotazů a spotřebu prostředků. V mnoha případech můžou přírůstkově vypočítat změny ze zdrojových tabulek a dále zlepšit efektivitu a prostředí koncových uživatelů.

Toto jsou běžné případy použití materializovaných zobrazení:

  • Udržování řídicího panelu BI v aktualizovaném stavu s minimální latencí dotazů koncových uživatelů
  • Snížení složité orchestrace ETL pomocí jednoduché logiky SQL
  • Vytváření složitých a vrstvených transformací
  • Všechny případy použití, které vyžadují konzistentní výkon s up-to-date insights.

Když vytvoříte materializované zobrazení ve službě Databricks SQL Warehouse, vytvoří se bezserverový kanál pro zpracování vytvoření a aktualizace materializovaného zobrazení. Stav operací aktualizace můžete monitorovat v Průzkumníku katalogu. Viz Zobrazení podrobností s DESCRIBE EXTENDED.

Požadavky

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

Požadavky na vytvoření nebo aktualizaci materializovaných zobrazení:

  • Musíte použít sklad SQL s podporou katalogu Unity buď ve verzi pro, nebo bezserverové.

  • Pokud chcete aktualizovat materializované zobrazení, musíte být v pracovním prostoru, který ho vytvořil.

  • Pokud chcete přírůstkově aktualizovat materializované zobrazení z tabulek Delta, musí mít zdrojové tabulky povolené sledování řádků.

  • Vlastník (uživatel, který vytváří materializované zobrazení), 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í pro cílový katalog a schéma pro materializované zobrazení.
    • CREATE TABLE a CREATE MATERIALIZED VIEW oprávnění k schématu obsahujícímu materializované zobrazení.
  • Pokud chcete aktualizovat materializované zobrazení, musíte mít REFRESH oprávnění k materializovanému zobrazení.

  • Váš pracovní prostor musí být v oblasti, která podporuje bezserverové služby SQL Warehouse.

Požadavky na dotazování materializovaných 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ů:

    • SQL Warehouse

    • Rozhraní deklarativních potrubí Lakeflow Spark

    • Výpočetní režim standardního přístupu (dříve sdílený režim přístupu)

    • Režim vyhrazeného přístupu (dříve režim přístupu jednoho uživatele) ve službě Databricks Runtime 15.4 a vyšší, pokud je pracovní prostor povolený pro bezserverové výpočetní prostředky. Podívejte se na jemně odstupňované řízení přístupu u vyhrazených výpočetních prostředků.

      Pokud jste vlastníkem materializovaného zobrazení, můžete použít výpočetní prostředek v režimu vyhrazeného přístupu, který běží na Databricks Runtime verze 14.3 nebo vyšší.

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čí. Kanál bez serveru se automaticky vytvoří pro každé materializované zobrazení Databricks SQL. Když je materializované zobrazení aktualizováno, zpracovávací postup aktualizaci zpracovává.

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.

Uživatel, který vytvoří materializované zobrazení, je vlastníkem materializovaného zobrazení.

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

-- 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;

Když pomocí příkazu vytvoříte materializované zobrazení CREATE OR REPLACE MATERIALIZED VIEW , počáteční aktualizace dat a populace začne okamžitě. Tím se nespotřebovávají výpočetní prostředky SQL Warehouse. Místo toho se k vytvoření a následným aktualizacím používá bezserverový kanál.

Komentáře sloupců v základní tabulce se automaticky rozšíří do nového materializovaného zobrazení pouze při vytváření. Pokud chcete přidat plán, omezení tabulky nebo jiné vlastnosti, upravte definici materializovaného zobrazení (dotaz SQL).

Stejný příkaz SQL aktualizuje materializované zobrazení, pokud je znovu vyvolán nebo podle plánu. Aktualizace provedená tímto způsobem funguje jako jakákoli jiná aktualizace. Podrobnosti najdete v tématu Aktualizace materializovaného zobrazení.

Další informace o konfiguraci materializovaného zobrazení najdete v tématu Konfigurace materializovaných zobrazení v Databricks SQL. Informace o úplné syntaxi pro vytvoření materializovaného zobrazení najdete v tématu CREATE MATERIALIZED VIEW. Další informace o načítání dat v různých formátech a z různých míst najdete v tématu Načtení dat v kanálech.

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. Obecné informace o načítání dat, včetně příkladů, najdete v tématu Načtení dat v kanálech.

Skrytí citlivých dat

Pomocí materializovaných zobrazení můžete skrýt citlivá data od uživatelů, kteří k tabulce přistupují. Jedním ze způsobů, jak to udělat, je vytvořit dotaz, aby tato data neobsahoval od začátku. Můžete ale také maskovat sloupce nebo filtrovat řádky na základě oprávnění uživatele, který se dotazuje. Můžete například skrýt tax_id sloupec pro uživatele, kteří nejsou ve skupině HumanResourcesDept. Provedete to tak, že během vytváření materializovaného zobrazení použijete ROW FILTER syntaxi a MASK syntaxi. Další informace najdete v tématu Filtry řádků a masky sloupců.

Aktualizace materializovaného zobrazení

Aktualizace materializovaného zobrazení aktualizuje zobrazení tak, aby odráželo nejnovější změny základní tabulky v době aktualizace.

Když definujete materializované zobrazení, CREATE OR REPLACE MATERIALIZED VIEW příkaz se použije k vytvoření zobrazení i k jeho aktualizaci pro všechny plánované aktualizace. Příkaz můžete také použít REFRESH MATERIALIZED VIEW k aktualizaci materializovaného zobrazení, aniž byste museli dotaz znovu zadat. 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.

Vlastník a každý uživatel, kterému bylo uděleno REFRESH oprávnění k tabulce, může aktualizovat materializované zobrazení.

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

REFRESH MATERIALIZED VIEW mv1;

Operace je ve výchozím nastavení synchronní, což znamená, že příkaz blokuje, dokud nebude operace aktualizace dokončena. Pokud chcete aktualizovat asynchronně, můžete přidat ASYNC klíčové slovo:

REFRESH MATERIALIZED VIEW mv1 ASYNC;

Jak se aktualizují materializovaná zobrazení SQL Databricks?

Materializovaná zobrazení automaticky vytvářejí a používají bezserverové kanály ke zpracování operací aktualizace. Aktualizace se spravuje potrubím a monitoruje se službou Databricks SQL Warehouse, která slouží pro aktualizaci a vytvoření materializovaného zobrazení. Materializovaná zobrazení je možné aktualizovat pomocí pipeline, která se spouští pravidelně podle harmonogramu. Materializovaná zobrazení vytvořená v Databricks SQL se vždy spouštějí ve spouštěcím režimu. Viz Aktivovaný vs. průběžný režim potrubí.

Materializovaná zobrazení se aktualizují pomocí jedné ze dvou metod.

  • Přírůstková aktualizace – systém vyhodnocuje dotaz zobrazení, aby identifikoval změny, ke kterým došlo po poslední aktualizaci, a sloučí pouze nová nebo upravená data.
  • Úplná aktualizace – Pokud přírůstkovou aktualizaci nejde provést, spustí systém celý dotaz a nahradí stávající data v materializovaném zobrazení novými výsledky.

Struktura dotazu a typ zdrojových dat určují, jestli se podporuje přírůstková aktualizace. Pro podporu přírůstkové aktualizace by se zdrojová data měla ukládat v tabulkách Delta s povoleným sledováním řádků a aktivovaným sledováním změn dat. Po vytvoření materializovaného zobrazení můžete sledovat jeho chování při aktualizaci a ověřit, jestli se aktualizuje přírůstkově, nebo prostřednictvím úplné aktualizace.

Podrobnosti o typech aktualizací a o tom, jak optimalizovat přírůstkové aktualizace, najdete v tématu Přírůstková aktualizace pro materializovaná zobrazení.

Asynchronní aktualizace

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 s klíčovým slovem ASYNC . 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 Lakeflow, použijte synchronní aktualizaci. K orchestraci materializovaných zobrazení pomocí úlohy použijte typ úlohy SQL. Podívejte se na Úlohy Lakeflow.
  • Asynchronní: Asynchronní aktualizace spustí úlohu na pozadí bezserverového výpočetního prostředí, když začne aktualizace materializovaného zobrazení, což umožní, 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í.

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 nebo aby se aktivovalo při změně nadřazených dat.

Důležité

Funkce TRIGGER ON UPDATE je v beta verzi.

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

Poznámka:

Alternativně můžete v úloze vytvořit úkol, který obsahuje příkaz CREATE OR REPLACE MATERIALIZED VIEW nebo příkaz REFRESH, a orchestrovat ho stejně jako jakoukoli jinou úlohu. Podívejte se na Úlohy Lakeflow.

Následující příklad vytvoří materializované zobrazení mv1 ze základní tabulky base_table1a plán aktualizace materializovaného zobrazení jednou za hodinu:

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;

Pokud chcete nastavit nebo změnit plán po vytvoření, použijte příkaz ALTER MATERIALIZED VIEW :

-- Alters the schedule to refresh the materialized view when its upstream data
-- gets updated.
ALTER MATERIALIZED VIEW sales ALTER TRIGGER ON UPDATE;

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. Viz DESCRIBE TABLE.
  • 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 na Co je to Průzkumník katalogu?.

Pokud máte plán aktualizací, máte stále možnost spustit ruční aktualizaci, pokud potřebujete aktualizovaná data.

Zastavení aktivní aktualizace

Pokud chcete zastavit aktivní aktualizaci v uživatelském rozhraní Azure Databricks, klikněte na stránce podrobností kanálu na tlačítko Zastavit a 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.

Časové limity pro aktualizace

Dlouhotrvající aktualizace mohou vypršet časový limit. Materializovaná zobrazení vytvořená nebo aktualizováná po 14. srpnu 2025 použijí časový limit přidružený k SQL Warehouse použitému ke spuštění aktualizace. Pokud sklad nemá nastavený časový limit, použije se výchozí hodnota 2 dny.

Poznámka:

Materializované zobrazení synchronizuje časový limit pouze při ručním CREATE OR REFRESH spuštění příkazu. Naplánované aktualizace zachovávají časový limit od nejnovějšího CREATE OR REFRESH.

Časový limit můžete explicitně nastavit pomocí STATEMENT_TIMEOUT konfigurace v SQL pro aktualizaci. Viz STATEMENT_TIMEOUT.

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ž příkaz REORG lze použít s libovolným materializovaným zobrazením, je vyžadován pouze při odstraňování záznamů z materializovaného zobrazení s povolenými vektory odstranění. 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, které zajistí, aby VACUUM operace běžela na datech materializovaného zobrazení.

Fyzické odstranění záznamů:

  1. Spusťte příkaz REORG v materializovaném zobrazení a zadejte parametr APPLY (PURGE). Příklad: REORG TABLE <materialized-view-name> APPLY (PURGE);. Viz REORG TABLE.
  2. Počkejte, až uplyne doba uchovávání dat materializovaného zobrazení. Výchozí doba uchovávání dat je sedm dní, ale je možné ji nakonfigurovat pomocí vlastnosti delta.deletedFileRetentionDuration tabulky. Viz Konfigurace uchovávání dat pro časové dotazy.
  3. REFRESH materializované zobrazení. Viz také Aktualizovat materializované zobrazení. Během 24 hodin po REFRESH operaci se úkoly údržby potrubí, včetně VACUUM operace potřebné k trvalému odstranění záznamů, automaticky spustí.

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;

Pomocí Průzkumníka katalogu můžete také vypustit materializované zobrazení.

  1. Klikněte na ikonu Data.Katalog na bočním panelu
  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í.
  4. V nabídce kebab menu icon., vyberte Odstranit.

Vysvětlení nákladů materializovaného zobrazení

Vzhledem k tomu, že materializované zobrazení běží na bezserverových výpočetních prostředcích mimo výpočetní prostředky, které jste nastavili pro poznámkový blok nebo úlohu, může vás zajímat, jak porozumět nákladům spojeným s ním. Použití materializovaného pohledu je sledováno spotřebou DBU. Další informace najdete v tématu Co je spotřeba DBU materializovaného zobrazení nebo tabulky streamování?

Povolení sledování řádků

Aby bylo možné podporovat přírůstkové aktualizace z tabulek Delta, musí být pro tyto zdrojové tabulky povolené sledování řádků. Pokud znovu vytvoříte zdrojovou tabulku, musíte znovu povolit sledování řádků.

Následující příklad ukazuje, jak povolit sledování řádků v tabulce:

ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);

Další podrobnosti najdete v tématu Použití sledování řádků pro tabulky Delta.

omezení

  • Požadavky na výpočetní prostředky a pracovní prostor najdete v tématu Požadavky.
  • Požadavky na přírůstkovou aktualizaci najdete v tématu Přírůstková aktualizace pro materializovaná zobrazení.
  • 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.
  • Při používání těchto funkcí na vyhrazených výpočetních prostředcích se vám můžou účtovat poplatky za výpočetní prostředky bez serveru.
  • Pokud chcete použít připojení Azure Private Link s materializovaným zobrazením, obraťte se na obchodního zástupce Databricks.

Přístup k materializovaným zobrazením z externích klientů

Pokud chcete získat přístup k materializovaným zobrazením z externích klientů Delta Lake nebo Iceberg, kteří nepodporují otevřená rozhraní API, můžete použít režim kompatibility. Režim kompatibility vytvoří verzi materializovaného zobrazení jen pro čtení, ke které má přístup jakýkoli klient Delta Lake nebo Iceberg.