Informazioni di riferimento sulle tabelle di sistema di derivazione
Importante
Questa tabella di sistema è disponibile in anteprima pubblica. Per accedere alla tabella, è necessario abilitare lo schema nel catalogo system
. Per altre informazioni, vedere Abilitare gli schemi di tabella di sistema.
Questo articolo fornisce una panoramica di due tabelle di sistema di derivazione. Queste tabelle di sistema si basano sulla funzionalità di derivazione dei dati di Unity Catalog, consentendo di eseguire query a livello di codice sui dati di derivazione per alimentare processi decisionali e report.
Nota
Entrambe le tabelle di derivazione rappresentano un subset di tutti gli eventi di lettura/scrittura, perché non è sempre possibile acquisire la derivazione. I record vengono generati solo quando è possibile dedurre la derivazione.
Tabella di derivazione tabella
Include una voce per ogni evento di lettura o scrittura in una tabella o un percorso di Unity Catalog. Ciò include, ad esempio, esecuzioni di processi, esecuzioni di notebook e dashboard aggiornati con l'evento di lettura o scrittura.
Percorso tabella: questa tabella di sistema si trova in system.access.table_lineage
.
Tabella di derivazione delle colonne
La tabella di derivazione della colonna non include eventi che non dispongono di un'origine. Ad esempio, se si inserisce in una colonna usando valori espliciti, non viene acquisito. Se si legge una colonna, viene acquisita se si scrive o meno l'output. La derivazione delle colonne non è supportata per le tabelle Delta Live.
Percorso tabella: questa tabella di sistema si trova in system.access.column_lineage
.
Schema della tabella di sistema di derivazione
Le tabelle di sistema di derivazione usano lo schema seguente. Lo schema di derivazione della tabella non include source_column_name
e target_column_name
.
Nome colonna | Tipo di dati | Descrizione | Esempio |
---|---|---|---|
account_id |
string | ID dell’account di Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
string | ID del metastore del catalogo Unity. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
string | ID dell'area di lavoro | 123456789012345 |
entity_type |
string | Tipo di entità da cui è stata acquisita la transazione di derivazione. Il valore è NOTEBOOK , JOB , PIPELINE , DASHBOARD_V3 (Dashboard), DBSQL_DASHBOARD (dashboard Legacy), DBSQL_QUERY , OPPURE NULL . |
NOTEBOOK |
entity_id |
string | ID dell'entità da cui è stata acquisita la transazione di derivazione. Se entity_type è NULL , entity_id è NULL . |
- Notebook: 23098402394234 - Processo: 23098402394234 - Query SQL di Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Dashboard: 01ef070d110715f2b6d3061b8bda89ea - Dashboard di legacy: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Pipeline: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
string | ID per descrivere l'esecuzione univoca dell'entità o NULL . Questo comportamento è diverso per ogni tipo di entità:- Notebook: command_run_id - Processo: job_run_id - Query SQL di Databricks: query_run_id - Dashboard: query_run_id - Dashboard legacy: query_run_id - Pipeline: pipeline_update_id Se entity_type è NULL , entity_run_id è NULL . |
- Notebook: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 - Processo: 51090402394234 - Query SQL di Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88 - Dashboard: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Dashboard di legacy: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - Pipeline: c5am1e0r-on2f-4206-adfa-4f6605d68d88 |
source_table_full_name |
string | Nome in tre parti per identificare la tabella di origine. | catalog.schema.table |
source_table_catalog |
string | Catalogo della tabella di origine. | catalog |
source_table_schema |
string | Proprietario dello schema della tabella di origine. | catalog.schema |
source_table_name |
string | Nome della tabella di origine. | table |
source_path |
string | Percorso nell'archiviazione cloud della tabella di origine o percorso se legge direttamente dall'archiviazione cloud. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
string | Tipo di origine. Il valore è TABLE , PATH , VIEW , o STREAMING_TABLE . |
TABLE |
source_column_name |
string | Nome della colonna di origine. | date |
target_table_full_name |
string | Nome in tre parti per identificare la tabella di destinazione. | catalog.schema.table |
target_table_catalog |
string | Catalogo della tabella di destinazione. | catalog |
target_table_schema |
string | Schema della tabella di destinazione. | catalog.schema |
target_table_name |
string | Nome della tabella di destinazione. | table |
target_path |
string | Posizione nell'archiviazione cloud della tabella di destinazione. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
string | Tipo della destinazione. Il valore è TABLE , PATH , VIEW , o STREAMING TABLE . |
TABLE |
target_column_name |
string | Nome della colonna di destinazione. | date |
created_by |
string | Utente che ha generato questa derivazione. Può trattarsi di un nome utente di Azure Databricks, un ID entità servizio di Azure Databricks, “System-User”, o NULL se le informazioni utente non possono essere acquisite. |
crampton.rods@email.com |
event_time |
timestamp | Timestamp relativo alla data e all'ora in cui è stato generato il log. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 che rappresenta l'ora UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
data | Data di generazione della derivazione. Si tratta di una colonna partizionata. | 2023-06-20 |
Lettura delle tabelle di sistema di derivazione
Quando si analizzano le tabelle di sistema di derivazione, tenere presente quanto segue:
- Per
entity_type
, Azure Databricks supporta tabelle Live Delta, notebook, processi, query SQL di Databricks e dashboard. Gli eventi di altre entità non sono supportati. - Se viene visualizzato
entity_type
comenull
, significa che nell'evento non è coinvolta alcuna entità di Azure Databricks. Ad esempio, potrebbe trattarsi del risultato di una query JDBC o di un utente che fa clic nella scheda Dati di esempio nell'interfaccia utente di Azure Databricks. - Per determinare se l'evento è stato letto o scritto, è possibile visualizzare il tipo di origine e il tipo di destinazione.
- Sola lettura: il tipo di origine non è null, ma il tipo di destinazione è null.
- Sola scrittura: il tipo di destinazione non è null, ma il tipo di origine è null.
- Lettura e scrittura: il tipo di origine e il tipo di destinazione non sono null.
Esempio di tabella di sistema di derivazione
Come esempio di come viene registrata la derivazione nelle tabelle di sistema, di seguito è riportato un esempio di query seguita dai record di derivazione creati dalla query:
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);
Il record in system.access.table_lineage
sarà simile al seguente:
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 |
Il record in system.access.column_lineage
sarà simile al seguente:
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 |
Nota
Non tutte le colonne di derivazione sono illustrate nell'esempio precedente. Per lo schema completo, vedere lo schema di derivazione precedente.
Risoluzione dei problemi relativi alle query sulle tabelle esterne
Quando si fa riferimento a una tabella esterna usando il relativo percorso di archiviazione cloud, il record di derivazione associato include solo il nome del percorso e non il nome della tabella. Ad esempio, il record di derivazione per questa query include il nome del percorso e non il nome della tabella:
SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;
Se si sta tentando di eseguire query sui record di derivazione per una tabella esterna a cui fa riferimento il percorso, sarà necessario filtrare la query usando source_path
o target_path
anziché source_table_full_name
o target_table_full_name
. Ad esempio, la query seguente esegue il pull di tutti i record di derivazione per una tabella esterna:
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";
Esempio: Recuperare record di derivazione in base al nome della tabella esterna
Se non si vuole recuperare manualmente il percorso di archiviazione cloud per trovare la derivazione, è possibile usare la funzione seguente per ottenere dati di derivazione usando il nome della tabella. È anche possibile sostituire system.access.table_lineage
con system.access.column_lineage
nella funzione se si desidera eseguire una query sulla derivazione delle colonne.
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)
)
Usare quindi il comando seguente per chiamare la funzione e visualizzare i record di derivazione per la tabella esterna:
display(getLineageForTable("table_name"))