Referens för ursprungssystemtabeller
Viktigt!
Den här systemtabellen finns i offentlig förhandsversion. För att få åtkomst till tabellen måste schemat vara aktiverat i katalogen system
. Mer information finns i Aktivera systemtabellscheman.
Den här artikeln innehåller en översikt över de två ursprungssystemtabellerna. Dessa systemtabeller bygger på Unity Catalogs data härstamningsfunktion, så att du programmatiskt kan fråga ursprungsdata för att driva beslutsfattande och rapporter.
Kommentar
Båda ursprungstabellerna representerar en delmängd av alla läs-/skrivhändelser, eftersom det inte alltid är möjligt att avbilda ursprung. Poster genereras endast när ursprung kan härledas.
Tabellradtabell
Tabellens ursprungssystemtabell innehåller en post för varje läs- eller skrivhändelse i en Unity Catalog-tabell eller sökväg. Detta omfattar men är inte begränsat till jobbkörningar, notebook-körningar och instrumentpaneler som uppdateras med läs- eller skrivhändelsen.
Tabellsökväg: Den här systemtabellen finns på system.access.table_lineage
.
Kolumn härkomsttabell
Kolumnens ursprungstabell innehåller inte händelser som inte har någon källa. Om du till exempel infogar i en kolumn med explicita värden hämtas den inte. Om du läser en kolumn registreras den oavsett om du skriver utdata eller inte. Kolumn härkomst stöds inte för Delta Live Tables.
Tabellsökväg: Den här systemtabellen finns på system.access.column_lineage
.
Schema för ursprungssystemtabell
Systemtabellerna för ursprung använder följande schema. Tabellens ursprungsschema innehåller source_column_name
inte och target_column_name
.
Kolumnnamn | Datatyp | beskrivning | Exempel |
---|---|---|---|
account_id |
sträng | ID för Azure Databricks-kontot. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
sträng | ID:t för Unity Catalog-metaarkivet. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
sträng | Arbetsytans ID | 123456789012345 |
entity_type |
sträng | Typen av entitet som ursprungstransaktionen hämtades från. Värdet är , , , (instrumentpanel), DBSQL_DASHBOARD (äldre instrumentpanel), DBSQL_QUERY , ELLER NULL . DASHBOARD_V3 PIPELINE JOB NOTEBOOK |
NOTEBOOK |
entity_id |
sträng | ID:t för entiteten som ursprungstransaktionen hämtades från. Om entity_type är NULL , entity_id är NULL . |
-Anteckningsbok: 23098402394234 -Jobb: 23098402394234 – Databricks SQL-fråga: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -Instrumentbräda: 01ef070d110715f2b6d3061b8bda89ea – Äldre instrumentpanel: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -Rörledning: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
sträng | ID för att beskriva den unika körningen av entiteten, eller NULL . Detta skiljer sig åt för varje entitetstyp:– Anteckningsbok: command_run_id - Jobb: job_run_id – Databricks SQL-fråga: query_run_id – Instrumentpanel: query_run_id – Äldre instrumentpanel: query_run_id – Pipeline: pipeline_update_id Om entity_type är NULL , entity_run_id är NULL . |
-Anteckningsbok: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 -Jobb: 51090402394234 – Databricks SQL-fråga: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -Instrumentbräda: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 – Äldre instrumentpanel: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 -Rörledning: c5am1e0r-on2f-4206-adfa-4f6605d68d88 |
source_table_full_name |
sträng | Namn i tre delar för att identifiera källtabellen. | catalog.schema.table |
source_table_catalog |
sträng | Källtabellens katalog. | catalog |
source_table_schema |
sträng | Schemat för källtabellen. | catalog.schema |
source_table_name |
sträng | Namnet på källtabellen. | table |
source_path |
sträng | Plats i molnlagringen av källtabellen eller sökvägen om den läser direkt från molnlagring. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
sträng | Källans typ. Värdet är TABLE , PATH , VIEW eller STREAMING_TABLE . |
TABLE |
source_column_name |
sträng | Namnet på källkolumnen. | date |
target_table_full_name |
sträng | Namn i tre delar för att identifiera måltabellen. | catalog.schema.table |
target_table_catalog |
sträng | Katalogen för måltabellen. | catalog |
target_table_schema |
sträng | Schemat för måltabellen. | catalog.schema |
target_table_name |
sträng | Namnet på måltabellen. | table |
target_path |
sträng | Plats i molnlagringen av måltabellen. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
sträng | Typ av mål. Värdet är TABLE , PATH , VIEW eller STREAMING TABLE . |
TABLE |
target_column_name |
sträng | Namnet på målkolumnen. | date |
created_by |
sträng | Den användare som genererade den här ursprunget. Detta kan vara ett Användarnamn för Azure Databricks, ett huvudnamn för Azure Databricks-tjänsten, "System-User" eller NULL om användarinformationen inte kan samlas in. |
crampton.rods@email.com |
event_time |
timestamp | Tidsstämpeln när ursprunget genererades. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
2023-06-20T19:47:21.194+00:00 |
event_date |
datum | Datumet då ursprunget genererades. Det här är en partitionerad kolumn. | 2023-06-20 |
Läsa systemtabeller för ursprung
Observera följande när du analyserar systemtabeller för ursprung:
entity_type
För har Azure Databricks stöd för Delta Live Tables, notebook-filer, jobb, Databricks SQL-frågor och instrumentpaneler. Händelser från andra entiteter stöds inte.- Om du ser
entity_type
somnull
betyder det att ingen Azure Databricks-entitet är inblandad i händelsen. Det kan till exempel vara resultatet av en JDBC-fråga eller från en användare som klickar på fliken Exempeldata i Azure Databricks-användargränssnittet. - För att avgöra om händelsen var en läsning eller en skrivning kan du visa källtypen och måltypen.
- Skrivskyddad: Källtypen är inte null, men måltypen är null.
- Skrivskyddad: Måltypen är inte null, men källtypen är null.
- Läs och skriv: Källtypen och måltypen är inte null.
Exempel på ursprungssystemtabell
Som ett exempel på hur ursprung registreras i systemtabeller är här en exempelfråga följt av de härstamningsposter som frågan skapar:
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);
Posten i system.access.table_lineage
skulle se ut så här:
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 |
Posten i system.access.column_lineage
skulle se ut så här:
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 |
Kommentar
Alla ursprungskolumner visas inte i exemplet ovan. Det fullständiga schemat finns i ursprungsschemat ovan.
Felsöka externa tabellfrågor
När du refererar till en extern tabell med dess molnlagringssökväg innehåller den associerade ursprungsposten endast sökvägens namn och inte tabellnamnet. Till exempel skulle ursprungsposten för den här frågan innehålla sökvägens namn och inte tabellnamnet:
SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;
Om du försöker fråga efter ursprungsposter för en extern tabell som refereras av sökvägen måste du filtrera frågan med eller source_path
target_path
i stället för source_table_full_name
eller target_table_full_name
. Följande fråga hämtar till exempel alla ursprungsposter för en extern tabell:
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";
Exempel: Hämta ursprungsposter baserat på namnet på den externa tabellen
Om du inte vill hämta molnlagringssökvägen manuellt för att hitta ursprung kan du använda följande funktion för att hämta ursprungsdata med hjälp av tabellnamnet. Du kan också ersätta system.access.table_lineage
med system.access.column_lineage
i funktionen om du vill fråga efter kolumn härkomst.
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)
)
Använd sedan följande kommando för att anropa funktionen och visa ursprungsposter för den externa tabellen:
display(getLineageForTable("table_name"))