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 sui dati di derivazione a livello di codice 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 delle derivazioni
La tabella del sistema di lineage delle tabelle include un registro per ogni evento di lettura o scrittura su una tabella o un percorso di Unity Catalog. Ciò include, ma non è limitato a, esecuzioni di lavori, esecuzioni di notebook e aggiornamenti delle dashboard con l'evento di lettura o scrittura.
Percorso tabella: questa tabella di sistema si trova in system.access.table_lineage
.
schema di lineage delle tabelle
La tabella del sistema delle linee delle tabelle utilizza il seguente schema.
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 | L'ID dell'entità dalla quale è stata acquisita la transazione di filiazione. Se entity_type è NULL , entity_id è NULL . |
|
entity_run_id |
string | ID per descrivere la corsa unica dell'entità o NULL . Questo comportamento è diverso per ogni tipo di entità:
Se entity_type è NULL , entity_run_id è NULL . |
|
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 | Lo schema della tabella di origine. | schema |
source_table_name |
string | Nome della tabella di origine. | table |
source_path |
string | Posizione nell'archiviazione cloud della tabella di origine o il percorso se viene letto 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 |
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. | schema |
target_table_name |
string | Nome della tabella di destinazione. | table |
target_path |
string | Posizione della tabella di destinazione nell'archiviazione cloud. | 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 |
created_by |
string | Utente che ha generato questa derivazione. Questo può essere un nome utente di Azure Databricks, un ID principale del servizio di Azure Databricks, “System-User”, oppure NULL se le informazioni utente non possono essere acquisite. |
crampton.rods@email.com |
event_time |
timestamp | Il timestamp quando la discendenza è stata generata. 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 |
date | Data di generazione della derivazione. Si tratta di una colonna partizionata. | 2023-06-20 |
Tabella di derivazione delle colonne
La tabella di derivazione della colonna non include eventi che non dispongono di un'origine. Ad esempio, se inserisci in una colonna utilizzando valori espliciti, non viene registrato. Se si legge una colonna, questa viene registrata indipendentemente dal fatto che si scriva o meno l'output. La derivazione delle colonne non è supportata per DLT.
Percorso tabella: questa tabella di sistema si trova in system.access.column_lineage
.
schema di derivazione delle colonne
La tabella di sistema di derivazione delle colonne usa lo schema seguente:
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 linea. Se entity_type è NULL , entity_id è NULL . |
|
entity_run_id |
string | ID per descrivere la corsa unica dell'entità o NULL . Questo comportamento è diverso per ogni tipo di entità:
Se entity_type è NULL , entity_run_id è NULL . |
|
source_table_full_name |
string | Un nome composto da tre parti per identificare la tabella sorgente. | catalog.schema.table |
source_table_catalog |
string | Catalogo della tabella di origine. | catalog |
source_table_schema |
string | Lo schema della tabella di origine. | schema |
source_table_name |
string | Nome della tabella di origine. | table |
source_path |
string | Posizione nell'archiviazione cloud della tabella di origine o il percorso se viene letto 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. | schema |
target_table_name |
string | Nome della tabella di destinazione. | table |
target_path |
string | Localizzazione della tabella di destinazione nell'archiviazione cloud. | 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. Questo può essere un nome utente di Azure Databricks, un ID del principale servizio di Azure Databricks, “System-User”, oppure NULL se le informazioni utente non possono essere acquisite. |
crampton.rods@email.com |
event_time |
timestamp | Il marcatempo al momento in cui è stata generata la provenienza. 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 / appuntamento | 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 il
entity_type
, Azure Databricks supporta DLT, taccuini, lavori, query SQL di Databricks e pannelli di controllo. 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.
- Leggi e scrivi: il tipo di origine e il tipo di destinazione non sono nulli.
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"))