Informazioni di riferimento sulle tabelle di sistema di derivazione
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Questo articolo offre una panoramica delle 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.
Esistono due tabelle di sistema di derivazione:
system.access.table_lineage
system.access.column_lineage
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
La tabella di sistema di derivazione della tabella include un record per ogni evento di lettura o scrittura in una tabella o un percorso del catalogo Unity. Ciò include, ad esempio, esecuzioni di processi, esecuzioni di notebook e dashboard aggiornati con l'evento di lettura o scrittura.
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 live Delta.
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 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 DBSQL_DASHBOARD , DBSQL_QUERY , o NULL . |
NOTEBOOK |
entity_id |
string | ID dell'entità da cui è stata acquisita la transazione di derivazione. Se entity_type è NULL , entity_id è NULL . |
*Taccuino: 23098402394234 *Lavoro: 23098402394234 * Query SQL di Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88 * Dashboard SQL di Databricks: 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 SQL di Databricks: query_run_id * Pipeline: pipeline_update_id Se entity_type è NULL , entity_run_id è NULL . |
*Taccuino: 23098402394234 *Lavoro: 23098402394234 * Query SQL di Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88 * Dashboard SQL di Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88 *Pipeline: e9cd8a31-de2f-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 | 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 dell'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 in cui è stata generata la derivazione. | 2023-06-20T19:47:21.194+0000 |
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:
entity_type
Per , 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.
- Solo 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"))
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per