Acquisire e visualizzare la derivazione dei dati con Unity Catalog
È possibile usare Unity Catalog per acquisire la derivazione dei dati di runtime tra query eseguite in Azure Databricks. La derivazione è supportata per tutte le lingue e viene acquisita fino al livello di colonna. I dati di derivazione includono notebook, flussi di lavoro e dashboard correlati alla query. La derivazione può essere visualizzata in Esplora cataloghi quasi in tempo reale e recuperata con l'API REST di Databricks.
Nota
È anche possibile visualizzare ed eseguire query sui dati di derivazione usando le tabelle di sistema di derivazione (anteprima pubblica). Per altre informazioni, vedere Informazioni di riferimento sulle tabelle di sistema di derivazione.
La derivazione viene aggregata in tutte le aree di lavoro collegate a un metastore del catalogo Unity. Ciò significa che la derivazione acquisita in un'area di lavoro è visibile in qualsiasi altra area di lavoro che condivide tale metastore. Gli utenti devono disporre delle autorizzazioni corrette per visualizzare i dati di derivazione. I dati di derivazione vengono conservati per 1 anno.
Questo articolo descrive come visualizzare la derivazione usando Esplora cataloghi e l'API REST. Per informazioni sul rilevamento della derivazione di un modello di Machine Learning, vedere Tenere traccia della derivazione dei dati di un modello in Unity Catalog.
Requisiti
Per acquisire la derivazione dei dati con Unity Catalog, sono necessari gli elementi seguenti:
L'area di lavoro deve avere il catalogo Unity abilitato.
Le tabelle devono essere registrate in un metastore del catalogo Unity.
Le query devono usare il dataframe Spark (ad esempio, le funzioni SPARK SQL che restituiscono un dataframe) o le interfacce SQL di Databricks. Per esempi di query SQL e PySpark di Databricks, vedere Esempi.
Per visualizzare la derivazione di una tabella o di una vista, gli utenti devono avere almeno il
BROWSE
privilegio per il catalogo padre della tabella o della vista.Per visualizzare le informazioni sulla derivazione per notebook, flussi di lavoro o dashboard, gli utenti devono disporre delle autorizzazioni per questi oggetti, come definito dalle impostazioni di controllo di accesso nell'area di lavoro. Vedere Autorizzazioni di derivazione.
Per visualizzare la derivazione per una pipeline abilitata per il catalogo unity, è necessario disporre
CAN_VIEW
delle autorizzazioni per la pipeline.Potrebbe essere necessario aggiornare le regole del firewall in uscita per consentire la connettività all'endpoint dell'hub eventi nel piano di controllo di Azure Databricks. Questo vale in genere se l'area di lavoro di Azure Databricks viene distribuita nella propria rete virtuale (nota anche come inserimento reti virtuali). Per ottenere l'endpoint dell'hub eventi per l'area dell'area di lavoro, vedere Metastore, archivio BLOB artefatto, archiviazione tabelle di sistema, archiviazione BLOB di log e indirizzi IP dell'endpoint dell'hub eventi. Per informazioni sulla configurazione di route definite dall'utente per Azure Databricks, vedere Impostazioni di route definite dall'utente per Azure Databricks.
Limiti
Lo streaming tra tabelle Delta è supportato solo in Databricks Runtime 11.3 LTS o versione successiva.
Poiché la derivazione viene calcolata in una finestra mobile di 1 anno, la derivazione raccolta più di 1 anno fa non viene visualizzata. Ad esempio, se un processo o una query legge i dati dalla tabella A e scrive nella tabella B, il collegamento tra la tabella A e la tabella B viene visualizzato solo per 1 anno.
È possibile filtrare i dati di derivazione in base all'intervallo di tempo. Quando si seleziona "Tutta la derivazione", vengono visualizzati i dati di derivazione raccolti a partire da giugno 2023.
I flussi di lavoro che usano la richiesta API
runs submit
Processi non sono disponibili durante la visualizzazione della derivazione. La derivazione a livello di tabella e colonna viene ancora acquisita quando si usa laruns submit
richiesta, ma il collegamento all'esecuzione non viene acquisito.Il catalogo Unity acquisisce il più possibile la derivazione al livello di colonna. Tuttavia, esistono alcuni casi in cui non è possibile acquisire la derivazione a livello di colonna.
La derivazione delle colonne è supportata solo quando si fa riferimento sia all'origine che alla destinazione in base al nome della tabella (esempio:
select * from <catalog>.<schema>.<table>
). Impossibile acquisire la derivazione delle colonne se l'origine o la destinazione sono indirizzate dal percorso (esempio:select * from delta."s3://<bucket>/<path>"
).Se viene rinominata una tabella, la derivazione non viene acquisita per la tabella rinominata.
Se si usa il checkpoint del set di dati Spark SQL, la derivazione non viene acquisita. Vedere pyspark.sql.DataFrame.checkpoint nella documentazione di Apache Spark.
Il catalogo unity acquisisce la derivazione dalle pipeline di tabelle live Delta nella maggior parte dei casi. In alcuni casi, tuttavia, non è possibile garantire una copertura di derivazione completa, ad esempio quando le pipeline usano l'API APPLY CHANGES o le tabelle TEMPORARY.
Esempi:
Nota
Negli esempi seguenti vengono usati il nome
lineage_data
del catalogo e il nomelineagedemo
dello schema . Per usare un catalogo e uno schema diversi, modificare i nomi usati negli esempi.Per completare questo esempio, è necessario disporre
CREATE
di privilegi eUSE SCHEMA
per uno schema. Un amministratore del metastore, il proprietario del catalogo o il proprietario dello schema può concedere questi privilegi. Ad esempio, per concedere a tutti gli utenti del gruppo 'data_engineers' l'autorizzazione per creare tabelle nellolineagedemo
schema nellineage_data
catalogo, un utente con uno dei privilegi o ruoli precedenti può eseguire le query seguenti:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Acquisire ed esplorare la derivazione
Per acquisire dati di derivazione, seguire questa procedura:
Passare alla pagina di destinazione di Azure Databricks, fare clic su Nuovo nella barra laterale e selezionare Notebook dal menu.
Immettere un nome per il notebook e selezionare SQL in Lingua predefinita.
In Cluster selezionare un cluster con accesso a Unity Catalog.
Fai clic su Crea.
Nella prima cella del notebook immettere le query seguenti:
CREATE TABLE IF NOT EXISTS lineage_data.lineagedemo.menu ( recipe_id INT, app string, main string, dessert string ); INSERT INTO lineage_data.lineagedemo.menu (recipe_id, app, main, dessert) VALUES (1,"Ceviche", "Tacos", "Flan"), (2,"Tomato Soup", "Souffle", "Creme Brulee"), (3,"Chips","Grilled Cheese","Cheesecake"); CREATE TABLE lineage_data.lineagedemo.dinner AS SELECT recipe_id, concat(app," + ", main," + ",dessert) AS full_menu FROM lineage_data.lineagedemo.menu
Per eseguire le query, fare clic nella cella e premere MAIUSC+INVIO oppure fare clic e selezionare Esegui cella.
Per usare Esplora cataloghi per visualizzare la derivazione generata da queste query, seguire questa procedura:
Nella casella Cerca nella barra superiore dell'area di lavoro di Azure Databricks immettere
lineage_data.lineagedemo.dinner
e fare clic su Cerca lineage_data.lineagedemo.dinner in Databricks.In Tabelle fare clic sulla
dinner
tabella.Selezionare la scheda Derivazione . Viene visualizzato il pannello di derivazione e vengono visualizzate le tabelle correlate (per questo esempio è la
menu
tabella).Per visualizzare un grafico interattivo della derivazione dei dati, fare clic su Visualizza grafico di derivazione. Per impostazione predefinita, nel grafico viene visualizzato un livello. È possibile fare clic sull'icona in un nodo per visualizzare altre connessioni, se disponibili.
Fare clic su una freccia che collega i nodi nel grafico di derivazione per aprire il pannello connessione derivazione . Il pannello Connessione derivazione mostra informazioni dettagliate sulla connessione, incluse tabelle di origine e di destinazione, notebook e flussi di lavoro.
Per visualizzare il notebook associato
dinner
alla tabella, selezionare il notebook nel pannello Connessione derivazione o chiudere il grafico di derivazione e fare clic su Notebook. Per aprire il notebook in una nuova scheda, fare clic sul nome del notebook.Per visualizzare la derivazione a livello di colonna, fare clic su una colonna nel grafico per visualizzare i collegamenti alle colonne correlate. Ad esempio, facendo clic sulla colonna "full_menu" vengono visualizzate le colonne upstream da cui è stata derivata la colonna:
Per illustrare la creazione e la visualizzazione della derivazione con un linguaggio diverso, ad esempio Python, seguire questa procedura:
Aprire il notebook creato in precedenza, creare una nuova cella e immettere il codice Python seguente:
%python from pyspark.sql.functions import rand, round df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id") df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price") dinner = spark.read.table("lineage_data.lineagedemo.dinner") price = spark.read.table("lineage_data.lineagedemo.price") dinner_price = dinner.join(price, on="recipe_id") dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
Eseguire la cella facendo clic sulla cella e premendo MAIUSC+INVIO o facendo clic e selezionando Esegui cella.
Nella casella Cerca nella barra superiore dell'area di lavoro di Azure Databricks immettere
lineage_data.lineagedemo.price
e fare clic su Cerca lineage_data.lineagedemo.price in Databricks.In Tabelle fare clic sulla
price
tabella.Selezionare la scheda Derivazione e fare clic su Visualizza grafico di derivazione. Fare clic sulle icone per esplorare la derivazione dei dati generata dalle query SQL e Python.
Fare clic su una freccia che collega i nodi nel grafico di derivazione per aprire il pannello connessione derivazione . Il pannello Connessione derivazione mostra informazioni dettagliate sulla connessione, incluse tabelle di origine e di destinazione, notebook e flussi di lavoro.
Acquisire e visualizzare la derivazione del flusso di lavoro
La derivazione viene acquisita anche per qualsiasi flusso di lavoro che legge o scrive in Unity Catalog. Per illustrare la visualizzazione della derivazione per un flusso di lavoro di Azure Databricks, seguire questa procedura:
Fare clic su Nuovo nella barra laterale e selezionare Notebook dal menu.
Immettere un nome per il notebook e selezionare SQL in Lingua predefinita.
Fai clic su Crea.
Nella prima cella del notebook immettere la query seguente:
SELECT * FROM lineage_data.lineagedemo.menu
Fare clic su Pianifica nella barra superiore. Nella finestra di dialogo pianificazione selezionare Manuale, selezionare un cluster con accesso a Unity Catalog e fare clic su Crea.
Fare clic su Esegui adesso.
Nella casella Cerca nella barra superiore dell'area di lavoro di Azure Databricks immettere
lineage_data.lineagedemo.menu
e fare clic su Cerca lineage_data.lineagedemo.menu in Databricks.In Tabelle Consente di visualizzare tutte le tabelle fare clic sulla
menu
tabella.Selezionare la scheda Derivazione, fare clic su Flussi di lavoro e selezionare la scheda Downstream. Il nome del processo viene visualizzato in Nome processo come consumer della
menu
tabella.
Acquisire e visualizzare la derivazione del dashboard
Per illustrare la visualizzazione della derivazione per un dashboard SQL, seguire questa procedura:
- Passare alla pagina di destinazione di Azure Databricks e aprire Esplora cataloghi facendo clic su Catalogo nella barra laterale.
- Fare clic sul nome del catalogo, fare clic su lineagedemo e selezionare la
menu
tabella. È anche possibile usare la casella di testo Cerca tabelle nella barra superiore per cercare lamenu
tabella. - Fare clic su Azioni > Crea un dashboard rapido.
- Selezionare le colonne da aggiungere al dashboard e fare clic su Crea.
- Nella casella Cerca nella barra superiore dell'area di lavoro di Azure Databricks immettere
lineage_data.lineagedemo.menu
e fare clic su Cerca lineage_data.lineagedemo.menu in Databricks. - In Tabelle Consente di visualizzare tutte le tabelle fare clic sulla
menu
tabella. - Selezionare la scheda Derivazione e fare clic su Dashboard. Il nome del dashboard viene visualizzato in Nome dashboard come consumer della tabella dei menu.
Autorizzazioni di derivazione
I grafici di derivazione condividono lo stesso modello di autorizzazione di Unity Catalog. Se un utente non dispone del BROWSE
privilegio o SELECT
di una tabella, non può esplorare la derivazione. Inoltre, gli utenti possono visualizzare solo notebook, flussi di lavoro e dashboard autorizzati a visualizzare. Ad esempio, se si eseguono i comandi seguenti per un utente userA
non amministratore:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Quando userA
visualizza il grafico di derivazione per la lineage_data.lineagedemo.menu
tabella, la tabella verrà visualizzata menu
. Non saranno in grado di visualizzare informazioni sulle tabelle associate, ad esempio la tabella downstream lineage_data.lineagedemo.dinner
. La dinner
tabella viene visualizzata come masked
nodo nella visualizzazione su userA
e userA
non può espandere il grafico per visualizzare le tabelle downstream dalle tabelle a cui non dispone dell'autorizzazione per accedere.
Se si esegue il comando seguente per concedere l'autorizzazione BROWSE
a un utente userB
non amministratore:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
ora può visualizzare il grafico di derivazione per qualsiasi tabella nello lineage_data
schema.
Per altre informazioni sulla gestione dell'accesso a oggetti a protezione diretta nel catalogo unity, vedere Gestire i privilegi nel catalogo unity. Per altre informazioni sulla gestione dell'accesso agli oggetti dell'area di lavoro, ad esempio notebook, flussi di lavoro e dashboard, vedere Elenchi di controllo di accesso.
Eliminare i dati di derivazione
Avviso
Le istruzioni seguenti eliminano tutti gli oggetti archiviati nel catalogo unity. Usare queste istruzioni solo se necessario. Ad esempio, per soddisfare i requisiti di conformità.
Per eliminare i dati di derivazione, è necessario eliminare il metastore che gestisce gli oggetti del catalogo Unity. Per altre informazioni sull'eliminazione del metastore, vedere Eliminare un metastore. I dati verranno eliminati entro 90 giorni.
API di derivazione dei dati
L'API di derivazione dei dati consente di recuperare la derivazione di tabelle e colonne.
Importante
Per accedere alle API REST di Databricks, è necessario eseguire l'autenticazione.
Recuperare la derivazione della tabella
In questo esempio vengono recuperati i dati di derivazione per la dinner
tabella.
Richiedi
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'
Sostituire <workspace-instance>
.
In questo esempio viene usato un file .netrc .
Response
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
Recuperare la derivazione delle colonne
In questo esempio vengono recuperati i dati delle colonne per la dinner
tabella.
Richiedi
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'
Sostituire <workspace-instance>
.
In questo esempio viene usato un file .netrc .
Response
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}