Condividi tramite


Visualizzare la derivazione dei dati con Unity Catalog

Questo articolo descrive come visualizzare la derivazione dei dati usando Esplora cataloghi, le tabelle di sistema di derivazione dei dati e l'API REST.

Panoramica della derivazione dei dati

Unity Catalog acquisisce la derivazione dei dati di runtime tra query eseguite in Azure Databricks. La lineage è supportata per tutte le lingue ed è registrata fino al livello di colonna. I dati di derivazione includono notebook, processi di lavoro e dashboard inerenti alla query. La derivazione può essere visualizzata in Esplora cataloghi quasi in tempo reale e recuperata a livello di codice usando le tabelle di sistema di derivazione e l'API REST di Databricks.

La derivazione viene aggregata in tutte le aree di lavoro collegate a un metastore di Unity Catalog. Ciò significa che la derivazione acquisita in un'area di lavoro è visibile in qualsiasi altra area di lavoro che condivide tale metastore. In particolare, le tabelle e altri oggetti dati registrati nel metastore sono visibili agli utenti che hanno almeno BROWSE autorizzazioni per tali oggetti, in tutte le aree di lavoro collegate al metastore. Tuttavia, informazioni dettagliate sugli oggetti a livello di area di lavoro, ad esempio notebook e dashboard in altre aree di lavoro, sono mascherate (vedere Limitazioni della derivazione e autorizzazioni di derivazione).

I dati di derivazione vengono conservati per un anno.

La seguente immagine seguente è un grafico di derivazione di esempio.

panoramica della linea di discendenza.

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 usando Unity Catalog:

  • Le tabelle devono essere registrate in un metastore del catalogo Unity.
  • Le query devono usare il dataframe Spark (ad esempio, funzioni SPARK SQL che restituiscono un dataframe) o interfacce SQL di Databricks, ad esempio notebook o editor di query SQL.

Per visualizzare la derivazione dei dati:

Requisiti di calcolo:

  • Il monitoraggio della tracciabilità dello streaming tra tabelle Delta richiede Databricks Runtime 11.3 LTS o una versione successiva.
  • Il tracciamento della derivazione delle colonne per i workload di Lakeflow Declarative Pipelines richiede Databricks Runtime 13.3 LTS o versioni successive.

Requisiti di rete:

Visualizzare la derivazione dei dati con Esplora cataloghi

Per usare Esplora cataloghi per visualizzare la derivazione della tabella:

  1. Nell'area di lavoro di Azure Databricks fare clic sull'icona Dati.Catalogo.

  2. Cerca o sfoglia la tua tabella.

  3. Selezionare la scheda Derivazione . Viene visualizzato il pannello di derivazione e vengono visualizzate le tabelle correlate.

  4. 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. Fare clic sull'icona Segno Più su un nodo per visualizzare altre connessioni, se disponibili.

  5. Fare clic su una freccia che connette i nodi nel grafico di derivazione per aprire il pannello Connessione derivazione.

    Il pannello connessione Lineage mostra i dettagli sulla connessione, incluse le tabelle di origine e di destinazione, i notebook e i processi.

    grafico della genealogia.

  6. Per visualizzare un notebook associato a una tabella, selezionare il notebook nel pannello Connessione derivazione oppure chiudere il grafico di derivazione e fare clic su Notebook.

    Per aprire il notebook in una nuova scheda, fare clic sul nome del notebook.

  7. 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 full_menu colonna in questo grafico di esempio vengono visualizzate le colonne upstream da cui è stata derivata la colonna:

    derivazione della colonna del menu completo.

Visualizzare la derivazione del flusso di lavoro (processo)

Per visualizzare la derivazione del flusso di lavoro, passare alla scheda Derivazione di una tabella, fare clic su Flussi di lavoro e selezionare la scheda Downstream . Il nome del processo viene visualizzato in Nome processo come consumer della tabella.

Visualizzare la derivazione del dashboard

Per visualizzare la derivazione del dashboard, passare alla scheda Derivazione di una tabella e fare clic su Dashboard. Il dashboard appare sotto Nome del dashboard come utente della tabella.

Acquisire la derivazione della tabella con Databricks Assistant

Databricks Assistant fornisce informazioni dettagliate sulla storia e analisi delle tabelle.

Per ottenere informazioni sulla derivazione tramite Assistente:

  1. Nella barra laterale dell'area di lavoro fare clic sull'icona Dati.Catalogo.
  2. Sfogliare o cercare il catalogo, fare clic sul nome del catalogo e quindi fare clic sull'icona Assistente guida in-product - icona Assistente colori nell'angolo in alto a destra.
  3. Al prompt dell'Assistente digitare:
    • /getTableLineages per visualizzare le dipendenze upstream e downstream.
    • /getTableInsights per accedere a informazioni dettagliate basate sui metadati, ad esempio attività utente e modelli di query.

Queste query consentono all'Assistente di rispondere a domande come "mostra i flussi a valle" o "chi interroga più spesso questa tabella".

Databricks Assistant fornisce derivazione e informazioni dettagliate sulle tabelle.

Eseguire query sui dati di derivazione usando le tabelle di sistema

È possibile usare le tabelle di sistema di derivazione per eseguire query sui dati di derivazione a livello di codice. Per istruzioni dettagliate, vedi Monitorare l'attività dell'account con le tabelle di sistema e Riferimento alle tabelle di sistema Lineage.

Se l'area di lavoro si trova in un'area che non supporta le tabelle di sistema di derivazione, è invece possibile usare l'API REST Derivazione dati per recuperare i dati di derivazione a livello di codice.

Recuperare la tracciabilità dei dati usando la REST API

L'API di derivazione dei dati consente di recuperare la derivazione di tabelle e colonne. Tuttavia, se l'area di lavoro si trova in un'area che supporta le tabelle di sistema di derivazione, è consigliabile usare query di tabella di sistema anziché l'API REST. Le tabelle di sistema sono un'opzione migliore per il recupero programmatico dei dati di derivazione. La maggior parte delle aree supporta le tabelle di sistema di derivazione.

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 tabella dinner.

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.

Risposta

{
  "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 il lineage delle colonne

In questo esempio vengono recuperati i dati delle colonne per la tabella dinner.

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.

Risposta

{
  "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"
    }
  ]
}

Autorizzazioni di derivazione.

I grafici di lineage condividono lo stesso modello di autorizzazione di Unity Catalog. Le tabelle e altri oggetti dati registrati nel metastore del catalogo Unity sono visibili solo agli utenti che dispongono almeno di autorizzazioni BROWSE per tali oggetti. Se un utente non dispone del privilegio BROWSE o SELECT per una tabella, non può esplorarne la derivazione. I grafici di derivazione mostrano gli oggetti del Catalogo Unity in tutte le aree di lavoro collegate al metastore, a condizione che l'utente disponga di adeguate autorizzazioni sugli oggetti.

Ad esempio, eseguire i comandi seguenti per userA:

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 tabella lineage_data.lineagedemo.menu, verrà visualizzata la tabella menu. Non saranno in grado di visualizzare informazioni sulle tabelle associate, ad esempio la tabella downstream lineage_data.lineagedemo.dinner. La tabella dinner viene visualizzata come nodo masked nella visualizzazione per userAe userA non è in grado di 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 userB, tale utente può visualizzare il grafico di derivazione per qualsiasi tabella nello lineage_data schema:

GRANT BROWSE on lineage_data to `userB@company.com`;

Analogamente, gli utenti di derivazione devono disporre di autorizzazioni specifiche per visualizzare oggetti dell'area di lavoro come notebook, processi e dashboard. Inoltre, possono visualizzare solo informazioni dettagliate sugli oggetti dell'area di lavoro quando vengono connessi all'area di lavoro in cui sono stati creati tali oggetti. Le informazioni dettagliate sugli oggetti a livello di area di lavoro in altre aree di lavoro sono mascherate nel grafico di derivazione.

Per altre informazioni sulla gestione dell'accesso a oggetti a protezione diretta in Unity Catalog, vedere Gestire i privilegi in Unity Catalog. Per altre informazioni sulla gestione dell'accesso agli oggetti dell'area di lavoro, ad esempio notebook, processi e dashboard, si veda Elenchi di controllo di accesso.

Limitazioni di derivazione

La derivazione dei dati presenta le limitazioni seguenti:

  • Sebbene la derivazione sia aggregata per tutte le aree di lavoro collegate allo stesso metastore del catalogo Unity, i dettagli degli oggetti dell'area di lavoro come notebook e dashboard sono visibili solo nell'area di lavoro in cui sono stati creati.

  • Poiché la derivazione viene calcolata in una finestra mobile di un anno, la derivazione raccolta più di un anno fa non viene visualizzata. Ad esempio, se un processo o una query legge dati dalla tabella A e scrive nella tabella B, il collegamento tra la tabella A e la tabella B viene visualizzato solo per un anno. È possibile filtrare i dati di derivazione in base all'intervallo di tempo all'interno della finestra di un anno.

  • Le attività che utilizzano la richiesta runs submit dell'API Jobs non sono disponibili nelle visualizzazioni di lineage. La derivazione a livello di tabella e colonna viene ancora acquisita quando un processo usa la runs submit richiesta, ma il collegamento all'esecuzione non viene acquisito.

  • Se una tabella o una vista viene rinominata, la derivazione non viene acquisita per la tabella o la vista rinominata.

  • Se uno schema o un catalogo viene rinominato, la derivazione non viene acquisita per tabelle e viste nel catalogo o nello schema rinominato.

  • Se si usa il checkpoint del set di dati Spark SQL, la derivazione non viene acquisita.

  • Unity Catalog acquisisce il lineage dalle pipeline dichiarative di Lakeflow nella maggior parte dei casi. In alcuni casi, tuttavia, non è possibile garantire una copertura di derivazione completa, ad esempio quando le pipeline usano tabelle PRIVATE.

  • La derivazione non acquisisce le funzioni stack.

  • Le visualizzazioni temporanee globali non vengono acquisite in derivazione.

  • Le tabelle sotto system.information_schema non vengono acquisite nel lineage.

  • Il Catalogo Unity acquisisce il tracciamento al livello di colonna il più possibile. Tuttavia, esistono alcuni casi in cui non è possibile acquisire la derivazione a livello di colonna. Questi includono:

    • Impossibile acquisire la derivazione delle colonne se l'origine o la destinazione viene fatto riferimento come percorso (esempio: select * from delta."s3://<bucket>/<path>"). La derivazione delle colonne è supportata solo quando si fa riferimento sia all'origine che alla destinazione in base al nome della tabella (ad esempio: select * from <catalog>.<schema>.<table>).

    • La derivazione completa a livello di colonna non viene acquisita per impostazione predefinita per le operazioni di MERGE.

      È possibile attivare l'acquisizione della derivazione delle operazioni MERGE impostando la proprietà Spark spark.databricks.dataLineage.mergeIntoV2Enabled su true. L'abilitazione di questo flag può rallentare le prestazioni delle query, in particolare nei carichi di lavoro che coinvolgono tabelle molto ampie.