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, het gegevensherkomstsysteem tablesen 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 tot op het niveau van column. Herkomstgegevens omvatten notebooks, taken en dashboards met betrekking tot de query. Herkomst kan in bijna realtime worden gevisualiseerd in Catalog Explorer en via een programma worden opgehaald met behulp van het herkomstsysteem tables en de Databricks REST API.
Afstamming wordt geaggregeerd over alle werkruimtes die aan een Unity Catalog metastore zijn gekoppeld. Dit betekent dat de herkomst die in één werkruimte is vastgelegd, zichtbaar is in elke andere werkruimte die dezelfde metastore shares gebruikt. Met name tables en andere gegevensobjecten die zijn geregistreerd in de metastore, zijn zichtbaar voor gebruikers met ten minste BROWSE
machtigingen voor deze objecten, in alle werkruimten die zijn gekoppeld aan de metastore. Gedetailleerde informatie over objecten op werkruimteniveau, zoals notebooks en dashboards in andere werkruimten, wordt echter gemaskeerd (zie Beperkingen en machtigingen voor herkomst).
Herkomstgegevens worden één 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 Catalogvoor 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.
Tables moet 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.
Om de herkomst van een table of een weergave te bekijken, moeten gebruikers ten minste de
BROWSE
-bevoegdheid hebben voor het bovenliggende catalog van de table of weergave. De bovenliggende catalog moet ook toegankelijk zijn vanuit de werkruimte. Zie Limitcatalog toegang 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 de herkomst van een Unity Catalog-pijplijnwilt weergeven, heeft u
CAN_VIEW
rechten op de pijplijn nodig.Voor het traceren van streaminggegevens tussen Delta tables is Databricks Runtime 11.3 LTS of hoger vereist.
voor Column herkomsttracering voor Delta Live-Tables-workloads is Databricks Runtime 13.3 LTS of hoger vereist.
Mogelijk moet u uw uitgaande firewallregels update 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 get, raadpleegt u Metastore, artefact-blobopslag, systeem tables opslag, 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 catalog naam
lineage_data
en de schema naamlineagedemo
gebruikt. Als u een andere catalog en schemawilt gebruiken, wijzigt u de namen die in de voorbeelden worden gebruikt.Als u dit voorbeeld wilt voltooien, moet u
CREATE
enUSE SCHEMA
bevoegdheden voor een schemahebben. Een metastore-beheerder, catalog-eigenaar, schema-eigenaar of gebruiker met deMANAGE
-bevoegdheid voor de schema kan deze bevoegdheden grant. Als u bijvoorbeeld alle gebruikers in de groep 'data_engineers' toestemming wilt geven om tables te maken in delineagedemo
schema in delineage_data
catalog, 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 selectNotebook in het menu.
Voer een naam in voor het notitieboek en selectSQL in standaardtaal.
In cluster select bevindt zich 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 op en selectCel uitvoeren.
Als u Catalog Explorer wilt gebruiken om de afstamming weer te geven die gegenereerd is door deze query's:
Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de
lineage_data.lineagedemo.dinner
table en select.Select het tabblad herkomst. Het herkomstvenster wordt weergegeven en geeft gerelateerde tables weer (voor dit voorbeeld is dit het
menu
table).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 met het plusteken op een knooppunt om meer connections 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 worden details weergegeven over de verbinding, waaronder bron- en doel-tables, notebooks en taken.
Als u het notitieblok wilt weergeven dat is gekoppeld aan de
dinner
table, select u het notitieblok in het deelvenster Herkomstverbinding 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 column-niveau wilt bekijken, klikt u op een column in de grafiek om de koppelingen naar gerelateerde columnste tonen. Als u bijvoorbeeld op 'full_menu' klikt column, wordt de upstream columns weergegeven waaruit de column 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 CelRun Menu uitvoeren te klikkenen te selecteren.
Zoek in het zoekvak in de bovenste balk van de Azure Databricks-werkruimte naar de
lineage_data.lineagedemo.price
table en select.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 worden details weergegeven over de verbinding, waaronder bron- en doel-tables, notebooks en taken.
Werkstroomherkomst vastleggen en weergeven
Herkomst wordt ook vastgelegd voor elke werkstroom die naar Unity Catalogleest of schrijft. Gegevensherkomst voor een Azure Databricks-werkstroom weergeven:
Klik op Nieuw in de zijbalk en selectNotitieblok in het menu.
Voer een naam in voor het notitieboek en selectSQL in 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. In het planningsdialoogvenster selecthandmatige, select 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
table en select.Klik op het tabblad Herkomst op Werkstromenen select het tabblad Downstream. De taaknaam wordt weergegeven onder Taaknaam als consument van de
menu
table.
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 Catalog in de zijbalk te klikken.
Klik op de catalog naam, klik op herkomstdemoen select de
menu
table. U kunt ook het vak Zoeken in de bovenste balk gebruiken om naar demenu
tablete zoeken.Klik op Openen in een dashboard.
Select de columns die u aan het dashboard wilt toevoegen en klik op maken.
Het dashboard publiceren.
Alleen gepubliceerde dashboards worden bijgehouden in gegevensherkomst.
Zoek in het vak Zoeken in de bovenste balk naar de
lineage_data.lineagedemo.menu
table en select.Klik op het tabblad Herkomst op Dashboards. Het dashboard wordt weergegeven onder Dashboardnaam als consument van het menu table.
Herkomstmachtigingen
Herkomstgrafieken delen hetzelfde machtigingsmodel als Unity Catalog.
Tables en andere gegevensobjecten die zijn geregistreerd in de Unity Catalog-metastore, zijn alleen zichtbaar voor gebruikers met ten minste BROWSE
machtigingen voor deze objecten. Als een gebruiker niet beschikt over de BROWSE
of SELECT
bevoegdheid voor een table, kunnen ze de herkomst ervan niet verkennen. Afstammingsgrafieken geven Unity Catalog-objecten weer in alle werkruimten die zijn gekoppeld aan de metastore, zolang de gebruiker voldoende objectmachtigingen heeft.
Voer bijvoorbeeld de volgende opdrachten uit voor userA
:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Als userA
views de herkomstgrafiek voor de lineage_data.lineagedemo.menu
tablebekijken, zullen ze de menu
tablezien. Ze kunnen geen informatie zien over gekoppelde tables, zoals de stroomafwaartse lineage_data.lineagedemo.dinner
table. De dinner
table wordt weergegeven als een masked
knooppunt in de weergave naar userA
, en userA
kan de grafiek niet uitbreiden om de downstream tables van tables weer te geven waar ze geen toegang tot hebben.
Als u de volgende opdracht uitvoert om de grant machtiging voor BROWSE
te userB
, kan die gebruiker de herkomstgrafiek voor elke table in de lineage_data
schemabekijken:
GRANT BROWSE on lineage_data to `userB@company.com`;
Op dezelfde manier moeten gebruikers met afstammingen specifieke machtigingen hebben om objecten in de werkruimte, zoals notebooks, taken en dashboards, weer te geven. Daarnaast kunnen ze alleen gedetailleerde informatie over werkruimteobjecten zien wanneer ze zijn aangemeld bij de werkruimte waarin deze objecten zijn gemaakt. Gedetailleerde informatie over objecten op werkruimteniveau in andere werkruimten wordt gemaskeerd in de lijnengrafiek.
Zie Catalogvoor meer informatie over het beheren van toegang tot beveiligbare objecten in Unity . 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 van herkomst opvragen met behulp van systeem tables
U kunt het herkomstsysteem tables gebruiken om programmatisch een query uit te voeren op herkomstgegevens. Voor gedetailleerde instructies, zie Accountactiviteit controleren met systeem tables en het Herkomstsysteem tables referentie.
Als uw werkruimte zich in een regio bevindt die geen ondersteuning biedt voor Lineage System tables, kunt u ook de Data Lineage REST API gebruiken om gegevens op een programmeerbare manier op te halen.
Herkomst ophalen met behulp van de REST API voor gegevensherkomst
Met de gegevensherkomst-API kunt u table en column herkomst ophalen. Als uw werkruimte zich echter in een regio bevindt die ondersteuning biedt voor het herkomstsysteem tables, moet u systeem table query's gebruiken in plaats van de REST API. Systeem tables zijn een betere optie voor programmatisch ophalen van herkomstgegevens. De meeste regio's ondersteunen het herkomstsysteem tables.
Belangrijk
U moet u verifiëren voor toegang tot Databricks-REST API's.
table herkomst ophalen
In dit voorbeeld worden herkomstgegevens opgehaald voor de dinner
table.
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
}
]
}
]
}
column herkomst ophalen
In dit voorbeeld worden column gegevens opgehaald voor de dinner
table.
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
Hoewel de afkomst wordt samengevoegd voor alle werkruimten die zijn gekoppeld aan dezelfde Unity Catalog-metastore, zijn details voor werkruimteobjecten zoals notebooks en dashboards alleen zichtbaar in de werkruimte waarin ze zijn gemaakt.
Omdat lineage wordt berekend op een rolling windowvan één jaar, wordt lineage die meer dan een jaar geleden is verzameld, niet weergegeven. Als een taak of query bijvoorbeeld gegevens uit table A leest en naar table B schrijft, wordt de koppeling tussen table A en table B slechts één jaar weergegeven. U kunt herkomstgegevens filteren op tijdsbestek van één jaar binnen window.
Taken die gebruikmaken van de Jobs-API-aanvraag
runs submit
zijn niet beschikbaar bij het weergeven van herkomst. Table en column lijnage niveau worden nog steeds vastgelegd bij het gebruik van deruns submit
-aanvraag, maar de koppeling naar de run wordt niet vastgelegd.Unity Catalog legt de herkomst zo goed mogelijk vast op het column niveau. Er zijn echter enkele gevallen waarin de herkomst op niveau wherecolumnniet kan worden vastgelegd.
Column herkomst wordt alleen ondersteund wanneer zowel naar de bron als het doel wordt verwezen door table naam (bijvoorbeeld:
select * from <catalog>.<schema>.<table>
). Column herkomst kan niet worden vastgelegd als de bron of de bestemming wordt geadresseerd via een pad (bijvoorbeeld:select * from delta."s3://<bucket>/<path>"
).Als de naam van een table of weergave wordt gewijzigd, wordt herkomst niet vastgelegd voor de hernoemde table of weergave.
Als een schema of catalog van naam verandert, wordt de gegevenslijn niet vastgelegd voor tables en views onder de hernoemde catalog of schema.
Als u controlepunten voor Spark SQL-gegevenssets gebruikt, wordt herkomst niet vastgelegd.
Unity Catalog registreert in de meeste gevallen de herkomst van Delta Live Tables pijplijnen. In sommige gevallen kan volledige herkomstdekking echter niet worden gegarandeerd, bijvoorbeeld wanneer pijplijnen gebruikmaken van de WIJZIGINGEN TOEPASSEN API of TIJDELIJKE tables.
Herkomst legt geen Stack-functies vast.
Globale tijdelijke views worden niet vastgelegd in afstamming.
Tables onder
system.information_schema
worden niet vastgelegd in gegevenslijn.Volledige lineage op column-niveau 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 beïnvloeden en vertragen, met name in workloads die zeer uitgebreid zijn tables.