Použijte samostatná materializovaná zobrazení

Samostatná materializovaná zobrazení předpočítají a ukládají výsledky dotazů do mezipaměti, aby se zlepšil výkon a snížily náklady na úlohy zpracování a analýzy dat.

Můžete vytvářet a aktualizovat samostatná materializovaná zobrazení ze služby Databricks SQL Warehouse nebo z poznámkového bloku spuštěného na bezserverovém obecném výpočetním prostředí. Podrobnosti o rozdílech mezi dvěma možnostmi výpočetních prostředků najdete v tématu Požadavky pro samostatné kanály.

Pokud chcete vytvořit a aktualizovat samostatná materializovaná zobrazení pomocí Python z poznámkového bloku, přečtěte si téma Použití Python se samostatnými kanály.

Co jsou samostatná materializovaná zobrazení?

Samostatné materializované zobrazení je spravovaná tabulka Katalogu Unity, která fyzicky ukládá výsledky dotazu definovaného mimo kanál Lakeflow. Na rozdíl od standardních zobrazení, která počítají výsledky na vyžádání, materializovaná zobrazení ukládají výsledky do mezipaměti a aktualizují je při změně podkladových zdrojových tabulek 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

Informace o možnostech výpočetních prostředků, oprávněních a dalších požadavcích na vytváření, aktualizaci a dotazování samostatných materializovaných zobrazení najdete v tématu Požadavky pro samostatné kanály.

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

Vytvoření materializovaného zobrazení

Operace se samostatným materializovaným zobrazením CREATE používají sklad Databricks SQL k vytvoření materializovaného zobrazení a načtení dat do něj. 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é samostatné materializované zobrazení. 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 příkaz create, použijte editor SQL v uživatelském rozhraní Azure Databricks, Databricks SQL CLI nebo Databricks SQL API.

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

Ad hoc materializované 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;

Materializované zobrazení aktivované při aktivaci

Následující příklad vytvoří materializované zobrazení, které se automaticky aktualizuje pokaždé, když se nadřazená zdrojová data změní pomocí TRIGGER ON UPDATE. Tento přístup použijte pro produkční úlohy, zejména v případě, že upstreamové závislosti neběží podle předvídatelných plánů.

-- Refresh automatically when the source table is updated.
CREATE OR REPLACE MATERIALIZED VIEW mv_trigger
  TRIGGER ON UPDATE
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Plánované materializované zobrazení

Následující příklad vytvoří materializované zobrazení s denním plánem aktualizace CRON v 3:30 UTC. Výrazy a agregace v SELECT klauzuli musí používat aliasy. GROUP BY Odkazy na sloupce nevyžadují aliasy.

-- Refresh nightly at 3:30 AM UTC.
-- The cron expression uses six space-separated fields: seconds minutes hours day-of-month month day-of-week
-- Use '?' for either day-of-month or day-of-week to leave it unspecified.
CREATE OR REPLACE MATERIALIZED VIEW daily_revenue_by_region
  SCHEDULE CRON '0 30 3 * * ?' AT TIME ZONE 'UTC'
AS SELECT
  date_trunc('day', order_time) AS sales_date,
  region,
  sum(revenue) AS total_revenue,
  count(*) AS order_count
FROM
  orders
GROUP BY sales_date, region;

Další možnosti plánování, včetně SCHEDULE EVERY syntaxe a dalších příkladů CRON, najdete v tématu Plánování aktualizací.

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. Viz Jak se aktualizují samostatná materializovaná zobrazení?

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 obnoví materializované zobrazení, jestliže je znovu vyvolána nebo podle časového 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 samostatných materializovaných zobrazení. 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ů

Materializovaná zobrazení je možné vytvořit na externích datech pomocí federace Lakehouse pro podporované zdroje dat. 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ý k SQL Warehouse, Databricks SQL CLI nebo rozhraní SQL API Databricks SQL API.

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;

Informace o plánování aktualizace najdete v tématu Plánování aktualizací.

Jak se aktualizují samostatná materializovaná zobrazení?

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í kanálu, který běží podle plánu. Samostatná materializovaná zobrazení se vždy spouštějí v aktivovaném režimu. Viz Aktivovaný vs. průběžný režim potrubí.

Plánované aktualizace můžou obsahovat oznámení o aktualizacích a můžete nastavit režim výkonu aktualizace.

Přírůstková aktualizace

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 nebo není nákladově efektivní, 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. Kvůli podpoře přírůstkové aktualizace by se zdrojová data měla ukládat do tabulek Delta s povoleným sledováním řádků. Povolení datového kanálu změn se doporučuje pro lepší výkon přírůstkové aktualizace. Pokud chcete zjistit, jestli je dotaz přírůstkový, použijte příkaz SQL Databricks EXPLAIN CREATE MATERIALIZED VIEW . 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.

Ve výchozím nastavení Azure Databricks používá nákladový model k výběru cenově výhodnější možnosti mezi úplnou a přírůstkovou aktualizací. Toto chování můžete přepsat tak, abyste mohli preferovat přírůstkové nebo úplné aktualizace nastavením REFRESH POLICY ve vaší SQL definici materializovaného zobrazení.

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 REFRESHMATERIALIZED VIEW (STREAMING TABLE nebo ). 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í.

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. Pokud chcete odeslat příkaz DROP, můžete použít editor SQL v uživatelském rozhraní Azure Databricks, rozhraní Databricks SQL CLI nebo Databricks SQL API. 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í

Při spuštění CREATE MATERIALIZED VIEW nebo REFRESH MATERIALIZED VIEW Azure Databricks automaticky vytvoří a spustí bezserverový kanál pro zpracování operace. Tento kanál je nezávislý na databricks SQL Warehouse nebo výpočetním prostředku, ze kterého jste příkaz odeslali. Velikost clusteru vašeho skladu neomezuje výpočetní prostředky ani náklady používané aktualizací.

  • Kanál aktualizace běží na bezserverovém výpočetním prostředí, který se účtuje jako bezserverové kanály DBU Lakeflow.
  • Bezserverový kanál je oddělený od vašeho skladu. Výpočetní prostředky z vašeho skladu slouží pouze ke koordinaci operace, nikoli ke zpracování dat.
  • Náklady se škálují s objemem zpracovaných dat, nikoli velikostí sql warehouse.
  • Pokud chcete monitorovat náklady na aktualizaci materializovaného zobrazení, použijte systémové tabulky. Podívejte se na jaká je spotřeba DBU materializovaného zobrazení nebo streamovací tabulky?
  • Chcete-li zobrazit podkladový datový kanál, který spravuje vaše materializované zobrazení:
    1. Klikněte na Jobs & Pipelines v levém panelu pracovního prostoru Azure Databricks.
    2. Klikněte na Typ kanálu. Potom výběrem MV/ST zobrazíte samostatná materializovaná zobrazení.

Poznámka:

Poplatky za výpočetní prostředky bez serveru se můžou účtovat i v případě, že původní sklad využívá vyhrazené výpočetní prostředky.

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 Sledování řádků v Azure Databricks

omezení

  • Informace o možnostech výpočetních prostředků a požadavcích na pracovní prostor najdete v tématu Požadavky pro samostatné kanály.
  • 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ž definice materializovaného zobrazení obsahuje pouze agregační COUNT DISTINCT klauzuli, podkladové soubory obsahují seznam skutečných hodnot field_a.
  • Při použití 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 potřebujete použít připojení Azure Private Link s materializovaným zobrazením, obraťte se na svého zástupce u 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.

Dodatečné zdroje