Verwijzing naar herkomstsysteemtabellen
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 gegevensherkomstfunctie van Unity Catalog, zodat u programmatisch query's kunt uitvoeren op herkomstgegevens 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.
Tabelherkomsttabel
De systeemtabel voor tabelherkomsten bevat een record voor elke lees- of schrijfbeurtenis 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
.
Kolomherkomsttabel
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. Kolomherkomst wordt niet ondersteund voor Delta Live-tabellen.
Tabelpad: Deze systeemtabel bevindt zich op system.access.column_lineage
.
Schema voor herkomstsysteemtabellen
De herkomstsysteemtabellen maken gebruik van het volgende schema. Het tabelherkomstschema bevat en source_column_name
target_column_name
.
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 is vastgelegd. De waarde is NOTEBOOK , JOB , , DASHBOARD_V3 PIPELINE (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 dat het is, entity_id is NULL NULL . |
-Schrift: 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 uitvoering 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_type dat het is, entity_run_id is NULL NULL . |
-Schrift: 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. | catalog.schema |
source_table_name |
tekenreeks | De naam van de brontabel. | table |
source_path |
tekenreeks | Locatie in cloudopslag van de brontabel of het pad als deze 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 doeltabel. | catalog |
target_table_schema |
tekenreeks | Het schema van de doeltabel. | catalog.schema |
target_table_name |
tekenreeks | De naam van de doeltabel. | table |
target_path |
tekenreeks | Locatie in cloudopslag van de doeltabel. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
tekenreeks | Het type doel. De waarde is TABLE , PATH , of VIEW STREAMING TABLE . |
TABLE |
target_column_name |
tekenreeks | De naam van de doelkolom. | date |
created_by |
tekenreeks | De gebruiker die deze herkomst 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 |
timestamp | De tijdstempel waarop de herkomst is gegenereerd. Tijdzone-informatie wordt vastgelegd aan het einde van de waarde met +00:00 utc. |
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 herkomst lezen
Let op de volgende overwegingen bij het analyseren van systeemtabellen voor herkomst:
entity_type
Azure Databricks biedt ondersteuning voor Delta Live Tables, notebooks, taken, Databricks SQL-query's en dashboards. Gebeurtenissen van andere entiteiten worden niet ondersteund.- Als u de
entity_type
functienull
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 null, maar het doeltype is null.
- Alleen-schrijven: het doeltype is niet null, maar het brontype is null.
- Lezen en schrijven: het brontype en het doeltype zijn niet null.
Voorbeeld van een herkomstsysteemtabel
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 worden weergegeven in het bovenstaande voorbeeld. Zie het bovenstaande herkomstschema voor het volledige schema.
Problemen met externe tabelquery's oplossen
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 op pad, moet u de query filteren met of source_path
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 vervangen door system.access.table_lineage
system.access.column_lineage
in de functie als u een query wilt uitvoeren op kolomherkomst.
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"))