Sdílet prostřednictvím


Kurz: Spuštění prvního kanálu tabulek Delta Live Tables

V tomto kurzu se dozvíte, jak nakonfigurovat kanál Delta Live Tables z kódu v poznámkovém bloku Databricks a spustit kanál aktivací aktualizace kanálu. Tento kurz obsahuje ukázkový kanál pro příjem a zpracování ukázkové datové sady s ukázkovým kódem pomocí rozhraní Pythonu a SQL . Pomocí pokynů v tomto kurzu můžete také vytvořit kanál s libovolnými poznámkovými bloky s správně definovanou syntaxí dynamických tabulek Delta.

Kanály dynamických tabulek Delta můžete nakonfigurovat a aktivovat aktualizace pomocí uživatelského rozhraní pracovního prostoru Azure Databricks nebo možností automatizovaného nástroje, jako jsou rozhraní API, rozhraní příkazového řádku, sady prostředků Databricks nebo jako úloha v pracovním postupu Databricks. Abyste se seznámili s funkcemi a funkcemi tabulek Delta Live Tables, doporučuje Databricks nejprve vytvářet a spouštět kanály pomocí uživatelského rozhraní. Při konfiguraci kanálu v uživatelském rozhraní navíc Delta Live Tables vygeneruje konfiguraci JSON pro váš kanál, který se dá použít k implementaci programových pracovních postupů.

Abychom si ukázali funkci Delta Live Tables, příklady v tomto kurzu stahují veřejně dostupnou datovou sadu. Databricks má ale několik způsobů, jak se připojit ke zdrojům dat a ingestovat data, která kanály implementující případy použití v reálném světě budou používat. Zobrazení dat Ingestování s rozdílovými živými tabulkami

Požadavky

  • Pokud chcete spustit kanál, musíte mít oprávnění k vytvoření clusteru nebo přístup k zásadám clusteru definujícím cluster Delta Live Tables. Modul runtime Delta Live Tables vytvoří cluster před spuštěním kanálu, a pokud nemáte správná oprávnění, selže.

  • Pokud chcete použít příklady v tomto kurzu, musí mít váš pracovní prostor povolený katalog Unity.

  • V katalogu Unity musíte mít následující oprávnění:

    • READ VOLUME a WRITE VOLUME, nebo ALL PRIVILEGES, pro my-volume svazek.
    • USE SCHEMA nebo ALL PRIVILEGES pro default schéma.
    • USE CATALOG nebo ALL PRIVILEGES pro main katalog.

    Pokud chcete tato oprávnění nastavit, podívejte se na správce Databricks nebo na oprávnění katalogu Unity a zabezpečitelné objekty.

  • Příklady v tomto kurzu používají k ukládání ukázkových dat svazek katalogu Unity. Pokud chcete tyto příklady použít, vytvořte svazek a použijte katalog, schéma a názvy svazků k nastavení cesty svazku používané příklady.

Poznámka:

Pokud váš pracovní prostor nemá povolený katalog Unity, poznámkové bloky s příklady, které nevyžadují katalog Unity, jsou připojené k tomuto článku. Pokud chcete tyto příklady použít, vyberte Hive metastore při vytváření kanálu možnost úložiště.

Kde spouštíte dotazy Delta Live Tables?

Dotazy Delta Live Tables se primárně implementují v poznámkových blocích Databricks, ale rozdílové živé tabulky nejsou navržené tak, aby se interaktivně spouštěly v buňkách poznámkového bloku. Provedení buňky obsahující syntaxi delta živých tabulek v poznámkovém bloku Databricks způsobí chybovou zprávu. Pokud chcete spouštět dotazy, musíte poznámkové bloky nakonfigurovat jako součást kanálu.

Důležité

  • Při psaní dotazů na tabulky Delta Live Tables se nemůžete spolehnout na pořadí provádění poznámkových bloků po buňkách. Delta Live Tables vyhodnocuje a spouští veškerý kód definovaný v poznámkových blocích, ale má jiný model provádění než příkaz Spustit všechny poznámkové bloky.
  • Jazyky nelze kombinovat v jednom souboru zdrojového kódu Delta Live Tables. Poznámkový blok může například obsahovat pouze dotazy Pythonu nebo dotazy SQL. Pokud v kanálu musíte použít více jazyků, použijte v kanálu více poznámkových bloků nebo souborů specifických pro jazyk.

Můžete také použít kód Pythonu uložený v souborech. Můžete například vytvořit modul Pythonu, který se dá importovat do kanálů Pythonu, nebo definovat uživatelem definované funkce Pythonu (UDF), které se mají použít v dotazech SQL. Další informace o importu modulů Pythonu najdete v tématu Import modulů Pythonu ze složek Gitu nebo souborů pracovního prostoru. Další informace o používání uživatelem definovaných funkcí Pythonu najdete v tématu Uživatelem definované skalární funkce – Python.

Příklad: Ingestování a zpracování dat o názvech dětí v New Yorku

Příklad v tomto článku používá veřejně dostupnou datovou sadu, která obsahuje záznamy jmen dětí v New Yorku. Tyto příklady ukazují použití kanálu Delta Live Tables k:

  • Čtení nezpracovaných dat CSV z veřejně dostupné datové sady do tabulky
  • Přečtěte si záznamy z nezpracované tabulky dat a pomocí očekávání Delta Live Tables vytvořte novou tabulku, která obsahuje vyčištěná data.
  • Vyčištěné záznamy použijte jako vstup pro dotazy Delta Live Tables, které vytvářejí odvozené datové sady.

Tento kód ukazuje zjednodušený příklad architektury medallionu. Podívejte se, co je architektura jezera medallion?

Implementace tohoto příkladu jsou k dispozici pro rozhraní Pythonu a SQL . Můžete postupovat podle kroků k vytvoření nových poznámkových bloků, které obsahují ukázkový kód, nebo můžete přeskočit k vytvoření kanálu a použití některého z poznámkových bloků uvedených na této stránce.

Implementace kanálu Delta Live Tables pomocí Pythonu

Kód Pythonu, který vytváří datové sady Delta Live Tables, musí vracet datové rámce. Pro uživatele, kteří nezná Python a datové rámce, databricks doporučuje používat rozhraní SQL. Viz Implementace kanálu Delta Live Tables s SQL.

Všechna rozhraní Python API Delta Live Tables se implementují v dlt modulu. Kód kanálu Delta Live Tables implementovaný v Pythonu musí modul explicitně importovat dlt v horní části poznámkových bloků a souborů Pythonu. Rozdílové živé tabulky se liší od mnoha skriptů Pythonu klíčovým způsobem: nezavoláte funkce, které provádějí příjem a transformaci dat za účelem vytvoření datových sad Delta Live Tables. Rozdílové živé tabulky místo toho interpretují funkce dekorátoru dlt z modulu ve všech souborech načtených do kanálu a sestaví graf toku dat.

Pokud chcete implementovat příklad v tomto kurzu, zkopírujte a vložte následující kód Pythonu do nového poznámkového bloku Pythonu. Přidejte každý ukázkový fragment kódu do vlastní buňky v poznámkovém bloku v uvedeném pořadí. Možnosti vytváření poznámkových bloků najdete v tématu Vytvoření poznámkového bloku.

Když vytvoříte kanál s rozhraním Pythonu, ve výchozím nastavení se názvy tabulek definují podle názvů funkcí. Například následující příklad Pythonu vytvoří tři tabulky s názvem baby_names_raw, baby_names_prepareda top_baby_names_2021. Název tabulky můžete přepsat pomocí parametru name . Viz Vytvoření tabulek Delta Live Materialized view nebo streaming table.

Důležité

Abyste se vyhnuli neočekávanému chování při spuštění kanálu, nezahrňte do funkcí, které definují datové sady, kód, který může mít vedlejší účinky. Další informace najdete v referenčních informacích k Pythonu.

Import modulu Delta Live Tables

Všechna rozhraní Python API Delta Live Tables se implementují v dlt modulu. Explicitně naimportujte dlt modul v horní části poznámkových bloků a souborů Pythonu.

Následující příklad ukazuje tento import spolu s příkazy importu pro pyspark.sql.functions.

import dlt
from pyspark.sql.functions import *

Stažení dat

Pokud chcete získat data pro tento příklad, stáhněte si soubor CSV a uložte je do svazku následujícím způsobem:

import os

os.environ["UNITY_CATALOG_VOLUME_PATH"] = "/Volumes/<catalog-name>/<schema-name>/<volume-name>/"
os.environ["DATASET_DOWNLOAD_URL"] = "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv"
os.environ["DATASET_DOWNLOAD_FILENAME"] = "rows.csv"

dbutils.fs.cp(f"{os.environ.get('DATASET_DOWNLOAD_URL')}", f"{os.environ.get('UNITY_CATALOG_VOLUME_PATH')}{os.environ.get('DATASET_DOWNLOAD_FILENAME')}")

Nahraďte <catalog-name>katalog, <volume-name> <schema-name>schéma a názvy svazků pro svazek katalogu Unity.

Vytvoření tabulky ze souborů v úložišti objektů

Delta Live Tables podporuje načítání dat ze všech formátů podporovaných službou Azure Databricks. Viz Možnosti formátu dat.

Dekorátor @dlt.table řekne Delta Live Tables, aby vytvořil tabulku, která obsahuje výsledek DataFrame vrácené funkcí. Před definici funkce Pythonu @dlt.table přidejte dekorátor, který vrátí datový rámec Sparku pro registraci nové tabulky v Delta Live Tables. Následující příklad ukazuje použití názvu funkce jako názvu tabulky a přidání popisného komentáře do tabulky:

@dlt.table(
  comment="Popular baby first names in New York. This data was ingested from the New York State Department of Health."
)
def baby_names_raw():
  df = spark.read.csv(f"{os.environ.get('UNITY_CATALOG_VOLUME_PATH')}{os.environ.get('DATASET_DOWNLOAD_FILENAME')}", header=True, inferSchema=True)
  df_renamed_column = df.withColumnRenamed("First Name", "First_Name")
  return df_renamed_column

Přidání tabulky z nadřazené datové sady v kanálu

Můžete použít dlt.read() ke čtení dat z jiných datových sad deklarovaných v aktuálním kanálu Delta Live Tables. Deklarování nových tabulek tímto způsobem vytvoří závislost, kterou Delta Live Tables před spuštěním aktualizací automaticky přeloží. Následující kód obsahuje také příklady monitorování a vynucování kvality dat s očekáváním. Viz Správa kvality dat pomocí rozdílových živých tabulek.

@dlt.table(
  comment="New York popular baby first name data cleaned and prepared for analysis."
)
@dlt.expect("valid_first_name", "First_Name IS NOT NULL")
@dlt.expect_or_fail("valid_count", "Count > 0")
def baby_names_prepared():
  return (
    dlt.read("baby_names_raw")
      .withColumnRenamed("Year", "Year_Of_Birth")
      .select("Year_Of_Birth", "First_Name", "Count")
  )

Vytvoření tabulky s rozšířenými zobrazeními dat

Protože rozdílové živé tabulky zpracovávají aktualizace kanálů jako řady grafů závislostí, můžete deklarovat vysoce rozšířená zobrazení, která power řídicí panely, BI a analýzy deklarují tabulky s konkrétní obchodní logikou.

Tabulky v rozdílových živých tabulkách jsou konceptuálně ekvivalentní materializovaným zobrazením. Na rozdíl od tradičních zobrazení sparku, která spouští logiku při každém dotazování zobrazení, ukládá tabulka Delta Live Tables nejnovější verzi dotazu do datových souborů. Protože rozdílové živé tabulky spravují aktualizace všech datových sad v kanálu, můžete naplánovat aktualizace kanálu tak, aby odpovídaly požadavkům na latenci pro materializovaná zobrazení a věděly, že dotazy na tyto tabulky obsahují nejnovější dostupnou verzi dat.

Tabulka definovaná následujícím kódem ukazuje koncepční podobnost s materializovaným zobrazením odvozeným z nadřazených dat ve vašem kanálu:

@dlt.table(
  comment="A table summarizing counts of the top baby names for New York for 2021."
)
def top_baby_names_2021():
  return (
    dlt.read("baby_names_prepared")
      .filter(expr("Year_Of_Birth == 2021"))
      .groupBy("First_Name")
      .agg(sum("Count").alias("Total_Count"))
      .sort(desc("Total_Count"))
      .limit(10)
  )

Pokud chcete nakonfigurovat kanál, který používá poznámkový blok, přečtěte si téma Vytvoření kanálu.

Implementace kanálu Delta Live Tables s SQL

Databricks doporučuje, aby uživatelé SQL vytvořili nové kanály ETL, ingestování a transformace v Azure Databricks jako upřednostňovaný způsob vytváření dynamických tabulek s SQL. Rozhraní SQL pro Delta Live Tables rozšiřuje standardní Spark SQL s mnoha novými klíčovými slovy, konstrukty a funkcemi s hodnotou tabulky. Tyto doplňky standardu SQL umožňují uživatelům deklarovat závislosti mezi datovými sadami a nasazovat infrastrukturu na úrovni produkčního prostředí, aniž by se museli učit nové nástroje nebo další koncepty.

Pro uživatele, kteří znají datové rámce Spark a kteří potřebují podporu pro rozsáhlejší testování a operace, které se obtížně implementují s SQL, jako jsou operace metaprogramování, doporučuje Databricks používat rozhraní Pythonu. Viz Implementace kanálu Delta Live Tables s Pythonem.

Stažení dat

Pokud chcete získat data pro tento příklad, zkopírujte následující kód, vložte je do nového poznámkového bloku a spusťte poznámkový blok. Možnosti vytváření poznámkových bloků najdete v tématu Vytvoření poznámkového bloku.

%sh
wget -O "/Volumes/<catalog-name>/<schema-name>/<volume-name>/babynames.csv" "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv"

Nahraďte <catalog-name>katalog, <volume-name> <schema-name>schéma a názvy svazků pro svazek katalogu Unity.

Vytvoření tabulky ze souborů v katalogu Unity

Ve zbytku tohoto příkladu zkopírujte následující fragmenty kódu SQL a vložte je do nového poznámkového bloku SQL odděleně od poznámkového bloku v předchozí části. Přidejte každý ukázkový fragment kódu SQL do vlastní buňky v poznámkovém bloku v uvedeném pořadí.

Delta Live Tables podporuje načítání dat ze všech formátů podporovaných službou Azure Databricks. Viz Možnosti formátu dat.

Všechny příkazy SQL Delta Live Tables používají CREATE OR REFRESH syntaxi a sémantiku. Když aktualizujete kanál, rozdílové živé tabulky určují, zda lze logicky správný výsledek pro tabulku provést prostřednictvím přírůstkového zpracování nebo pokud je vyžadován úplný výpočet.

Následující příklad vytvoří tabulku načtením dat ze souboru CSV uloženého ve svazku Katalogu Unity:

CREATE OR REFRESH MATERIALIZED VIEW baby_names_sql_raw
COMMENT "Popular baby first names in New York. This data was ingested from the New York State Department of Health."
AS SELECT Year, `First Name` AS First_Name, County, Sex, Count FROM read_files(
  '/Volumes/<catalog-name>/<schema-name>/<volume-name>/babynames.csv',
  format => 'csv',
  header => true,
  mode => 'FAILFAST')

Nahraďte <catalog-name>katalog, <volume-name> <schema-name>schéma a názvy svazků pro svazek katalogu Unity.

Přidání tabulky z upstreamové datové sady do kanálu

Virtuální schéma můžete použít live k dotazování dat z jiných datových sad deklarovaných v aktuálním kanálu Delta Live Tables. Deklarování nových tabulek tímto způsobem vytvoří závislost, kterou Delta Live Tables před spuštěním aktualizací automaticky přeloží. Schéma live je vlastní klíčové slovo implementované v rozdílových živých tabulkách, které lze nahradit cílovým schématem, pokud chcete publikovat datové sady. Viz Použití katalogu Unity s kanály Delta Live Tables a použití kanálů Delta Live Tables se starším metastorem Hive.

Následující kód obsahuje také příklady monitorování a vynucování kvality dat s očekáváním. Viz Správa kvality dat pomocí rozdílových živých tabulek.

CREATE OR REFRESH MATERIALIZED VIEW baby_names_sql_prepared(
  CONSTRAINT valid_first_name EXPECT (First_Name IS NOT NULL),
  CONSTRAINT valid_count EXPECT (Count > 0) ON VIOLATION FAIL UPDATE
)
COMMENT "New York popular baby first name data cleaned and prepared for analysis."
AS SELECT
  Year AS Year_Of_Birth,
  First_Name,
  Count
FROM live.baby_names_sql_raw;

Vytvoření rozšířeného zobrazení dat

Protože rozdílové živé tabulky zpracovávají aktualizace kanálů jako řady grafů závislostí, můžete deklarovat vysoce rozšířená zobrazení, která power řídicí panely, BI a analýzy deklarují tabulky s konkrétní obchodní logikou.

Následující dotaz používá materializované zobrazení k vytvoření rozšířeného zobrazení z upstreamových dat. Na rozdíl od tradičních zobrazení Sparku, která spouští logiku při každém dotazování zobrazení, materializovaná zobrazení ukládají nejnovější verzi dotazu do datových souborů. Protože rozdílové živé tabulky spravují aktualizace všech datových sad v kanálu, můžete naplánovat aktualizace kanálu tak, aby odpovídaly požadavkům na latenci pro materializovaná zobrazení a věděly, že dotazy na tyto tabulky obsahují nejnovější dostupnou verzi dat.

CREATE OR REFRESH MATERIALIZED VIEW top_baby_names_sql_2021
COMMENT "A table summarizing counts of the top baby names for New York for 2021."
AS SELECT
  First_Name,
  SUM(Count) AS Total_Count
FROM live.baby_names_sql_prepared
WHERE Year_Of_Birth = 2021
GROUP BY First_Name
ORDER BY Total_Count DESC
LIMIT 10;

Pokud chcete nakonfigurovat kanál, který používá poznámkový blok, pokračujte vytvořením kanálu.

Vytvoření kanálu

Poznámka:

  • Vzhledem k tomu, že výpočetní prostředky jsou plně spravované pro bezserverové kanály DLT, nejsou výpočetní nastavení k dispozici, když pro kanál vyberete bezserverovou verzi.
  • Informace o způsobilosti a povolení pro bezserverové kanály DLT najdete v tématu Povolení bezserverových výpočetních prostředků.

Delta Live Tables vytváří kanály překladem závislostí definovaných v poznámkových blocích nebo souborech (označovaných jako zdrojový kód) pomocí syntaxe delta živých tabulek. Každý soubor zdrojového kódu může obsahovat pouze jeden jazyk, ale v kanálu můžete kombinovat zdrojový kód různých jazyků.

  1. Na bočním panelu klikněte na Rozdílové živé tabulky a potom klikněte na Vytvořit kanál.
  2. Pojmenujte kanál.
  3. (Volitelné) Pokud chcete kanál spustit pomocí bezserverových kanálů DLT, zaškrtněte políčko Bezserverové . Když vyberete bezserverové nastavení, nastavení výpočetních prostředků se odebere z uživatelského rozhraní. Viz Konfigurace kanálu bezserverových živých tabulek Delta.
  4. (Volitelné) Vyberte edici produktu.
  5. Vyberte Aktivované pro režim kanálu.
  6. Nakonfigurujte jeden nebo více poznámkových bloků obsahujících zdrojový kód kanálu. Do textového pole Cesty zadejte cestu k poznámkovému bloku nebo kliknutím Ikona výběru souboru vyberte poznámkový blok.
  7. Vyberte cíl datových sad publikovaných kanálem, a to buď metastore Hive, nebo Katalog Unity. Viz Publikování datových sad.
    • Metastore Hive:
      • (Volitelné) Zadejte umístění úložiště pro výstupní data z kanálu. Pokud necháte umístění úložiště prázdné, systém použije výchozí umístění .
      • (Volitelné) Zadejte cílové schéma pro publikování datové sady do metastoru Hive.
    • Katalog Unity: Zadejte katalog a cílové schéma pro publikování datové sady do katalogu Unity.
  8. (Volitelné) Pokud jste nevybrali bezserverové nastavení, můžete pro kanál nakonfigurovat nastavení výpočetních prostředků. Další informace o možnostech pro nastavení výpočetních prostředků najdete v tématu Konfigurace výpočetních prostředků pro kanál Delta Live Tables.
  9. (Volitelné) Kliknutím na Přidat oznámení nakonfigurujete jednu nebo více e-mailových adres pro příjem oznámení o událostech kanálu. Viz Přidání e-mailových oznámení pro události kanálu.
  10. (Volitelné) Nakonfigurujte upřesňující nastavení pro kanál. Další informace o možnostech upřesňujících nastavení najdete v tématu Konfigurace kanálu Delta Live Tables.
  11. Klikněte na Vytvořit.

Po kliknutí na Vytvořit se zobrazí stránka Podrobnosti kanálu. Ke svému kanálu se dostanete také tak, že kliknete na název kanálu na kartě Delta Live Tables .

Spuštění aktualizace kanálu

Pokud chcete spustit aktualizaci kanálu, klikněte na Ikona Start tabulky Delta Live tlačítko v horním panelu. Systém vrátí zprávu s potvrzením, že váš kanál začíná.

Po úspěšném spuštění aktualizace systém Delta Live Tables:

  1. Spustí cluster pomocí konfigurace clusteru vytvořené systémem Delta Live Tables. Můžete také zadat vlastní konfiguraci clusteru.
  2. Vytvoří všechny tabulky, které neexistují, a zajistí správnost schématu pro všechny existující tabulky.
  3. Aktualizuje tabulky s nejnovějšími dostupnými daty.
  4. Po dokončení aktualizace se cluster vypne.

Poznámka:

Režim spouštění je ve výchozím nastavení nastavený na Produkční , který nasazuje dočasné výpočetní prostředky pro každou aktualizaci. Režim vývoje můžete použít ke změně tohoto chování, což umožňuje použití stejných výpočetních prostředků pro více aktualizací kanálu během vývoje a testování. Viz režimy vývoje a produkce.

Publikování datových sad

Datové sady Delta Live Tables můžete zpřístupnit pro dotazování publikováním tabulek do metastoru Hive nebo katalogu Unity. Pokud neurčíte cíl pro publikování dat, tabulky vytvořené v kanálech delta živých tabulek mají přístup pouze k jiným operacím ve stejném kanálu. Viz Použití kanálů Delta Live Tables se starším metastorem Hive a použití katalogu Unity s kanály Delta Live Tables.

Ukázkové poznámkové bloky zdrojového kódu

Tyto poznámkové bloky můžete importovat do pracovního prostoru Azure Databricks a použít je k nasazení kanálu Delta Live Tables. Viz Vytvoření kanálu.

Začínáme s poznámkovým blokem Delta Live Tables v Pythonu

Získat poznámkový blok

Začínáme s poznámkovým blokem SQL Delta Live Tables

Získat poznámkový blok

Ukázkové poznámkové bloky zdrojového kódu pro pracovní prostory bez katalogu Unity

Tyto poznámkové bloky můžete importovat do pracovního prostoru Azure Databricks bez povolení katalogu Unity a použít je k nasazení kanálu Delta Live Tables. Viz Vytvoření kanálu.

Začínáme s poznámkovým blokem Delta Live Tables v Pythonu

Získat poznámkový blok

Začínáme s poznámkovým blokem SQL Delta Live Tables

Získat poznámkový blok