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_type NULL is, dan is entity_id NULL . |
|
entity_run_id |
tekenreeks | ID voor het beschrijven van de unieke run van de entiteit, of NULL . Dit verschilt voor elk entiteitstype:
Als entity_type NULL is, is entity_run_id NULL . |
|
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 VIEW STREAMING_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 VIEW STREAMING 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_type NULL is, is entity_id NULL . |
|
entity_run_id |
tekenreeks | ID voor het beschrijven van de unieke run van de entiteit, of NULL . Dit verschilt voor elk entiteitstype:
Als entity_type NULL is, dan is entity_run_id NULL . |
|
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 VIEW STREAMING_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 VIEW STREAMING 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_type
ondersteunt Azure Databricks DLT, notebooks, jobs, Databricks SQL-query's en dashboards. Gebeurtenissen van andere entiteiten worden niet ondersteund. - Als u de
entity_type
alsnull
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"))