Delen via


Verwijzing naar afstammingssysteemtabellen

Belangrijk

Deze systeemtabel bevindt zich in openbare preview. Voor toegang tot de tabel moet het schema zijn ingeschakeld in uw system catalogus. Zie Systeemtabelschema's inschakelen voor meer informatie.

Dit artikel bevat een overzicht van de twee herkomstsysteemtabellen. Deze systeemtabellen zijn gebaseerd op de functie voor gegevensherkomst van Unity Catalog, zodat u programmatisch gegevens van herkomst kunt opvragen om beslissingen en rapporten te maken.

Notitie

Beide herkomsttabellen vertegenwoordigen een subset van alle lees-/schrijf-gebeurtenissen, omdat het niet altijd mogelijk is om herkomst vast te leggen. Records worden alleen verzonden wanneer herkomst kan worden afgeleid.

Afstammingtabeloverzicht

De systeemtabel voor tabelafstamming bevat een record voor elke lees- of schrijfbewerking in een Unity Catalog-tabel of -pad. Dit omvat, maar is niet beperkt tot taakuitvoeringen, notebookuitvoeringen en dashboards die zijn bijgewerkt met de lees- of schrijfbeurtenis.

Tabelpad: Deze systeemtabel bevindt zich op system.access.table_lineage.

tabelherkomstschema

De tabel van het tabelherkomstsysteem maakt gebruik van het volgende schema.

Kolomnaam Gegevenstype Beschrijving Voorbeeld
account_id tekenreeks De id van het Azure Databricks-account. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id tekenreeks De id van de Unity Catalog-metastore. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id tekenreeks De ID van de werkruimte 123456789012345
entity_type tekenreeks Het type entiteit waaruit de herkomsttransactie werd vastgelegd. De waarde is NOTEBOOK, JOB, PIPELINE, DASHBOARD_V3 (Dashboard), DBSQL_DASHBOARD (Verouderd dashboard), DBSQL_QUERY OF NULL. NOTEBOOK
entity_id tekenreeks De ID van de entiteit waaruit de herkomsttransactie is vastgelegd. Als entity_typeNULL is, dan is entity_idNULL.
  • Notitieblok: 23098402394234
  • Baan: 23098402394234
  • Databricks SQL-query: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Dashboard: 01ef070d110715f2b6d3061b8bda89ea
  • Verouderd dashboard: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Pijpleiding: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id tekenreeks ID voor het beschrijven van de unieke run van de entiteit, of NULL. Dit verschilt voor elk entiteitstype:
  • Notitieblok: command_run_id
  • Taak: job_run_id
  • Databricks SQL-query: query_run_id
  • Dashboard: query_run_id
  • Verouderd dashboard: query_run_id
  • Pijplijn: pipeline_update_id

Als entity_typeNULL is, is entity_run_idNULL.
  • Notitieblok: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
  • Baan: 51090402394234
  • Databricks SQL-query: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Verouderd dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Pijpleiding: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name tekenreeks Driedelige naam om de brontabel te identificeren. catalog.schema.table
source_table_catalog tekenreeks De catalogus van de brontabel. catalog
source_table_schema tekenreeks Het schema van de brontabel. schema
source_table_name tekenreeks De naam van de brontabel. table
source_path tekenreeks Locatie in cloudopslag van de brontabel, of het pad als er rechtstreeks vanuit de cloudopslag wordt gelezen. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type tekenreeks Het type bron. De waarde is TABLE, PATH, of VIEWSTREAMING_TABLE. TABLE
target_table_full_name tekenreeks Driedelige naam om de doeltabel te identificeren. catalog.schema.table
target_table_catalog tekenreeks De catalogus van de doeltabel. catalog
target_table_schema tekenreeks Het schema van de doeltabel. schema
target_table_name tekenreeks De naam van de doeltabel. table
target_path tekenreeks Locatie in de cloudopslaglocatie van de doeltabel. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type tekenreeks Het type van het doel. De waarde is TABLE, PATH, of VIEWSTREAMING TABLE. TABLE
created_by tekenreeks De gebruiker die deze lijn heeft gegenereerd. Dit kan een Azure Databricks-gebruikersnaam, een Azure Databricks-service-principal-id, 'Systeemgebruiker' of NULL als de gebruikersgegevens niet kunnen worden vastgelegd. crampton.rods@email.com
event_time tijdstempel De tijdstempel waarop de herkomst is gegenereerd. Tijdzone-informatie wordt aan het einde van de waarde vastgelegd, waarbij +00:00 UTC vertegenwoordigt. 2023-06-20T19:47:21.194+00:00
event_date datum De datum waarop de herkomst is gegenereerd. Dit is een gepartitioneerde kolom. 2023-06-20

Tabel voor kolomherkomst

De kolomherkomsttabel bevat geen gebeurtenissen die geen bron hebben. Als u bijvoorbeeld invoegt in een kolom met expliciete waarden, wordt deze niet vastgelegd. Als u een kolom leest, wordt deze vastgelegd, ongeacht of u de uitvoer schrijft. Kolomafstamming wordt niet ondersteund voor DLT.

Tabelpad: Deze systeemtabel bevindt zich op system.access.column_lineage.

kolomafstammingsschema

De tabel van het kolomherkomstsysteem maakt gebruik van het volgende schema:

Kolomnaam Gegevenstype Beschrijving Voorbeeld
account_id tekenreeks De id van het Azure Databricks-account. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id tekenreeks De id van de Unity Catalog-metastore. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id tekenreeks De ID van de werkruimte 123456789012345
entity_type tekenreeks Het type entiteit waaruit de herkomsttransactie werd vastgelegd. De waarde is NOTEBOOK, JOB, PIPELINE, DASHBOARD_V3 (Dashboard), DBSQL_DASHBOARD (Verouderd dashboard), DBSQL_QUERY OF NULL. NOTEBOOK
entity_id tekenreeks De ID van de entiteit waarvan de afstammingstransactie is vastgelegd. Als entity_typeNULL is, is entity_idNULL.
  • Notitieblok: 23098402394234
  • Baan: 23098402394234
  • Databricks SQL-query: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Dashboard: 01ef070d110715f2b6d3061b8bda89ea
  • Verouderd dashboard: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Pijpleiding: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id tekenreeks ID voor het beschrijven van de unieke run van de entiteit, of NULL. Dit verschilt voor elk entiteitstype:
  • Notitieblok: command_run_id
  • Taak: job_run_id
  • Databricks SQL query: query_run_id
  • Dashboard: query_run_id
  • Verouderd dashboard: query_run_id
  • Pijplijn: pipeline_update_id

Als entity_typeNULL is, dan is entity_run_idNULL.
  • Notitieblok: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
  • Baan: 51090402394234
  • Databricks SQL-query: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Verouderd dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Pijpleiding: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name string Driedelige naam om de brontabel te identificeren. catalog.schema.table
source_table_catalog tekenreeks De catalogus van de brontabel. catalog
source_table_schema tekenreeks Het schema van de brontabel. schema
source_table_name tekenreeks De naam van de brontabel. table
source_path tekenreeks Locatie in cloudopslag van de brontabel, of het pad als er rechtstreeks vanuit de cloudopslag wordt gelezen. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type tekenreeks Het type bron. De waarde is TABLE, PATH, of VIEWSTREAMING_TABLE. TABLE
source_column_name tekenreeks De naam van de bronkolom. date
target_table_full_name tekenreeks Driedelige naam om de doeltabel te identificeren. catalog.schema.table
target_table_catalog tekenreeks De catalogus van de doelentabel. catalog
target_table_schema tekenreeks Het schema van de doeltabel. schema
target_table_name tekenreeks De naam van de doeltabel. table
target_path string Locatie in cloudopslag van de doeltabel. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type tekenreeks Het type van het doel. De waarde is TABLE, PATH, of VIEWSTREAMING TABLE. TABLE
target_column_name tekenreeks De naam van de kolom die als doel is bedoeld. date
created_by tekenreeks De gebruiker die deze lijn heeft gegenereerd. Dit kan een Azure Databricks-gebruikersnaam, een Azure Databricks-service-principal-id, 'Systeemgebruiker' of NULL als de gebruikersgegevens niet kunnen worden vastgelegd. crampton.rods@email.com
event_time tijdstempel De tijdstempel waarop de herkomst is gegenereerd. Tijdzone-informatie wordt aan het einde van de waarde vastgelegd, waarbij +00:00 UTC vertegenwoordigt. 2023-06-20T19:47:21.194+00:00
event_date datum De datum waarop de herkomst is gegenereerd. Dit is een gepartitioneerde kolom. 2023-06-20

Systeemtabellen voor afstammingsinformatie lezen

Let op de volgende overwegingen bij het analyseren van afstammingssysteemtabellen:

  • Voor de entity_typeondersteunt Azure Databricks DLT, notebooks, jobs, Databricks SQL-query's en dashboards. Gebeurtenissen van andere entiteiten worden niet ondersteund.
  • Als u de entity_type als null ziet, betekent dit dat er geen Azure Databricks-entiteit betrokken is bij de gebeurtenis. Dit kan bijvoorbeeld het resultaat zijn van een JDBC-query of van een gebruiker die op het tabblad Voorbeeldgegevens klikt in de gebruikersinterface van Azure Databricks.
  • Als u wilt bepalen of de gebeurtenis een lees- of schrijfbewerking is, kunt u het brontype en het doeltype bekijken.
    • Alleen-lezen: het brontype is niet nul, maar het doeltype is nul.
    • Alleen-schrijven: Het doeltype is niet nul, maar het brontype is nul.
    • Lezen en schrijven: het brontype en het doeltype zijn niet null.

Voorbeeld van een lijnsysteemtabel

Als voorbeeld van hoe herkomst wordt vastgelegd in systeemtabellen, volgt hier een voorbeeldquery gevolgd door de herkomstrecords die door de query worden gemaakt:

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

De record in system.access.table_lineage ziet er als volgt uit:

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

De record in system.access.column_lineage ziet er als volgt uit:

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

Notitie

Niet alle herkomstkolommen zijn weergegeven in het bovenstaande voorbeeld. Voor het volledige schema, zie het bovenstaande herkomstschema.

Het oplossen van problemen met externe tabelquery's

Wanneer u naar een externe tabel verwijst met behulp van het cloudopslagpad, bevat de bijbehorende herkomstrecord alleen de padnaam en niet de tabelnaam. De herkomstrecord voor deze query bevat bijvoorbeeld de padnaam en niet de tabelnaam:

SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;

Als u een query wilt uitvoeren op herkomstrecords voor een externe tabel waarnaar wordt verwezen via pad, moet u de query filteren met source_path of target_path in plaats van source_table_full_name of target_table_full_name. Met de volgende query worden bijvoorbeeld alle herkomstrecords voor een externe tabel opgehaald:

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";

Voorbeeld: Herkomstrecords ophalen op basis van de naam van de externe tabel

Als u het cloudopslagpad niet handmatig wilt ophalen om herkomst te vinden, kunt u de volgende functie gebruiken om herkomstgegevens op te halen met behulp van de tabelnaam. U kunt ook system.access.table_lineage vervangen door system.access.column_lineage in de functie als u gegevens wilt opvragen over kolomafstamming.

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

Gebruik vervolgens de volgende opdracht om de functie aan te roepen en herkomstrecords voor de externe tabel weer te geven:

display(getLineageForTable("table_name"))