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, taken en dashboards met betrekking tot 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.
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
BROWSE
bevoegdheid hebben voor de bovenliggende catalogus van de tabel of weergave. De bovenliggende catalogus moet ook toegankelijk zijn vanuit de werkruimte. Zie Catalogustoegang beperken tot specifieke werkruimten.Als u herkomstgegevens voor notebooks, taken of dashboards wilt weergeven, 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 schemanaamlineagedemo
gebruikt. 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 voorCREATE
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 hetlineagedemo
schema in delineage_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:
Ga naar de landingspagina van Azure Databricks, klik op Nieuw in de zijbalk en selecteer Notebook in het menu.
Voer een naam in voor het notebook en selecteer SQL in de standaardtaal.
Selecteer in Cluster een cluster met toegang tot Unity Catalog.
Klik op Create.
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
Als u de query's wilt uitvoeren, klikt u in de cel en drukt u op Shift+Enter of klikt 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:
Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de
lineage_data.lineagedemo.dinner
tabel en selecteer deze.Selecteer het tabblad Herkomst . Het herkomstvenster wordt weergegeven en geeft gerelateerde tabellen weer (in dit voorbeeld is dit de
menu
tabel).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 pictogram op een knooppunt om meer verbindingen weer te geven als deze beschikbaar zijn.
Klik op een pijl waarmee knooppunten in de herkomstgrafiek worden verbonden om het deelvenster Herkomstverbinding te openen. In het deelvenster Herkomstverbinding ziet u details over de verbinding, waaronder bron- en doeltabellen, notebooks en taken.
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.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:
Als u herkomst wilt weergeven met een andere taal, bijvoorbeeld Python:
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")
Voer de cel uit door in de cel te klikken en op Shift+Enter te drukken of op Cel uitvoeren te klikken en te selecteren.
Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de
lineage_data.lineagedemo.price
tabel en selecteer deze.Ga naar het tabblad Herkomst en klik op Herkomstgrafiek weergeven. Klik op de pictogrammen om de gegevensherkomst te verkennen die door de query's is gegenereerd.
Klik op een pijl waarmee knooppunten in de herkomstgrafiek worden verbonden om het deelvenster Herkomstverbinding te openen. In het deelvenster Herkomstverbinding ziet u details over de verbinding, waaronder bron- en doeltabellen, notebooks en taken.
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:
Klik op Nieuw in de zijbalk en selecteer Notitieblok in het menu.
Voer een naam in voor het notebook en selecteer SQL in de standaardtaal.
Klik op Create.
Voer in de eerste notebookcel de volgende query in:
SELECT * FROM lineage_data.lineagedemo.menu
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.
Klik op Nu uitvoeren.
Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de
lineage_data.lineagedemo.menu
tabel en selecteer deze.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:
Ga naar de landingspagina van Azure Databricks en open Catalog Explorer door op Catalogus in de zijbalk te klikken.
Klik op de catalogusnaam, klik op herkomst en selecteer de
menu
tabel. U kunt ook het zoekvak in de bovenste balk gebruiken om naar demenu
tabel te zoeken.Klik op Openen in een dashboard.
Selecteer de kolommen die u wilt toevoegen aan het dashboard en klik op Maken.
Het dashboard publiceren.
Alleen gepubliceerde dashboards worden bijgehouden in gegevensherkomst.
Zoek in het zoekvak in de bovenste balk naar de
lineage_data.lineagedemo.menu
tabel en selecteer deze.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, taken en dashboards zien die ze mogen bekijken. 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 userA
userA
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, taken 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 Accountactiviteit 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.
Taken 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 deruns 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.
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.
Globale tijdelijke weergaven worden niet vastgelegd in herkomst.
Tabellen onder
system.information_schema
worden niet vastgelegd in herkomst.Volledige gegevensherkomst op kolomniveau wordt niet standaard vastgelegd voor
MERGE
bewerkingen.U kunt herkomstopname voor
MERGE
bewerkingen inschakelen door de Spark-eigenschapspark.databricks.dataLineage.mergeIntoV2Enabled
in te stellen optrue
. Het inschakelen van deze vlag kan de prestaties van query's vertragen, met name in workloads die zeer brede tabellen omvatten.