Zelfstudie: Uw eerste Delta Live Tables-pijplijn uitvoeren

Belangrijk

Serverloze DLT-pijplijnen bevinden zich in openbare preview. Neem contact op met uw Azure Databricks-accountteam voor meer informatie over het inschakelen van serverloze DLT-pijplijnen.

In deze zelfstudie leert u hoe u een Delta Live Tables-pijplijn configureert vanuit code in een Databricks-notebook en hoe u de pijplijn uitvoert door een pijplijnupdate te activeren. Deze zelfstudie bevat een voorbeeldpijplijn voor het opnemen en verwerken van een voorbeeldgegevensset met voorbeeldcode met behulp van de Python- en SQL-interfaces. U kunt ook de instructies in deze zelfstudie gebruiken om een pijplijn te maken met notebooks met een correct gedefinieerde syntaxis van Delta Live Tables.

U kunt Pijplijnen voor Delta Live Tables configureren en updates activeren met behulp van de gebruikersinterface van de Azure Databricks-werkruimte of opties voor geautomatiseerde hulpprogramma's zoals de API, CLI, Databricks Asset Bundles of als een taak in een Databricks-werkstroom. Om vertrouwd te raken met de functionaliteit en functies van Delta Live Tables, raadt Databricks u aan eerst de gebruikersinterface te gebruiken om pijplijnen te maken en uit te voeren. Wanneer u een pijplijn in de gebruikersinterface configureert, genereert Delta Live Tables bovendien een JSON-configuratie voor uw pijplijn die kan worden gebruikt om uw programmatische werkstromen te implementeren.

Als u de functionaliteit van Delta Live Tables wilt demonstreren, downloadt u in de voorbeelden in deze zelfstudie een openbaar beschikbare gegevensset. Databricks heeft echter verschillende manieren om verbinding te maken met gegevensbronnen en gegevens op te nemen die pijplijnen gebruiken voor het implementeren van praktijkgebruiksscenario's. Zie Gegevens opnemen met Delta Live Tables.

Vereisten

  • Als u een niet-serverloze pijplijn wilt starten, moet u de machtiging voor het maken van clusters of toegang hebben tot een clusterbeleid dat een Delta Live Tables-cluster definieert. Tijdens de Delta Live Tables-runtime wordt een cluster gemaakt voordat uw pijplijn wordt uitgevoerd. Dit mislukt als u niet over de juiste machtiging beschikt.

  • Als u de voorbeelden in deze zelfstudie wilt gebruiken, moet Unity Catalog zijn ingeschakeld voor uw werkruimte.

  • U moet over de volgende machtigingen beschikken in Unity Catalog:

    • READ VOLUME en WRITE VOLUME, of ALL PRIVILEGES, voor het my-volume volume.
    • USE SCHEMA of ALL PRIVILEGES voor het default schema.
    • USE CATALOG of ALL PRIVILEGES voor de main catalogus.

    Als u deze machtigingen wilt instellen, raadpleegt u uw Databricks-beheerder of Unity Catalog-bevoegdheden en beveiligbare objecten.

  • In de voorbeelden in deze zelfstudie wordt een Unity Catalog-volume gebruikt om voorbeeldgegevens op te slaan. Als u deze voorbeelden wilt gebruiken, maakt u een volume en gebruikt u de catalogus, het schema en de volumenamen van dat volume om het volumepad in te stellen dat door de voorbeelden wordt gebruikt.

Notitie

Als voor uw werkruimte Unity Catalog niet is ingeschakeld, worden notebooks met voorbeelden waarvoor Unity Catalog niet is vereist, gekoppeld aan dit artikel. Als u deze voorbeelden wilt gebruiken, selecteert u Hive metastore deze optie als opslagoptie wanneer u de pijplijn maakt.

Waar voert u Delta Live Tables-query's uit?

Delta Live Tables-query's worden voornamelijk geïmplementeerd in Databricks-notebooks, maar Delta Live Tables is niet ontworpen om interactief in notebookcellen te worden uitgevoerd. Het uitvoeren van een cel met de syntaxis van Delta Live Tables in een Databricks-notebook resulteert in een foutbericht. Als u uw query's wilt uitvoeren, moet u uw notebooks configureren als onderdeel van een pijplijn.

Belangrijk

  • U kunt niet vertrouwen op de volgorde van de cel-op-celuitvoering van notebooks bij het schrijven van query's voor Delta Live-tabellen. Delta Live Tables evalueert en voert alle code uit die is gedefinieerd in notebooks, maar heeft een ander uitvoeringsmodel dan een notebook Alle opdrachten uitvoeren.
  • U kunt talen niet combineren in één broncodebestand van Delta Live Tables. Een notebook kan bijvoorbeeld alleen Python-query's of SQL-query's bevatten. Als u meerdere talen in een pijplijn moet gebruiken, gebruikt u meerdere taalspecifieke notebooks of bestanden in de pijplijn.

U kunt ook Python-code gebruiken die is opgeslagen in bestanden. U kunt bijvoorbeeld een Python-module maken die kan worden geïmporteerd in uw Python-pijplijnen of door de gebruiker gedefinieerde Python-functies (UDF's) definiëren voor gebruik in SQL-query's. Zie Python-modules importeren uit Git-mappen of werkruimtebestanden voor meer informatie over het importeren van Python-modules. Zie Door de gebruiker gedefinieerde scalaire functies - Python voor meer informatie over het gebruik van Python UDF's.

Voorbeeld: Gegevens van de babynamen van New York opnemen en verwerken

In het voorbeeld in dit artikel wordt gebruikgemaakt van een openbaar beschikbare gegevensset die records van de babynamen van New York State bevat. Deze voorbeelden laten zien hoe u een Delta Live Tables-pijplijn gebruikt om:

  • Onbewerkte CSV-gegevens lezen uit een openbaar beschikbare gegevensset in een tabel.
  • Lees de records uit de onbewerkte gegevenstabel en gebruik de verwachtingen van Delta Live Tables om een nieuwe tabel te maken die opgeschoonde gegevens bevat.
  • Gebruik de opgeschoonde records als invoer voor Delta Live Tables-query's waarmee afgeleide gegevenssets worden gemaakt.

Deze code demonstreert een vereenvoudigd voorbeeld van de medalsight-architectuur. Zie Wat is de medaille-lakehouse-architectuur?

Implementaties van dit voorbeeld zijn beschikbaar voor de Python - en SQL-interfaces . U kunt de stappen volgen om nieuwe notebooks te maken die de voorbeeldcode bevatten, of u kunt verdergaan met het maken van een pijplijn en een van de notebooks op deze pagina gebruiken.

Een Delta Live Tables-pijplijn implementeren met Python

Python-code waarmee Gegevenssets voor Delta Live Tables worden gemaakt, moeten DataFrames retourneren, vertrouwd met gebruikers met PySpark of Pandas voor Spark. Voor gebruikers die niet bekend zijn met DataFrames, raadt Databricks het gebruik van de SQL-interface aan. Zie Een Delta Live Tables-pijplijn implementeren met SQL.

Alle Python-API's voor Delta Live Tables worden geïmplementeerd in de dlt module. Uw Delta Live Tables-pijplijncode die is geïmplementeerd met Python, moet de dlt module expliciet boven aan Python-notebooks en -bestanden importeren. Delta Live Tables verschilt van veel Python-scripts op een belangrijke manier: u roept niet de functies aan die gegevensopname en transformatie uitvoeren om Gegevenssets van Delta Live Tables te maken. In plaats daarvan interpreteert Delta Live Tables de decoratorfuncties van de dlt module in alle bestanden die in een pijplijn zijn geladen en bouwt een gegevensstroomgrafiek.

Als u het voorbeeld in deze zelfstudie wilt implementeren, kopieert en plakt u de volgende Python-code in een nieuw Python-notebook. U moet elk voorbeeldcodefragment toevoegen aan een eigen cel in het notebook in de beschreven volgorde. Zie Een notitieblok maken als u de opties voor het maken van notitieblokken wilt bekijken.

Notitie

Wanneer u een pijplijn met de Python-interface maakt, worden standaard tabelnamen gedefinieerd door functienamen. In het volgende Python-voorbeeld worden bijvoorbeeld drie tabellen gemaakt met de naam baby_names_raw, baby_names_prepareden top_baby_names_2021. U kunt de tabelnaam overschrijven met behulp van de name parameter. Zie Een gerealiseerde weergave of streamingtabel voor Delta Live-tabellen maken.

De module Delta Live Tables importeren

Alle Python-API's voor Delta Live Tables worden geïmplementeerd in de dlt module. Importeer de dlt module expliciet boven aan Python-notebooks en -bestanden.

In het volgende voorbeeld ziet u deze import, naast importinstructies voor pyspark.sql.functions.

import dlt
from pyspark.sql.functions import *

De gegevens downloaden

Als u de gegevens voor dit voorbeeld wilt ophalen, downloadt u een CSV-bestand en slaat u het op als volgt op in het volume:

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')}")

Vervang , <schema-name>en <volume-name> door <catalog-name>de catalogus-, schema- en volumenamen voor een Unity Catalog-volume.

Een tabel maken op basis van bestanden in objectopslag

Delta Live Tables ondersteunt het laden van gegevens uit alle indelingen die worden ondersteund door Azure Databricks. Zie opties voor gegevensindeling.

De @dlt.table decorator vertelt Delta Live Tables om een tabel te maken die het resultaat bevat van een DataFrame functie die wordt geretourneerd. Voeg de @dlt.table decorator toe vóór een Python-functiedefinitie die een Spark DataFrame retourneert om een nieuwe tabel te registreren in Delta Live Tables. In het volgende voorbeeld ziet u hoe u de functienaam als tabelnaam gebruikt en een beschrijvende opmerking toevoegt aan de tabel:

@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

Een tabel toevoegen vanuit een upstream-gegevensset in de pijplijn

U kunt gegevens dlt.read() lezen uit andere gegevenssets die zijn gedeclareerd in uw huidige Delta Live Tables-pijplijn. Als u nieuwe tabellen op deze manier declareren, wordt een afhankelijkheid gemaakt die Delta Live Tables automatisch oplost voordat updates worden uitgevoerd. De volgende code bevat ook voorbeelden van bewaking en het afdwingen van gegevenskwaliteit met verwachtingen. Zie Gegevenskwaliteit beheren met Delta Live Tables.

@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")
  )

Een tabel maken met verrijkte gegevensweergaven

Omdat Delta Live Tables updates van pijplijnen verwerkt als een reeks afhankelijkheidsgrafieken, kunt u maximaal verrijkte weergaven declareren die dashboards, BI en analyses mogelijk maken door tabellen met specifieke bedrijfslogica te declareren.

Tabellen in Delta Live Tables zijn conceptueel gelijk aan gerealiseerde weergaven. Terwijl traditionele weergaven in Spark-uitvoeringslogica telkens wanneer de weergave wordt opgevraagd, worden in een Delta Live Tables-tabel de meest recente versie van de queryresultaten opgeslagen in gegevensbestanden. Omdat Delta Live Tables updates beheert voor alle gegevenssets in een pijplijn, kunt u pijplijnupdates plannen om te voldoen aan latentievereisten voor gerealiseerde weergaven en weten dat query's voor deze tabellen de meest recente versie van de beschikbare gegevens bevatten.

De tabel die door de volgende code is gedefinieerd, toont de conceptuele gelijkenis met een gerealiseerde weergave die is afgeleid van upstreamgegevens in uw pijplijn:

@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)
  )

Zie Een pijplijn maken om een pijplijn te configureren die gebruikmaakt van het notebook.

Een Delta Live Tables-pijplijn implementeren met SQL

Databricks raadt Delta Live Tables aan met SQL als voorkeur voor SQL-gebruikers om nieuwe ETL-, opname- en transformatiepijplijnen te bouwen in Azure Databricks. De SQL-interface voor Delta Live Tables breidt standaard Spark SQL uit met veel nieuwe trefwoorden, constructies en tabelwaardefuncties. Met deze toevoegingen aan standaard-SQL kunnen gebruikers afhankelijkheden tussen gegevenssets declareren en infrastructuur op productieniveau implementeren zonder nieuwe hulpprogramma's of aanvullende concepten te leren.

Voor gebruikers die bekend zijn met Spark DataFrames en die ondersteuning nodig hebben voor uitgebreidere tests en bewerkingen die moeilijk te implementeren zijn met SQL, zoals metaprogrammeringsbewerkingen, raadt Databricks aan om de Python-interface te gebruiken. Zie voorbeeld: Gegevens van babynamen in New York opnemen en verwerken.

De gegevens downloaden

Als u de gegevens voor dit voorbeeld wilt ophalen, kopieert u de volgende code, plakt u deze in een nieuw notebook en voert u het notebook uit. Zie Een notitieblok maken als u de opties voor het maken van notitieblokken wilt bekijken.

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

Vervang , <schema-name>en <volume-name> door <catalog-name>de catalogus-, schema- en volumenamen voor een Unity Catalog-volume.

Een tabel maken op basis van bestanden in Unity Catalog

In de rest van dit voorbeeld kopieert u de volgende SQL-fragmenten en plakt u deze in een nieuw SQL-notebook, gescheiden van het notebook in de vorige sectie. U moet elk sql-voorbeeldfragment toevoegen aan een eigen cel in het notebook in de beschreven volgorde.

Delta Live Tables ondersteunt het laden van gegevens uit alle indelingen die worden ondersteund door Azure Databricks. Zie opties voor gegevensindeling.

Alle SQL-instructies voor Delta Live Tables maken gebruik van CREATE OR REFRESH syntaxis en semantiek. Wanneer u een pijplijn bijwerkt, bepaalt Delta Live Tables of het logisch juiste resultaat voor de tabel kan worden bereikt via incrementele verwerking of als volledige hercomputatie is vereist.

In het volgende voorbeeld wordt een tabel gemaakt door gegevens te laden uit het CSV-bestand dat is opgeslagen in het Unity Catalog-volume:

CREATE OR REFRESH LIVE TABLE 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')

Vervang , <schema-name>en <volume-name> door <catalog-name>de catalogus-, schema- en volumenamen voor een Unity Catalog-volume.

Een tabel uit een upstream-gegevensset toevoegen aan de pijplijn

U kunt het live virtuele schema gebruiken om gegevens op te vragen uit andere gegevenssets die zijn gedeclareerd in uw huidige Delta Live Tables-pijplijn. Als u nieuwe tabellen op deze manier declareren, wordt een afhankelijkheid gemaakt die Delta Live Tables automatisch oplost voordat updates worden uitgevoerd. Het live schema is een aangepast trefwoord dat is geïmplementeerd in Delta Live-tabellen die kunnen worden vervangen door een doelschema als u uw gegevenssets wilt publiceren. Zie Unity Catalog gebruiken met uw Delta Live Tables-pijplijnen en gegevens van Delta Live Tables publiceren naar de Hive-metastore.

De volgende code bevat ook voorbeelden van bewaking en het afdwingen van gegevenskwaliteit met verwachtingen. Zie Gegevenskwaliteit beheren met Delta Live Tables.

CREATE OR REFRESH LIVE TABLE 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;

Een verrijkte gegevensweergave maken

Omdat Delta Live Tables updates van pijplijnen verwerkt als een reeks afhankelijkheidsgrafieken, kunt u maximaal verrijkte weergaven declareren die dashboards, BI en analyses mogelijk maken door tabellen met specifieke bedrijfslogica te declareren.

Livetabellen zijn conceptueel gelijk aan gerealiseerde weergaven. Terwijl traditionele weergaven in Spark-uitvoeringslogica telkens wanneer de weergave wordt opgevraagd, worden in livetabellen de meest recente versie van de queryresultaten opgeslagen in gegevensbestanden. Omdat Delta Live Tables updates beheert voor alle gegevenssets in een pijplijn, kunt u pijplijnupdates plannen om te voldoen aan latentievereisten voor gerealiseerde weergaven en weten dat query's voor deze tabellen de meest recente versie van de beschikbare gegevens bevatten.

Met de volgende code wordt een verrijkte gerealiseerde weergave van upstream-gegevens gemaakt:

CREATE OR REFRESH LIVE TABLE 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;

Als u een pijplijn wilt configureren die gebruikmaakt van het notebook, gaat u door met het maken van een pijplijn.

Een pijplijn maken

Delta Live Tables maakt pijplijnen door afhankelijkheden op te lossen die zijn gedefinieerd in notebooks of bestanden ( broncode of bibliotheken genoemd) met behulp van de syntaxis van Delta Live Tables. Elk broncodebestand kan slechts één taal bevatten, maar u kunt bibliotheken van verschillende talen in uw pijplijn combineren.

  1. Klik op Delta Live-tabellen in de zijbalk en klik op Pijplijn maken.
  2. Geef de pijplijn een naam.
  3. (Optioneel) Schakel het selectievakje Serverloos in om volledig beheerde berekeningen voor deze pijplijn te gebruiken. Wanneer u Serverloos selecteert, worden de compute-instellingen verwijderd uit de gebruikersinterface.
  4. (Optioneel) Selecteer een producteditie.
  5. Selecteer Geactiveerd voor de pijplijnmodus.
  6. Configureer een of meer notebooks die de broncode voor de pijplijn bevatten. Voer in het tekstvak Paden het pad naar een notitieblok in of klik Pictogram Bestandskiezer om een notitieblok te selecteren.
  7. Selecteer een bestemming voor gegevenssets die zijn gepubliceerd door de pijplijn, ofwel de Hive-metastore of Unity Catalog. Zie Gegevenssets publiceren.
    • Hive-metastore:
      • (Optioneel) Voer een opslaglocatie in voor uitvoergegevens uit de pijplijn. Het systeem gebruikt een standaardlocatie als u de opslaglocatie leeg laat.
      • (Optioneel) Geef een doelschema op om uw gegevensset te publiceren naar de Hive-metastore.
    • Unity Catalog: Geef een catalogus en een doelschema op om uw gegevensset te publiceren naar Unity Catalog.
  8. (Optioneel) Als u serverloos niet hebt geselecteerd, kunt u rekeninstellingen voor de pijplijn configureren. Zie Pijplijninstellingen configureren voor Delta Live Tables voor meer informatie over opties voor rekeninstellingen.
  9. (Optioneel) Klik op Melding toevoegen om een of meer e-mailadressen te configureren voor het ontvangen van meldingen voor pijplijn gebeurtenissen. Zie E-mailmeldingen toevoegen voor pijplijn gebeurtenissen.
  10. (Optioneel) Configureer geavanceerde instellingen voor de pijplijn. Zie Pijplijninstellingen configureren voor Delta Live Tables voor meer informatie over opties voor geavanceerde instellingen.
  11. Klik op Create.

Het systeem geeft de pagina Pijplijndetails weer nadat u op Maken hebt geklikt. U hebt ook toegang tot uw pijplijn door op de naam van de pijplijn te klikken op het tabblad Delta Live Tables .

Een pijplijnupdate starten

Als u een update voor een pijplijn wilt starten, klikt u op de Startpictogram voor Delta Live-tabellen knop in het bovenste deelvenster. Het systeem retourneert een bericht waarin wordt bevestigd dat uw pijplijn wordt gestart.

Nadat de update is gestart, is het Delta Live Tables-systeem:

  1. Hiermee start u een cluster met behulp van een clusterconfiguratie die is gemaakt door het Delta Live Tables-systeem. U kunt ook een aangepaste clusterconfiguratie opgeven.
  2. Hiermee maakt u tabellen die niet bestaan en zorgt u ervoor dat het schema juist is voor bestaande tabellen.
  3. Hiermee worden tabellen bijgewerkt met de meest recente gegevens die beschikbaar zijn.
  4. Sluit het cluster af wanneer de update is voltooid.

Notitie

De uitvoeringsmodus is standaard ingesteld op Productie , waarmee tijdelijke rekenresources voor elke update worden geïmplementeerd. U kunt de ontwikkelingsmodus gebruiken om dit gedrag te wijzigen, zodat dezelfde rekenresources kunnen worden gebruikt voor meerdere pijplijnupdates tijdens het ontwikkelen en testen. Zie Ontwikkelings- en productiemodi.

Gegevenssets publiceren

U kunt Delta Live Tables-gegevenssets beschikbaar maken voor het uitvoeren van query's door tabellen te publiceren naar de Hive-metastore of Unity Catalog. Als u geen doel opgeeft voor het publiceren van gegevens, kunnen tabellen die zijn gemaakt in Delta Live Tables-pijplijnen alleen worden geopend door andere bewerkingen in dezelfde pijplijn. Zie Gegevens van Delta Live Tables publiceren naar de Hive-metastore en Unity Catalog gebruiken met uw Delta Live Tables-pijplijnen.

Voorbeeld van broncodenotebooks

U kunt deze notebooks importeren in een Azure Databricks-werkruimte en deze gebruiken om een Delta Live Tables-pijplijn te implementeren. Zie Een pijplijn maken.

Aan de slag met Python-notebook voor Delta Live Tables

Notebook downloaden

Aan de slag met SQL-notebook voor Delta Live Tables

Notebook downloaden

Voorbeeld van broncodenotebooks voor werkruimten zonder Unity Catalog

U kunt deze notebooks importeren in een Azure Databricks-werkruimte zonder Unity Catalog ingeschakeld en deze gebruiken om een Delta Live Tables-pijplijn te implementeren. Zie Een pijplijn maken.

Aan de slag met Python-notebook voor Delta Live Tables

Notebook downloaden

Aan de slag met SQL-notebook voor Delta Live Tables

Notebook downloaden