Delen via


Gegevensherkomst vastleggen en weergeven met behulp van Unity Catalog

In dit artikel wordt beschreven hoe u gegevensherkomst kunt vastleggen en visualiseren met Behulp van Catalog Explorer, de tabellen van het gegevensherkomstsysteem en de REST API.

U kunt Unity Catalog gebruiken om runtimegegevensherkomst vast te leggen voor query's die worden uitgevoerd in Azure Databricks. Herkomst wordt ondersteund voor alle talen en wordt vastgelegd op kolomniveau. Herkomstgegevens omvatten notebooks, werkstromen en dashboards die betrekking hebben op de query. Herkomst kan worden gevisualiseerd in Catalog Explorer in bijna realtime en programmatisch worden opgehaald met behulp van de tabellen van het herkomstsysteem en de Databricks REST API.

Herkomst wordt samengevoegd in alle werkruimten die zijn gekoppeld aan een Unity Catalog-metastore. Dit betekent dat herkomst die in de ene werkruimte is vastgelegd, zichtbaar is in elke andere werkruimte die de metastore deelt. Gebruikers moeten over de juiste machtigingen beschikken om de herkomstgegevens weer te geven. Herkomstgegevens worden 1 jaar bewaard.

De volgende afbeelding is een voorbeeldgrafiek van herkomst. Verderop in dit artikel worden specifieke gegevensherkomstfunctionaliteit en voorbeelden behandeld.

Overzicht van herkomst

Zie De gegevensherkomst van een model bijhouden in Unity Catalog voor meer informatie over het bijhouden van de herkomst van een machine learning-model.

Vereisten

Het volgende is vereist om gegevensherkomst vast te leggen met behulp van Unity Catalog:

  • Voor de werkruimte moet Unity Catalog zijn ingeschakeld.

  • Tabellen moeten worden geregistreerd in een Unity Catalog-metastore.

  • Query's moeten gebruikmaken van het Spark DataFrame (bijvoorbeeld Spark SQL-functies die een DataFrame retourneren) of Databricks SQL-interfaces. Zie Voorbeelden voor voorbeelden van Databricks SQL- en PySpark-query's.

  • Als u de herkomst van een tabel of weergave wilt weergeven, moeten gebruikers ten minste de bevoegdheid hebben voor de BROWSE bovenliggende catalogus van de tabel of weergave.

  • Om herkomstgegevens voor notebooks, werkstromen of dashboards te bekijken, moeten gebruikers machtigingen hebben voor deze objecten, zoals gedefinieerd door de instellingen voor toegangsbeheer in de werkruimte. Zie Herkomstmachtigingen.

  • Als u herkomst voor een Unity Catalog-pijplijn wilt weergeven, moet u machtigingen hebben CAN_VIEW voor de pijplijn.

  • Voor het bijhouden van gegevensherkomst tussen Delta-tabellen is Databricks Runtime 11.3 LTS of hoger vereist.

  • Voor het bijhouden van kolomherkomsten voor Delta Live Tables-workloads is Databricks Runtime 13.3 LTS of hoger vereist.

  • Mogelijk moet u uw uitgaande firewallregels bijwerken om connectiviteit met het Event Hubs-eindpunt in het Azure Databricks-besturingsvlak mogelijk te maken. Dit geldt doorgaans als uw Azure Databricks-werkruimte wordt geïmplementeerd in uw eigen VNet (ook wel VNet-injectie genoemd). Als u het Event Hubs-eindpunt voor uw werkruimteregio wilt ophalen, raadpleegt u Metastore, blobopslag voor artefacten, opslag van systeemtabellen, logboek-blobopslag en IP-adressen van Event Hubs-eindpunten. Zie Door de gebruiker gedefinieerde route-instellingen voor Azure Databricks voor informatie over het instellen van door de gebruiker gedefinieerde routes (UDR) voor Azure Databricks.

Voorbeelden

Notitie

  • In de volgende voorbeelden worden de catalogusnaam lineage_data en de schemanaam lineagedemogebruikt. Als u een andere catalogus en een ander schema wilt gebruiken, wijzigt u de namen die in de voorbeelden worden gebruikt.

  • Als u dit voorbeeld wilt voltooien, moet u beschikken over en USE SCHEMA bevoegdheden voor CREATE een schema. Een metastore-beheerder, cataloguseigenaar of schema-eigenaar kan deze bevoegdheden verlenen. Als u bijvoorbeeld alle gebruikers in de groep 'data_engineers' toestemming wilt geven om tabellen in het lineagedemo schema in de lineage_data catalogus te maken, kan een gebruiker met een van de bovenstaande bevoegdheden of rollen de volgende query's uitvoeren:

    CREATE SCHEMA lineage_data.lineagedemo;
    GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
    

Herkomst vastleggen en verkennen

Gegevens over herkomst vastleggen:

  1. Ga naar de landingspagina van Azure Databricks, klik op Nieuw pictogram Nieuw in de zijbalk en selecteer Notebook in het menu.

  2. Voer een naam in voor het notebook en selecteer SQL in de standaardtaal.

  3. Selecteer in Cluster een cluster met toegang tot Unity Catalog.

  4. Klik op Create.

  5. Voer in de eerste notebookcel de volgende query's in:

    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
    
  6. Als u de query's wilt uitvoeren, klikt u in de cel en drukt u op Shift+Enter of klikt Menu Uitvoeren u erop en selecteert u Cel uitvoeren.

Als u Catalog Explorer wilt gebruiken om de herkomst weer te geven die door deze query's is gegenereerd:

  1. Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de lineage_data.lineagedemo.dinner tabel en selecteer deze.

  2. Selecteer het tabblad Herkomst . Het herkomstvenster wordt weergegeven en geeft gerelateerde tabellen weer (in dit voorbeeld is dit de menu tabel).

  3. Als u een interactieve grafiek van de gegevensherkomst wilt weergeven, klikt u op Herkomstgrafiek weergeven. Standaard wordt er één niveau weergegeven in de grafiek. Klik op het Plustekenpictogram pictogram op een knooppunt om meer verbindingen weer te geven als deze beschikbaar zijn.

  4. Klik op een pijl waarmee knooppunten in de herkomstgrafiek worden verbonden om het deelvenster Herkomstverbinding te openen. Het deelvenster Herkomstverbinding bevat details over de verbinding, waaronder bron- en doeltabellen, notebooks en werkstromen.

    Herkomstgrafiek

  5. Als u het notitieblok wilt weergeven dat aan de dinner tabel is gekoppeld, selecteert u het notitieblok in het verbindingsvenster Van herkomst of sluit u de herkomstgrafiek en klikt u op Notitieblokken. Als u het notitieblok op een nieuw tabblad wilt openen, klikt u op de naam van het notitieblok.

  6. Als u de herkomst op kolomniveau wilt weergeven, klikt u op een kolom in de grafiek om koppelingen naar gerelateerde kolommen weer te geven. Als u bijvoorbeeld op de kolom 'full_menu' klikt, worden de upstreamkolommen weergegeven waaruit de kolom is afgeleid:

    Volledige menukolomherkomst

Als u herkomst wilt weergeven met een andere taal, bijvoorbeeld Python:

  1. Open het notebook dat u eerder hebt gemaakt, maak een nieuwe cel en voer de volgende Python-code in:

    %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")
    
  2. Voer de cel uit door in de cel te klikken en op Shift+Enter te drukken of op Cel uitvoeren te klikkenMenu Uitvoeren en te selecteren.

  3. Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de lineage_data.lineagedemo.price tabel en selecteer deze.

  4. Ga naar het tabblad Herkomst en klik op Herkomstgrafiek weergeven. Klik op de Plustekenpictogram pictogrammen om de gegevensherkomst te verkennen die door de query's is gegenereerd.

    Uitgevouwen herkomstgrafiek

  5. Klik op een pijl waarmee knooppunten in de herkomstgrafiek worden verbonden om het deelvenster Herkomstverbinding te openen. Het deelvenster Herkomstverbinding bevat details over de verbinding, waaronder bron- en doeltabellen, notebooks en werkstromen.

Werkstroomherkomst vastleggen en weergeven

Herkomst wordt ook vastgelegd voor elke werkstroom die leest of schrijft naar Unity Catalog. Gegevensherkomst voor een Azure Databricks-werkstroom weergeven:

  1. Klik op Nieuw pictogram Nieuw in de zijbalk en selecteer Notitieblok in het menu.

  2. Voer een naam in voor het notebook en selecteer SQL in de standaardtaal.

  3. Klik op Create.

  4. Voer in de eerste notebookcel de volgende query in:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. Klik op Planning in de bovenste balk. Selecteer Handmatig in het dialoogvenster Planning, selecteer een cluster met toegang tot Unity Catalog en klik op Maken.

  6. Klik op Nu uitvoeren.

  7. Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de lineage_data.lineagedemo.menu tabel en selecteer deze.

  8. Klik op het tabblad Herkomst op Werkstromen en selecteer het tabblad Downstream . De taaknaam wordt weergegeven onder Taaknaam als consument van de menu tabel.

Gegevens van dashboards vastleggen en weergeven

Een dashboard maken en de gegevensherkomst weergeven:

  1. Ga naar de landingspagina van Azure Databricks en open Catalog Explorer door op Catalogus in de zijbalk te klikken.

  2. Klik op de catalogusnaam, klik op herkomst en selecteer de menu tabel. U kunt ook het zoekvak in de bovenste balk gebruiken om naar de menu tabel te zoeken.

  3. Klik op Openen in een dashboard.

  4. Selecteer de kolommen die u wilt toevoegen aan het dashboard en klik op Maken.

  5. Het dashboard publiceren.

    Alleen gepubliceerde dashboards worden bijgehouden in gegevensherkomst.

  6. Zoek in het zoekvak in de bovenste balk naar de lineage_data.lineagedemo.menu tabel en selecteer deze.

  7. Klik op het tabblad Herkomst op Dashboards. Het dashboard wordt weergegeven onder Dashboardnaam als consument van de menutabel.

Herkomstmachtigingen

Herkomstgrafieken delen hetzelfde machtigingsmodel als Unity Catalog. Als een gebruiker niet over de BROWSE of SELECT bevoegdheid van een tabel beschikt, kan deze de herkomst niet verkennen. Daarnaast kunnen gebruikers alleen notitieblokken, werkstromen en dashboards zien die ze mogen weergeven. Als u bijvoorbeeld de volgende opdrachten uitvoert voor een niet-beheerder:userA

GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;

Wanneer userA de herkomstgrafiek voor de lineage_data.lineagedemo.menu tabel wordt weergegeven, zien ze de menu tabel. Ze kunnen geen informatie zien over gekoppelde tabellen, zoals de downstreamtabel lineage_data.lineagedemo.dinner . De dinner tabel wordt weergegeven als een masked knooppunt in de weergave en userAuserA kan de grafiek niet uitbreiden om downstreamtabellen weer te geven uit tabellen waarvoor ze geen toegang hebben.

Als u de volgende opdracht uitvoert om de BROWSE machtiging te verlenen aan een niet-beheerder:userB

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

userB kan nu de herkomstgrafiek voor elke tabel in het lineage_data schema bekijken.

Zie Bevoegdheden beheren in Unity Catalog voor meer informatie over het beheren van toegang tot beveiligbare objecten in Unity Catalog. Zie Toegangsbeheerlijsten voor meer informatie over het beheren van toegang tot werkruimteobjecten, zoals notebooks, werkstromen en dashboards.

Herkomstgegevens verwijderen

Waarschuwing

Met de volgende instructies worden alle objecten verwijderd die zijn opgeslagen in Unity Catalog. Gebruik deze instructies alleen indien nodig. Bijvoorbeeld om te voldoen aan nalevingsvereisten.

Als u herkomstgegevens wilt verwijderen, moet u de metastore verwijderen die de Unity Catalog-objecten beheert. Zie Een metastore verwijderen voor meer informatie over het verwijderen van de metastore. Gegevens worden binnen 90 dagen verwijderd.

Gegevens over herkomst opvragen met behulp van systeemtabellen

U kunt de systeemtabellen voor herkomst gebruiken om programmatisch een query uit te voeren op herkomstgegevens. Zie Gebruik bewaken met systeemtabellen en herkomstsysteemtabellen voor gedetailleerde instructies.

Als uw werkruimte zich in een regio bevindt die geen ondersteuning biedt voor herkomstsysteemtabellen, kunt u ook de REST API voor gegevensherkomst gebruiken om gegevens programmatisch op te halen.

Herkomst ophalen met behulp van de REST API voor gegevensherkomst

Met de gegevensherkomst-API kunt u tabel- en kolomherkomst ophalen. Als uw werkruimte zich echter in een regio bevindt die ondersteuning biedt voor de herkomstsysteemtabellen, moet u systeemtabelquery's gebruiken in plaats van de REST API. Systeemtabellen zijn een betere optie voor het programmatisch ophalen van herkomstgegevens. De meeste regio's ondersteunen de herkomstsysteemtabellen.

Belangrijk

U moet u verifiëren voor toegang tot Databricks-REST API's.

Tabelherkomst ophalen

In dit voorbeeld worden herkomstgegevens voor de dinner tabel opgehaald.

Aanvraag

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}'

Vervangen <workspace-instance>.

In dit voorbeeld wordt een .netrc-bestand gebruikt.

Respons

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

Kolomherkomst ophalen

In dit voorbeeld worden kolomgegevens voor de dinner tabel opgehaald.

Aanvraag

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"}'

Vervangen <workspace-instance>.

In dit voorbeeld wordt een .netrc-bestand gebruikt.

Respons

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

Beperkingen

  • Omdat herkomst wordt berekend in een doorlopend venster van één jaar, wordt herkomst die meer dan één jaar geleden is verzameld, niet weergegeven. Als een taak of query bijvoorbeeld gegevens uit tabel A leest en naar tabel B schrijft, wordt de koppeling tussen tabel A en tabel B slechts één jaar weergegeven. U kunt herkomstgegevens filteren op tijdsbestek binnen het venster van één jaar.
  • Werkstromen die gebruikmaken van de jobs-API-aanvraag runs submit zijn niet beschikbaar bij het weergeven van herkomst. Gegevensherkomst op tabel- en kolomniveau wordt nog steeds vastgelegd bij het gebruik van de runs submit aanvraag, maar de koppeling naar de uitvoering wordt niet vastgelegd.
  • Unity Catalog legt gegevensherkomst op kolomniveau zo veel mogelijk vast. Er zijn echter enkele gevallen waarin herkomst op kolomniveau niet kan worden vastgelegd.
  • Kolomherkomst wordt alleen ondersteund wanneer zowel naar de bron als het doel wordt verwezen met de tabelnaam (voorbeeld: select * from <catalog>.<schema>.<table>). Kolomherkomst kan niet worden vastgelegd als de bron of het doel wordt geadresseerd door het pad (voorbeeld: select * from delta."s3://<bucket>/<path>").
  • Als de naam van een tabel of weergave is gewijzigd, wordt herkomst niet vastgelegd voor de tabel of weergave met de naam ervan.
  • Als de naam van een schema of catalogus wordt gewijzigd, wordt herkomst niet vastgelegd voor tabellen en weergaven onder de hernoemde catalogus of het hernoemde schema.
  • Als u controlepunten voor Spark SQL-gegevenssets gebruikt, wordt herkomst niet vastgelegd. Zie pyspark.sql.DataFrame.checkpoint in de Apache Spark-documentatie.
  • Unity Catalog legt in de meeste gevallen herkomst van Delta Live-tabellenpijplijnen vast. In sommige gevallen kan volledige herkomstdekking echter niet worden gegarandeerd, bijvoorbeeld wanneer pijplijnen de APPLY CHANGES-API of TIJDELIJKE tabellen gebruiken.
  • Herkomst legt geen Stack-functies vast.