Referens för härkomstsystemtabeller
Viktigt!
Den här systemtabellen finns i offentlig förhandsversion. För att få åtkomst till tabellen måste schemat vara aktiverat i din system
katalog. 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ärledningsfunktion, vilket gör att du programmeringsmässigt kan fråga om härkomstdata i syfte att understödja beslutsfattande och rapporter.
Kommentar
Båda härkomsttabellerna representerar en delmängd av alla läs- och skrivhändelser, eftersom det inte alltid är möjligt att spåra härkomst. Data poster skapas endast när ursprung kan härledas.
Linjediagram för tabell
Tabellens härkomstsystemtabell innehåller en post för varje läs- eller skrivhändelse på en Unity Catalog-tabell eller sökväg. Detta omfattar men är inte begränsat till jobbkörningar, anteckningsblockskörningar och instrumentpaneler som uppdateras med läs- eller skrivhändelsen.
Tabellsökväg: Den här systemtabellen finns på system.access.table_lineage
.
Tabell härstamningsschema
Tabellsystemet för härkomst använder följande schema.
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 linjetransaktionen hämtades från. Värdet är NOTEBOOK , JOB , PIPELINE , DASHBOARD_V3 (Instrumentpanel), DBSQL_DASHBOARD (Äldre instrumentpanel), DBSQL_QUERY eller NULL . |
NOTEBOOK |
entity_id |
sträng | ID för entiteten som släkttransaktionen hämtades från. Om entity_type är NULL , entity_id är NULL . |
|
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:
Om entity_type är NULL , entity_run_id är NULL . |
|
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. | 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 |
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. | 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 |
created_by |
sträng | Den användare som genererade denna härstamning. 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 |
tidsstämpel | Tidsstämpeln när härkomsten genererades. Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
datum | Dagen då härstamningen genererades. Det här är en partitionerad kolumn. | 2023-06-20 |
Kolumn linjetabell
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. Kolumnlinje stöds inte för DLT.
Tabellsökväg: Den här systemtabellen finns på system.access.column_lineage
.
Kolumnlinjeschema
Systemtabellen för kolumn härkomst använder följande schema:
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 linjetransaktionen hämtades från. Värdet är NOTEBOOK , JOB , PIPELINE , DASHBOARD_V3 (instrumentpanel), DBSQL_DASHBOARD (äldre instrumentpanel), DBSQL_QUERY ELLER NULL . |
NOTEBOOK |
entity_id |
sträng | ID för entiteten som släkttransaktionen hämtades från. Om entity_type är NULL , entity_id är NULL . |
|
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:
Om entity_type är NULL , entity_run_id är NULL . |
|
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. | 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. | 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 denna härstamning. 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 |
tidsstämpel | Tidsstämpeln när härkomsten genererades. Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
datum | Dagen då härstamningen genererades. Det här är en partitionerad kolumn. | 2023-06-20 |
Läsa systemtabeller för härkomst
Observera följande när du analyserar systemtabeller för ursprung:
- För
entity_type
stöder Azure Databricks DLT, anteckningsböcker, jobb, Databricks SQL-frågor och dashboards. 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.
- Endast skriven: Måltypen har inte värdet null, men källtypen har värdet null.
- Läs och skriv: Källtypen och måltypen är inte null.
Exempel på härkomstsystemtabell
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
ser 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 |
Anteckning
Alla linjekolumner visas inte i exemplet ovan. För det fullständiga schemat, se stamtavleschemat ovan .
Felsöka externa tabellfrågor
När du refererar till en extern tabell med hjälp av dess molnlagringssökväg innehåller den associerade informationen om härstamningen endast sökvägens namn och inte tabellnamnet. Till exempel skulle härledningsposten för denna fråga 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 härkomstposter för en extern tabell med angiven sökväg måste du filtrera frågan med hjälp av source_path
eller target_path
i stället för source_table_full_name
eller target_table_full_name
. Till exempel hämtar följande frågeställning alla linjeposter för en externtabell.
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 kolumnhärstamning.
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"))