Samla in och visa data härstamning med hjälp av Unity Catalog
Den här artikeln beskriver hur du samlar in och visualiserar data härkomst med hjälp av Catalog Explorer, systemtabellerna för data härkomst och REST-API:et.
Du kan använda Unity Catalog för att samla in körningsdata härstamning mellan frågor som körs på Azure Databricks. Ursprung stöds för alla språk och samlas in ned till kolumnnivå. Härkomstdata omfattar notebook-filer, jobb och instrumentpaneler som är relaterade till frågan. Ursprung kan visualiseras i Catalog Explorer i nära realtid och hämtas programmatiskt med hjälp av ursprungssystemtabellerna och Databricks REST API.
Ursprunget aggregeras över alla arbetsytor som är kopplade till ett Unity Catalog-metaarkiv. Det innebär att ursprung som samlas in på en arbetsyta visas i alla andra arbetsytedelningar som metaarkivet. Användarna måste ha rätt behörighet för att kunna visa ursprungsdata. Ursprungsdata behålls i 1 år.
Följande bild är ett exempel på ett härstamningsdiagram. Specifika funktioner och exempel på data härkomst behandlas senare i den här artikeln.
Information om hur du spårar ursprunget för en maskininlärningsmodell finns i Spåra data härstamningen för en modell i Unity Catalog.
Krav
Följande krävs för att samla in dataursprung med hjälp av Unity Catalog:
Unity Catalog måste vara aktiverat på arbetsytan.
Tabeller måste registreras i ett Unity Catalog-metaarkiv.
Frågor måste använda Spark DataFrame (till exempel Spark SQL-funktioner som returnerar en DataFrame) eller Databricks SQL-gränssnitt. Exempel på Databricks SQL- och PySpark-frågor finns i Exempel.
Om du vill visa ursprunget för en tabell eller vy måste användarna ha minst behörigheten
BROWSE
för den överordnade katalogen i tabellen eller vyn. Den överordnade katalogen måste också vara tillgänglig från arbetsytan. Se Begränsa katalogåtkomst till specifika arbetsytor.Om du vill visa ursprungsinformation för notebook-filer, jobb eller instrumentpaneler måste användarna ha behörighet för dessa objekt enligt definitionen i inställningarna för åtkomstkontroll på arbetsytan. Se Ursprungsbehörigheter.
Om du vill visa ursprung för en Unity Catalog-aktiverad pipeline måste du ha
CAN_VIEW
behörighet för pipelinen.Ursprungsspårning av strömning mellan Delta-tabeller kräver Databricks Runtime 11.3 LTS eller senare.
Kolumnspårning för Delta Live Tables-arbetsbelastningar kräver Databricks Runtime 13.3 LTS eller senare.
Du kan behöva uppdatera dina regler för utgående brandvägg för att tillåta anslutning till Event Hubs-slutpunkten i Azure Databricks-kontrollplanet. Detta gäller vanligtvis om din Azure Databricks-arbetsyta distribueras i ditt eget virtuella nätverk (även kallat VNet-inmatning). Information om hur du hämtar Event Hubs-slutpunkten för din arbetsyteregion finns i IP-adresser för metaarkiv, bloblagring för artefakter, systemtabeller, loggbloblagring och Event Hubs-slutpunkt. Information om hur du konfigurerar användardefinierade vägar (UDR) för Azure Databricks finns i Användardefinierade routningsinställningar för Azure Databricks.
Exempel
Kommentar
I följande exempel används katalognamnet
lineage_data
och schemanamnetlineagedemo
. Om du vill använda en annan katalog och ett annat schema ändrar du namnen som används i exemplen.För att kunna slutföra det här exemplet måste du ha
CREATE
ochUSE SCHEMA
behörigheter för ett schema. En metaarkivadministratör, katalogägare eller schemaägare kan bevilja dessa privilegier. Om du till exempel vill ge alla användare i gruppen "data_engineers" behörighet att skapa tabeller ilineagedemo
schemat ilineage_data
katalogen kan en användare med någon av ovanstående behörigheter eller roller köra följande frågor:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Fånga och utforska ursprung
Så här samlar du in ursprungsdata:
Gå till din Azure Databricks-landningssida, klicka på Nytt i sidofältet och välj Notebook på menyn.
Ange ett namn på notebook-filen och välj SQL i Standardspråk.
I Kluster väljer du ett kluster med åtkomst till Unity Catalog.
Klicka på Skapa.
I den första notebook-cellen anger du följande frågor:
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
Om du vill köra frågorna klickar du i cellen och trycker på skift+retur eller klickar och väljer Kör cell.
Så här använder du Katalogutforskaren för att visa ursprunget som genereras av dessa frågor:
I rutan Sök i det övre fältet på Azure Databricks-arbetsytan söker du efter tabellen och väljer den
lineage_data.lineagedemo.dinner
.Välj fliken Ursprung . Ursprungspanelen visas och visar relaterade tabeller (i det här exemplet är
menu
det tabellen).Om du vill visa ett interaktivt diagram över data härstamningen klickar du på Visa ursprungsdiagram. Som standard visas en nivå i diagrammet. Klicka på ikonen på en nod för att visa fler anslutningar om de är tillgängliga.
Klicka på en pil som ansluter noder i ursprungsdiagrammet för att öppna anslutningspanelen För ursprung. Anslutningspanelen Ursprung visar information om anslutningen, inklusive käll- och måltabeller, notebook-filer och jobb.
Om du vill visa anteckningsboken
dinner
som är associerad med tabellen väljer du anteckningsboken i anslutningspanelen För ursprung eller stänger du ursprungsdiagrammet och klickar på Notebook-filer. Om du vill öppna anteckningsboken på en ny flik klickar du på anteckningsbokens namn.Om du vill visa ursprunget på kolumnnivå klickar du på en kolumn i diagrammet för att visa länkar till relaterade kolumner. Om du till exempel klickar på kolumnen "full_menu" visas de överordnade kolumner som kolumnen härleddes från:
Om du vill visa ursprung med ett annat språk, till exempel Python:
Öppna anteckningsboken som du skapade tidigare, skapa en ny cell och ange följande Python-kod:
%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")
Kör cellen genom att klicka i cellen och trycka på Skift+Retur eller klicka och välja Kör cell.
I rutan Sök i det övre fältet på Azure Databricks-arbetsytan söker du efter tabellen och väljer den
lineage_data.lineagedemo.price
.Gå till fliken Ursprung och klicka på Visa ursprungsdiagram. Klicka på ikonerna för att utforska data härstamningen som genereras av frågorna.
Klicka på en pil som ansluter noder i ursprungsdiagrammet för att öppna anslutningspanelen För ursprung. Anslutningspanelen Ursprung visar information om anslutningen, inklusive käll- och måltabeller, notebook-filer och jobb.
Avbilda och visa arbetsflödets ursprung
Ursprung samlas också in för alla arbetsflöden som läser eller skriver till Unity Catalog. Så här visar du ursprung för ett Azure Databricks-arbetsflöde:
Klicka på Nytt i sidopanelen och välj Anteckningsbok på menyn.
Ange ett namn på notebook-filen och välj SQL i Standardspråk.
Klicka på Skapa.
I den första notebook-cellen anger du följande fråga:
SELECT * FROM lineage_data.lineagedemo.menu
Klicka på Schemalägg i det övre fältet. I schemadialogrutan väljer du Manuell, väljer ett kluster med åtkomst till Unity Catalog och klickar på Skapa.
Klicka på Kör nu.
I rutan Sök i det övre fältet på Azure Databricks-arbetsytan söker du efter tabellen och väljer den
lineage_data.lineagedemo.menu
.På fliken Ursprung klickar du på Arbetsflöden och väljer fliken Underordnad. Jobbnamnet visas under Jobbnamn som konsument av
menu
tabellen.
Avbilda och visa instrumentpanelens ursprung
Så här skapar du en instrumentpanel och visar dess data härkomst:
Gå till azure Databricks-landningssidan och öppna Katalogutforskaren genom att klicka på Katalog i sidofältet.
Klicka på katalognamnet, klicka på lineagedemo och välj
menu
tabellen. Du kan också använda sökrutan i det övre fältet för att sökamenu
efter tabellen.Klicka på Öppna på en instrumentpanel.
Välj de kolumner som du vill lägga till på instrumentpanelen och klicka på Skapa.
Publicera instrumentpanelen.
Endast publicerade instrumentpaneler spåras i data härkomst.
I rutan Sök i det övre fältet söker du efter tabellen och väljer den
lineage_data.lineagedemo.menu
.På fliken Ursprung klickar du på Instrumentpaneler. Instrumentpanelen visas under Instrumentpanelens namn som konsument av menytabellen.
Ursprungsbehörigheter
Ursprungsdiagram delar samma behörighetsmodell som Unity Catalog. Om en användare inte har behörigheten BROWSE
eller SELECT
på en tabell kan de inte utforska ursprunget. Dessutom kan användarna bara se notebook-filer, jobb och instrumentpaneler som de har behörighet att visa. Om du till exempel kör följande kommandon för en icke-administratörsanvändare userA
:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
När userA
du visar ursprungsdiagrammet för lineage_data.lineagedemo.menu
tabellen visas tabellen menu
. De kommer inte att kunna se information om associerade tabeller, till exempel den underordnade lineage_data.lineagedemo.dinner
tabellen. Tabellen dinner
visas som en masked
nod i visningen till userA
och userA
kan inte expandera diagrammet för att visa underordnade tabeller från tabeller som de inte har behörighet att komma åt.
Om du kör följande kommando för att bevilja behörigheten BROWSE
till en icke-administratörsanvändare userB
:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
kan nu visa ursprungsdiagrammet för valfri tabell i lineage_data
schemat.
Mer information om hur du hanterar åtkomst till skyddsbara objekt i Unity Catalog finns i Hantera privilegier i Unity Catalog. Mer information om hur du hanterar åtkomst till arbetsyteobjekt som notebook-filer, jobb och instrumentpaneler finns i Åtkomstkontrollistor.
Ta bort ursprungsdata
Varning
Följande instruktioner tar bort alla objekt som lagras i Unity Catalog. Använd endast dessa instruktioner om det behövs. Till exempel för att uppfylla efterlevnadskraven.
Om du vill ta bort ursprungsdata måste du ta bort metaarkivet som hanterar Unity Catalog-objekten. Mer information om hur du tar bort metaarkivet finns i Ta bort ett metaarkiv. Data tas bort inom 90 dagar.
Fråga efter ursprungsdata med hjälp av systemtabeller
Du kan använda ursprungssystemtabellerna för att programmatiskt fråga efter ursprungsdata. Detaljerade anvisningar finns i Övervaka användning med systemtabeller och referens för ursprungssystemtabeller.
Om din arbetsyta finns i en region som inte har stöd för ursprungssystemtabeller kan du också använda REST-API:et data härkomst för att hämta ursprungsdata programmatiskt.
Hämta ursprung med hjälp av REST-API:et för data härkomst
Med API:et för data härkomst kan du hämta tabell- och kolumn härkomst. Men om din arbetsyta finns i en region som stöder ursprungssystemtabellerna bör du använda systemtabellfrågor i stället för REST-API:et. Systemtabeller är ett bättre alternativ för programmatisk hämtning av ursprungsdata. De flesta regioner stöder ursprungssystemtabellerna.
Viktigt!
För att få åtkomst till Databricks REST API:er måste du autentisera.
Hämta tabell härkomst
Det här exemplet hämtar ursprungsdata för dinner
tabellen.
Förfrågan
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}'
Ersätt <workspace-instance>
.
I det här exemplet används en .netrc-fil .
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
}
]
}
]
}
Hämta kolumn härkomst
Det här exemplet hämtar kolumndata för dinner
tabellen.
Förfrågan
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"}'
Ersätt <workspace-instance>
.
I det här exemplet används en .netrc-fil .
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"
}
]
}
Begränsningar
- Eftersom ursprung beräknas i ett rullande ettårsfönster visas inte ursprung som samlats in för mer än ett år sedan. Om till exempel ett jobb eller en fråga läser data från tabell A och skriver till tabell B, visas länken mellan tabell A och tabell B endast i ett år. Du kan filtrera ursprungsdata efter tidsram inom ettårsfönstret.
- Jobb som använder jobb-API-begäran
runs submit
är inte tillgängliga när du visar ursprung. Ursprung på tabell- och kolumnnivå registreras fortfarande när du använderruns submit
begäran, men länken till körningen registreras inte. - Unity Catalog samlar in ursprung till kolumnnivån i så stor utsträckning som möjligt. Det finns dock vissa fall då det inte går att samla in ursprung på kolumnnivå.
- Kolumn härkomst stöds endast när både källan och målet refereras till av tabellnamnet (exempel:
select * from <catalog>.<schema>.<table>
). Det går inte att avbilda kolumnraden om källan eller målet hanteras av sökvägen (exempel:select * from delta."s3://<bucket>/<path>"
). - Om en tabell eller vy har bytt namn registreras inte ursprung för den omdöpta tabellen eller vyn.
- Om ett schema eller en katalog har bytt namn registreras inte ursprung för tabeller och vyer under den omdöpta katalogen eller schemat.
- Om du använder Kontrollpunkter för Spark SQL-datauppsättning samlas inte ursprunget in.
- Unity Catalog samlar in ursprung från Delta Live Tables-pipelines i de flesta fall. I vissa fall kan dock fullständig härkomsttäckning inte garanteras, till exempel när pipelines använder API:et APPLY CHANGES eller TEMPORÄRA tabeller.
- Ursprunget avbildar inte Stack-funktioner.
- Globala temporära vyer samlas inte in i ursprunget.
- Tabeller under
system.information_schema
samlas inte in i ursprunget.