Erfassen und Anzeigen der Datenherkunft mit Unity Catalog

Sie können Unity Catalog verwenden, um die Runtime-Datenherkunft über Abfragen hinweg zu erfassen, die auf Azure Databricks ausgeführt werden. Datenherkunft wird für alle Sprachen unterstützt und wird bis auf die Spaltenebene herunter erfasst. Datenherkunftsdaten umfassen Notebooks, Workflows und Dashboards im Zusammenhang mit der Abfrage. Die Herkunft kann im Katalog-Explorer in Quasi-Echtzeit visualisiert und über die Herkunftssystemtabellen programmgesteuert abgerufen werden.

Datenherkunft wird über alle Arbeitsbereiche hinweg aggregiert, die an einen Unity Catalog-Metastore angefügt sind. Dies bedeutet, dass die Datenherkunft, die in einem Arbeitsbereich erfasst wurde, in jedem Arbeitsbereich mit demselben Metastore sichtbar ist. Benutzer müssen über die richtigen Berechtigungen zum Anzeigen der Datenherkunftsdaten verfügen. Daten zur Datenherkunft werden 1 Jahr lang aufbewahrt.

In diesem Artikel wird beschrieben, wie Sie die Herkunft erfassen und mithilfe des Katalog-Explorers visualisieren. Informationen zum Zugreifen auf Herkunftsdaten mithilfe von Systemtabellen finden Sie unter Referenz zu Herkunftssystemtabellen. Informationen zum Nachverfolgen der Linien eines Machine Learning-Modells finden Sie unter Nachverfolgen der Datenlinie eines Modells im Unity-Katalog.

Anforderungen

Folgendes ist erforderlich, um die Datenherkunft mit Unity Catalog zu erfassen:

  • Ihr Arbeitsbereich muss für Unity Catalog aktiviert sein.

  • Tabellen müssen in einem Unity Catalog-Metastore registriert sein.

  • Abfragen müssen den Spark DataFrame (z. B. Spark SQL-Funktionen, die einen DataFrame zurückgeben) oder Databricks SQL-Schnittstellen verwenden. Beispiele für Databricks SQL- und PySpark-Abfragen finden Sie in den Beispielen.

  • Um die Datenherkunft einer Tabelle oder Ansicht anzuzeigen, müssen Benutzer über die Berechtigung BROWSE für den übergeordneten Katalog der Tabelle oder Ansicht verfügen.

  • Um Datenherkunftsinformationen für Notebooks, Workflows oder Dashboards anzuzeigen, müssen Benutzer über Berechtigungen für diese Objekte verfügen, wie sie in den Einstellungen für die Zugriffssteuerung des Arbeitsbereichs festgelegt sind. Siehe Datenherkunftsberechtigungen.

  • Um den Verlauf einer Unity Catalog-aktivierten Pipeline anzuzeigen, müssen Sie über CAN_VIEW-Berechtigungen für die Pipeline verfügen.

  • Möglicherweise müssen Sie Ihre ausgehenden Firewallregeln aktualisieren, um die Konnektivität mit dem Event Hub-Endpunkt auf der Azure Databricks-Steuerungsebene zu ermöglichen. Dies gilt in der Regel, wenn Ihr Azure Databricks-Arbeitsbereich in Ihrem eigenen VNet bereitgestellt wird (auch als VNet-Injektion bezeichnet). Informationen zum Abrufen des Event Hub-Endpunkts für Ihre Arbeitsbereichsregion finden Sie unter Die IP-Adressen von Metastore, Artefaktblobspeicher, Systemtabellenspeicher, Protokollblobspeicher und Event Hub-Endpunkt. Informationen zum Einrichten von benutzerdefinierten Routen (User-Defined Routes, UDR) für Azure Databricks finden Sie unter Benutzerdefinierte Routeneinstellungen für Azure Databricks.

Begrenzungen

  • Das Streaming zwischen Delta-Tabellen wird nur in Databricks Runtime 11.3 LTS oder höher unterstützt.

  • Da die Datenherkunft in einem rollierenden 1-Jahres-Fenster berechnet wird, wird eine vor mehr als 1 Jahr erfasste Datenherkunft nicht angezeigt. Wenn beispielsweise ein Auftrag oder eine Abfrage Daten aus Tabelle A liest und in Tabelle B schreibt, wird die Verknüpfung zwischen Tabelle A und Tabelle B nur 1 Jahr lang angezeigt.

    Sie können Daten zur Datenherkunft nach Zeitrahmen filtern. Wenn „Alle Datenherkunftsdaten“ ausgewählt ist, werden alle ab Juni 2023 gesammelten Datenherkunftsdaten angezeigt.

  • Workflows, die die runs submit-Anforderung der Auftrags-API verwenden, sind für die Anzeige der Datenherkunft nicht verfügbar. Die Datenherkunft auf Tabellen- und Spaltenebene wird weiterhin erfasst, wenn die runs submit-Anforderung verwendet wird, aber der Link zur Ausführung wird nicht erfasst.

  • Unity Catalog erfasst so weit wie möglich die Datenherkunft auf Spaltenebene. Es gibt jedoch einige Fälle, in denen die Datenherkunft auf Spaltenebene nicht erfasst werden kann.

  • Spaltenlinien werden nur unterstützt, wenn sowohl die Quelle als auch das Ziel nach Tabellenname referenziert werden (Beispiel: select * from <catalog>.<schema>.<table>). Spaltenzeilen können nicht erfasst werden, wenn die Quelle oder das Ziel durch Pfad adressiert werden (Beispiel: select * from delta."s3://<bucket>/<path>").

  • Die Datenherkunft erfasst keine Lesevorgänge in Tabellen mit Spaltenmasken. Siehe Filtern vertraulicher Tabellendaten mit Zeilenfiltern und Spaltenmasken.

  • Wenn eine Tabelle umbenannt wird, wird die Datenherkunft für die umbenannte Tabelle nicht erfasst.

  • Wenn Sie Spark SQL-Dataset-Prüfpunkte verwenden, wird die Herkunft nicht erfasst. Weitere Informationen finden Sie unter pyspark.sql.DataFrame.checkpoint in der Apache Spark-Dokumentation.

  • Unity Catalog erfasst in den meisten Fällen die Datenherkunft von Delta Live Tables-Pipelines. In einigen Fällen kann jedoch keine vollständige Herkunftsabdeckung garantiert werden, z. B. wenn Pipelines die APPLY CHANGES-API oder TEMPORARY-Tabellen verwenden.

Beispiele

Hinweis

  • In den folgenden Beispielen werden der Katalogname lineage_data und der Schemaname lineagedemoverwendet. Wenn Sie einen anderen Katalog und ein anderes Schema verwenden möchten, ändern Sie die Namen, die in den Beispielen verwendet werden.

  • Um dieses Beispiel abzuschließen, müssen Sie über die Berechtigungen CREATE und USE SCHEMA für ein Schema verfügen. Ein Metastore-Administrator, Katalogbesitzer oder Schemabesitzer kann diese Berechtigungen erteilen. Um beispielsweise allen Benutzer*innen in der Gruppe „data_engineers“ die Berechtigung zum Erstellen von Tabellen im lineagedemo-Schema im lineage_data-Katalog zu erteilen, kann ein*e Benutzer*in mit einer der oben genannten Berechtigungen oder Rollen die folgenden Abfragen ausführen:

    CREATE SCHEMA lineage_data.lineagedemo;
    GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
    

Erfassen und Erkunden der Datenherkunft

Verwenden Sie die folgenden Schritte, um Datenherkunftsdaten zu erfassen:

  1. Wechseln Sie zu Ihrer Landing Page von Azure Databricks, klicken Sie in der Seitenleiste auf Symbol „Neu”Neu, und wählen Sie aus dem Menü die Option Notebook aus.

  2. Geben Sie einen Namen für das Notbook ein, und wählen Sie SQL in der Standardsprache aus.

  3. Wählen Sie unter Cluster einen Cluster mit Zugriff auf Unity Catalog aus.

  4. Klicken Sie auf Erstellen.

  5. Geben Sie in der ersten Notebook-Zelle die folgenden Abfragen ein:

    CREATE TABLE IF NOT EXISTS
      lineage_data.lineagedemo.menu (
        recipe_id INT,
        app string,
        main string,
        dessert string
      );
    
    INSERT INTO lineage_data.lineagedemo.menu
        (recipe_id, app, main, dessert)
    VALUES
        (1,"Ceviche", "Tacos", "Flan"),
        (2,"Tomato Soup", "Souffle", "Creme Brulee"),
        (3,"Chips","Grilled Cheese","Cheesecake");
    
    CREATE TABLE
      lineage_data.lineagedemo.dinner
    AS SELECT
      recipe_id, concat(app," + ", main," + ",dessert)
    AS
      full_menu
    FROM
      lineage_data.lineagedemo.menu
    
  6. Um die Abfragen auszuführen, klicken Sie in die Zelle und drücken Sie Umschalt+Eingabe oder klicken Sie auf Ausführen – Menü und wählen Sie Zelle ausführen aus.

Wenn Sie den Katalog-Explorer verwenden möchten, um die von diesen Abfragen generierte Herkunft anzuzeigen, führen Sie die folgenden Schritte aus:

  1. Geben Sie in der oberen Leiste des Azure Databricks-Arbeitsbereichs im Feld Suchen den Suchbegriff lineage_data.lineagedemo.dinner ein und klicken Sie auf lineage_data.lineagedemo.dinner in Databricks suchen.

  2. Klicken Sie unter Tabellen auf die dinner-Tabelle.

  3. Wählen Sie die Registerkarte Herkunft aus. Der Herkunftsbereich wird angezeigt und zeigt zugehörige Tabellen an (in diesem Beispiel die Tabelle menu).

  4. Wenn Sie ein interaktives Diagramm der Datenherkunft anzeigen möchten, klicken Sie auf Datenherkunftsdiagramm anzeigen. Standardmäßig wird eine Ebene im Diagramm angezeigt. Sie können auf das Symbol Pluszeichensymbol auf einem Knoten klicken, um weitere Verbindungen anzuzeigen, falls diese verfügbar sind.

  5. Klicken Sie auf einen Pfeil, der Knoten im Datenherkunftsdiagramm verbindet, um den Bereich Datenherkunftsverbindung zu öffnen. Der Bereich Datenherkunftsverbindung zeigt Details zur Verbindung, einschließlich Quell- und Zieltabellen, Notebooks und Workflows.

    Herkunftsdiagramm

  6. Wenn Sie das mit der dinner-Tabelle verknüpfte Notizbuch anzeigen möchten, wählen Sie das Notizbuch im Bereich Datenherkunftsverbindung aus oder schließen Sie das Datenherkunftsdiagramm und klicken Sie auf Notebooks. Um das Notebook in einer neuen Registerkarte zu öffnen, klicken Sie auf den Namen des Notebooks.

  7. Klicken Sie zum Anzeigen der Datenherkunft auf Spaltenebene auf eine Spalte im Diagramm, um Links zu zugehörigen Spalten anzuzeigen. Wenn Sie beispielsweise auf die Spalte „full_menu“ klicken, werden die Upstreamspalten angezeigt, von denen die Spalte abgeleitet wurde:

    Spaltenherkunft für „full menu”

Verwenden Sie die folgenden Schritte, um das Erstellen und Anzeigen der Datenherkunft mit einer anderen Sprache, z. B. Python, zu veranschaulichen:

  1. Öffnen Sie das zuvor erstellte Notebook, erstellen Sie eine neue Zelle und geben Sie den folgenden Python-Code ein:

    %python
    from pyspark.sql.functions import rand, round
    df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id")
    
    df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price")
    
    dinner = spark.read.table("lineage_data.lineagedemo.dinner")
    price = spark.read.table("lineage_data.lineagedemo.price")
    
    dinner_price = dinner.join(price, on="recipe_id")
    dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
    
  2. Führen Sie die Zelle aus, indem Sie in die Zelle klicken und Umschalt+Eingabe drücken oder indem Sie auf Ausführen – Menü klicken und Zelle ausführen auswählen.

  3. Geben Sie in der oberen Leiste des Azure Databricks-Arbeitsbereichs im Feld Suchen den Suchbegriff lineage_data.lineagedemo.price ein und klicken Sie auf lineage_data.lineagedemo.price in Databricks suchen.

  4. Klicken Sie unter Tabellen auf die price-Tabelle.

  5. Wählen Sie die Registerkarte Datenherkunft aus und klicken Sie auf Datenherkunftsdiagramm anzeigen. Klicken Sie auf das Symbol Pluszeichensymbol, um die von den SQL- und Python-Abfragen generierte Datenherkunft zu ermitteln.

    Aufgeklapptes Herkunftsdiagramm

  6. Klicken Sie auf einen Pfeil, der Knoten im Datenherkunftsdiagramm verbindet, um den Bereich Datenherkunftsverbindung zu öffnen. Der Bereich Datenherkunftsverbindung zeigt Details zur Verbindung, einschließlich Quell- und Zieltabellen, Notebooks und Workflows.

Erfassen und Anzeigen der Workflow-Herkunft

Die Datenherkunft wird auch für jeden Workflow erfasst, der in Unity Catalog liest oder schreibt. Führen Sie die folgenden Schritte aus, um die Anzeigeherkunft für einen Azure Databricks-Workflow zu veranschaulichen:

  1. Klicken Sie in der Seitenleiste auf Symbol „Neu”Neu, und wählen Sie aus dem Menü die Option Notebook aus.

  2. Geben Sie einen Namen für das Notbook ein, und wählen Sie SQL in der Standardsprache aus.

  3. Klicken Sie auf Erstellen.

  4. Geben Sie in der ersten Notebook-Zelle die folgenden Abfragen ein:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. Klicken Sie auf Planen in der oberen Leiste. Wählen Sie im Dialogfeld „Planen“ die Option Manuell aus, wählen Sie ein Cluster mit Zugriff auf Unity Catalog aus, und klicken Sie auf Erstellen.

  6. Klicken Sie auf Jetzt ausführen.

  7. Geben Sie in der oberen Leiste des Azure Databricks-Arbeitsbereichs im Feld Suchen den Suchbegriff lineage_data.lineagedemo.menu ein und klicken Sie auf lineage_data.lineagedemo.menu in Databricks suchen.

  8. Klicken Sie unter Tabellen > Alle Tabellen anzeigen auf die Tabelle menu.

  9. Wählen Sie die Registerkarte Datenherkunft aus, klicken Sie auf Workflows und wählen Sie die Registerkarte Nachgelagert aus. Der Auftragsname erscheint unter Auftragsname als ein Verbraucher der menu-Tabelle.

Erfassen und Anzeigen der Dashboard-Datenherkunft

Um das Anzeigen der Datenherkunft eines SQL-Dashboards zu veranschaulichen, führen Sie die folgenden Schritte aus:

  1. Wechseln Sie zu Ihrer Azure Databricks-Startseite, und öffnen Sie den Katalog-Explorer, indem Sie in der Randleiste auf Katalog klicken.
  2. Klicken Sie auf den Katalognamen, klicken Sie auf Datenherkunftsdemound wählen Sie die menu-Tabelle aus. Sie können auch das Textfeld Tabellen suchen in der oberen Leiste verwenden, um nach der menu-Tabelle zu suchen.
  3. Klicken Sie auf Aktionen > Erstellen eines Schnelldashboards.
  4. Wählen Sie Spalten aus, die dem Dashboard hinzugefügt werden sollen, und klicken Sie auf Erstellen.
  5. Geben Sie in der oberen Leiste des Azure Databricks-Arbeitsbereichs im Feld Suchen den Suchbegriff lineage_data.lineagedemo.menu ein und klicken Sie auf lineage_data.lineagedemo.menu in Databricks suchen.
  6. Klicken Sie unter Tabellen > Alle Tabellen anzeigen auf die Tabelle menu.
  7. Wählen Sie die Registerkarte Datenherkunft aus und klicken Sie auf Dashboards. Der Dashboardname wird unter Dashboardname als Verbraucher der Menütabelle angezeigt.

Herkunftsberechtigungen

Datenherkunftsdiagramme haben das gleiche Berechtigungsmodell wie Unity Catalog. Wenn ein Benutzer nicht über die Berechtigungen BROWSE oder SELECT für eine Tabelle verfügt, kann er die Datenherkunft nicht erkunden. Darüber hinaus können Benutzer*innen nur Notebooks, Workflows und Dashboards sehen, für die Sie die Berechtigung zum Anzeigen haben. Wenn Sie beispielsweise die folgenden Befehle für einen Nicht-Administratorbenutzer userA ausführen:

GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;

Wenn userA das Liniendiagramm für die Tabelle lineage_data.lineagedemo.menu anzeigt, wird die Tabelle menu angezeigt. Sie können keine Informationen zu zugehörigen Tabellen anzeigen, z. B. die nachgeschaltete lineage_data.lineagedemo.dinner Tabelle. Die dinner-Tabelle wird als masked-Knoten in der Anzeige für userA angezeigt und userA kann das Diagramm nicht ausklappen, um nachgelagerte Tabellen aus Tabellen anzuzeigen, für er keine Zugriffsberechtigung hat.

Wenn Sie den folgenden Befehl ausführen, um einem Nicht-Administrator-Benutzer userB die Berechtigung BROWSE zu erteilen:

GRANT BROWSE on lineage_data to `userA@company.com`;

userB kann nun das Liniendiagramm für eine beliebige Tabelle im Schema lineage_dataanzeigen.

Weitere Informationen zum Verwalten des Zugriffs auf sicherungsfähige Objekte in Unity Catalog finden Sie unter Verwalten von Berechtigungen in Unity Catalog. Weitere Informationen zum Verwalten des Zugriffs auf Arbeitsbereichsobjekte wie Notebooks, Workflows und Dashboards finden Sie unter den Zugriffssteuerungslisten.

Löschen von Datenherkunftsdaten

Warnung

Die folgenden Anweisungen löschen alle Objekte, die im Unity Catalog gespeichert sind. Verwenden Sie diese Anweisungen nur bei Bedarf. Beispielsweise, um Compliance-Anforderungen zu erfüllen.

Um Datenherkunftsdaten zu löschen, müssen Sie den Metastore löschen, der die Unity Catalog-Objekte verwaltet. Weitere Informationen zum Löschen des Metastores finden Sie unter Löschen eines Metastores. Daten werden innerhalb von 90 Tagen gelöscht.

Programmgesteuertes Abfragen der Datenherkunft

Verwenden Sie die Herkunftssystemtabellen, um Herkunftsdaten programmgesteuert abzufragen. Ausführliche Anweisungen finden Sie unter Überwachen der Nutzung mit Systemtabellen und Referenz zu Herkunftssystemtabellen.