Referenz zu Herkunftssystemtabellen
Wichtig
Diese Systemtabelle befindet sich in der Public Preview. Um auf die Tabelle zuzugreifen, muss das Schema in Ihrem system
Katalog aktiviert sein. Weitere Informationen finden Sie unter Aktivieren des Systemtabellenschemas.
Dieser Artikel bietet eine Übersicht über die beiden Systemtabellen für die Datenherkunft. Diese Systemtabellen bauen auf dem Datenherkunftsfeature von Unity Catalog auf und ermöglichen programmgesteuertes Abfragen von Datenherkunftsdaten für die Entscheidungsfindung und für Berichte.
Hinweis
Beide Datenherkunftstabellen stellen eine Teilmenge aller Lese-/Schreibereignisse dar, da eine Erfassung der Datenherkunft nicht immer möglich ist. Datensätze werden nur ausgegeben, wenn die Datenherkunft abgeleitet werden kann.
Tabelle für die Tabellendatenherkunft
Die Systemtabelle für die Tabellendatenherkunft enthält einen Datensatz für jedes Lese- oder Schreibereignis in einer Unity Catalog-Tabelle oder an einem Unity Catalog-Pfad. Dies umfasst unter anderem Auftragsausführungen, Notebookausführungen und Dashboards, die mit dem Lese- oder Schreibereignis aktualisiert wurden.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.access.table_lineage
.
Tabelle für die Spaltendatenherkunft
Die Tabelle für die Spaltendatenherkunft enthält keine Ereignisse ohne Quelle. Wenn Sie beispielsweise etwas mit expliziten Werten in eine Spalte einfügen, wird dies nicht erfasst. Wenn Sie eine Spalte lesen, wird sie unabhängig davon erfasst, ob Sie die Ausgabe schreiben. Die Spaltendatenherkunft wird für Delta Live Tables nicht unterstützt.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.access.column_lineage
.
Schema der Systemtabellen für die Datenherkunft
Die Systemtabellen für die Datenherkunft verwenden das folgende Schema. Im Schema für die Tabellendatenherkunft sind source_column_name
und target_column_name
nicht enthalten.
Spaltenname | Datentyp | Beschreibung | Beispiel |
---|---|---|---|
account_id |
Zeichenfolge | Die ID des Azure Databricks-Kontos. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
Zeichenfolge | Die ID des Unity Catalog-Metastore. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
Zeichenfolge | Die ID des Arbeitsbereichs. | 123456789012345 |
entity_type |
Zeichenfolge | Der Art der Entität, von der die Datenherkunftstransaktion erfasst wurde. Der Wert lautet NOTEBOOK , JOB , PIPELINE , DASHBOARD_V3 (Dashboard), DBSQL_DASHBOARD (Legacy-Dashboard), DBSQL_QUERY , ODER NULL . |
NOTEBOOK |
entity_id |
Zeichenfolge | Der ID der Entität, von der die Datenherkunftstransaktion erfasst wurde. Falls entity_type den Wert NULL hat, hat entity_id den Wert NULL . |
– Notebook: 23098402394234 – Auftrag: 23098402394234 – Databricks SQL-Abfrage: e9cd8a31-de2f-4206-adfa-4f6605d68d88 – Dashboard: 01ef070d110715f2b6d3061b8bda89ea – Legacy-Dashboard: e9cd8a31-de2f-4206-adfa-4f6605d68d88 – Pipeline: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
Zeichenfolge | ID, um die eindeutige Ausführung der Entität zu beschreiben, oder NULL . Dies unterscheidet sich je nach Entitätstyp:– Notebook: command_run_id – Auftrag: job_run_id – Databricks SQL-Abfrage: query_run_id – Dashboard: query_run_id – Legacy dashboard: query_run_id – Pipeline: pipeline_update_id Falls entity_type den Wert NULL hat, hat entity_run_id den Wert NULL . |
– Notebook: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 – Auftrag: 51090402394234 – Databricks SQL-Abfrage: e9cd8a31-de2f-4206-adfa-4f6605d68d88 – Dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 – Legacy-Dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 – Pipeline: c5am1e0r-on2f-4206-adfa-4f6605d68d88 |
source_table_full_name |
Zeichenfolge | Dreiteiliger Name zum Identifizieren der Quelltabelle. | catalog.schema.table |
source_table_catalog |
Zeichenfolge | Der Katalog der Quelltabelle. | catalog |
source_table_schema |
Zeichenfolge | Das Schema der Quelltabelle. | schema |
source_table_name |
Zeichenfolge | Der Name der Quelltabelle. | table |
source_path |
Zeichenfolge | Der Speicherort im Cloudspeicher der Quelltabelle oder der Pfad, wenn direkt aus dem Cloudspeicher gelesen wird. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
Zeichenfolge | Die Art der Quelle. Der Wert kann TABLE , PATH , VIEW oder STREAMING_TABLE sein. |
TABLE |
source_column_name |
Zeichenfolge | Der Name der Quellspalte | date |
target_table_full_name |
Zeichenfolge | Dreiteiliger Name zum Identifizieren der Zieltabelle. | catalog.schema.table |
target_table_catalog |
Zeichenfolge | Der Katalog der Zieltabelle. | catalog |
target_table_schema |
Zeichenfolge | Das Schema der Zieltabelle. | schema |
target_table_name |
Zeichenfolge | Der Name der Zieltabelle. | table |
target_path |
Zeichenfolge | Speicherort im Cloudspeicher der Zieltabelle | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
Zeichenfolge | Der Typ des Ziels. Der Wert kann TABLE , PATH , VIEW oder STREAMING TABLE sein. |
TABLE |
target_column_name |
Zeichenfolge | Der Name der Zielspalte. | date |
created_by |
Zeichenfolge | Der Benutzer oder die Benutzerin, der bzw. die diese Datenherkunft generiert hat. Das kann ein Azure Databricks-Benutzername, eine Azure Databricks-Dienstprinzipal-ID, „System-User“ oder auch NULL sein, wenn die Benutzerinformationen nicht erfasst werden können. |
crampton.rods@email.com |
event_time |
Zeitstempel | Der Zeitstempel für den Zeitpunkt, zu dem die Datenherkunft generiert wurde. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
2023-06-20T19:47:21.194+00:00 |
event_date |
date | Das Datum, an dem die Datenherkunft generiert wurde. Dies ist eine partitionierte Spalte. | 2023-06-20 |
Lesen von Systemtabellen für die Datenherkunft
Beachten Sie bei der Analyse von Systemtabellen für die Datenherkunft Folgendes:
- Für
entity_type
unterstützt Azure Databricks Delta Live Tables, Notebooks, Aufträge, Databricks SQL-Abfragen und Dashboards. Ereignisse von anderen Entitäten werden nicht unterstützt. - Wenn
entity_type
den Wertnull
hat, bedeutet das, dass keine Azure Databricks-Entität am Ereignis beteiligt ist. Dies kann z. B. das Ergebnis einer JDBC-Abfrage sein oder daraus resultieren, dass ein Benutzer oder eine Benutzerin auf der Azure Databricks-Benutzeroberfläche auf die Registerkarte Beispieldaten geklickt hat. - Um zu bestimmen, ob das Ereignis ein Lese- oder Schreibvorgang war, können Sie den Quelltyp und den Zieltyp betrachten.
- Nur Lesen: Der Quelltyp ist nicht NULL, aber der Zieltyp ist NULL.
- Nur Schreiben: Der Zieltyp ist nicht NULL, aber der Quelltyp ist NULL.
- Lesen und Schreiben: Quell- und Zieltyp sind nicht NULL.
Exemplarische Systemtabelle für die Datenherkunft
Als Beispiel für die Erfassung der Datenherkunft in Systemtabellen finden Sie hier eine Beispielabfrage, gefolgt von den Datenherkunftsdatensätzen, die von der Abfrage erstellt werden:
CREATE OR REPLACE TABLE car_features
AS SELECT *, in1+in2 as premium_feature_set
FROM car_features_exterior
JOIN car_features_interior
USING(id, model);
Der Datensatz in system.access.table_lineage
sieht wie folgt aus:
entity_type |
entity_id |
source_table_name |
target_table_name |
created_by |
event_time |
---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_exterior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
Der Datensatz in system.access.column_lineage
sieht wie folgt aus:
entity_type |
entity_id |
source_table_name |
target_table_name |
source_column_name |
target_column_name |
event_time |
---|---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in1 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in2 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
Hinweis
Im obigen Beispiel werden nicht alle Datenherkunftsspalten angezeigt. Das vollständige Schema finden Sie im obigen Datenherkunftsschema.
Problembehandlung externer Tabellenabfragen
Wenn Sie mithilfe des Cloudspeicherpfads auf eine externe Tabelle verweisen, enthält die zugeordnete Datenherkunftszeile lediglich den Namen des Pfads und nicht der Tabelle. Beispielsweise würde die Datenherkunftszeile für diese Abfrage den Namen des Pfads und nicht der Tabelle enthalten:
SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;
Wenn Sie versuchen, Datenherkunftszeilen für eine externe Tabelle über den Pfad abzufragen, müssen Sie die Abfrage mithilfe von source_path
oder target_path
anstelle von source_table_full_name
oder target_table_full_name
filtern. Die folgende Abfrage pullt beispielsweise alle Datenherkunftszeilen für eine externe Tabelle:
SELECT *
FROM system.access.table_lineage
WHERE
source_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1" OR
target_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1";
Beispiel: Abrufen von Datenherkunftszeilen basierend auf dem Namen der externen Tabelle
Wenn Sie den Cloudspeicherpfad nicht manuell abrufen möchten, um die Datenherkunft zu finden, können Sie die folgende Funktion verwenden, um die Herkunftsdaten mithilfe des Tabellennamens abzurufen. Sie können außerdem system.access.table_lineage
in der Funktion durch system.access.column_lineage
ersetzen, wenn Sie die Spaltenherkunft abfragen möchten.
def getLineageForTable(table_name):
table_path = spark.sql(f"describe detail {table_name}").select("location").head()[0]
df = spark.read.table("system.access.table_lineage")
return df.where(
(df.source_table_full_name == table_name)
| (df.target_table_full_name == table_name)
| (df.source_path == table_path)
| (df.target_path == table_path)
)
Verwenden Sie dann den folgenden Befehl, um die Funktion aufzurufen und die Datenherkunftszeilen für die externe Tabelle anzuzeigen:
display(getLineageForTable("table_name"))