Dela via


Samla in och visa data härstamning med hjälp av Unity Catalog

Den här artikeln beskriver hur du samlar in och visualiserar datahärkomst genom att använda Catalog Explorer, systemtabellerna för datahä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. Linjäritetsstöd finns för alla språk och fångas ner till kolumnnivån. Härkomstdata inkluderar anteckningsböcker, jobb och instrumentpaneler relaterade till frågan. Stamträd kan visualiseras i Catalog Explorer i nära realtid och hämtas via programkod med hjälp av systemtabeller för stamträd och Databricks REST API.

Härkomsten samlas över alla arbetsytor som är kopplade till ett Unity Catalog-metaarkiv. Det innebär att härkomst som samlas in på en arbetsyta visas i vilken annan arbetsyta som helst som delar det metaarkivet. Mer specifikt är tabeller och andra dataobjekt som registrerats i metaarkivet synliga för användare som har minst BROWSE behörigheter för dessa objekt, på alla arbetsytor som är kopplade till metaarkivet. Detaljerad information om objekt på arbetsytenivå som notebook-filer och instrumentpaneler på andra arbetsytor är dock maskerad (se Begränsningar och Härkomstbehörigheter).

Stamdata behålls i ett å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.

Släktlinjeöversikt.

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 härkomsten för en tabell eller en vy måste användarna ha minst behörigheten BROWSE på den överordnade katalogen för tabellen eller vyn. Den överordnade katalogen måste också vara tillgänglig från arbetsytan. Se Begränsa katalogåtkomst till specifika arbetsytor.
  • För att visa härstamningsinformation för notebook-filer, jobb eller instrumentpaneler måste användarna ha behörigheter för dessa objekt som definieras av åtkomstkontrollinställningarna i arbetsytan. Se Härkomstbehörigheter.
  • Om du vill visa härkomst för en Unity Catalog-aktiverad pipeline måste du ha CAN_VIEW för pipelinen.
  • Släktskaps- eller härstamningsspårning av strömning mellan Delta-tabeller kräver Databricks Runtime 11.3 LTS eller senare.
  • Spårning av kolumnursprung för arbetsbelastningar för DLT 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

Anteckning

  • I följande exempel används katalognamnet lineage_data och schemanamnet lineagedemo. 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 och USE SCHEMA behörigheter för ett schema. En metaarkivadministratör, katalogägare, schemaägare eller användare med MANAGE behörighet i schemat kan bevilja dessa privilegier. Om du till exempel vill ge alla användare i gruppen "data_engineers" behörighet att skapa tabeller i lineagedemo schemat i lineage_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:

  1. Gå till din Azure Databricks-landningssida, klicka på Ny ikonNytt i sidofältet och välj Notebook på menyn.

  2. Ange ett namn på notebook-filen och välj SQL i Standardspråk.

  3. I Kluster väljer du ett kluster med åtkomst till Unity Catalog.

  4. Klicka på Skapa.

  5. 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
    
  6. Om du vill köra frågorna klickar du i cellen och trycker på skift+retur eller klickar Kör-menyn och väljer Kör cell.

Så här använder du Katalogutforskaren för att visa härledningen som genereras av dessa frågor:

  1. 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 .

  2. Välj fliken Ursprung . Ursprungspanelen visas och visar relaterade tabeller (i det här exemplet är menu det tabellen).

  3. Om du vill visa ett interaktivt diagram över data härstamningen klickar du på Visa ursprungsdiagram. Som standard visas en nivå i diagrammet. Plusteckenikon Klicka på ikonen på en nod för att visa fler anslutningar om de är tillgängliga.

  4. Klicka på en pil som ansluter noder i ursprungsdiagrammet för att öppna panelen för Linjeanslutningar. Panelen Linjeanslutning visar information om anslutningen, däribland käll- och måltabeller, anteckningsböcker och jobb.

    Härstamningsdiagram.

  5. Om du vill visa anteckningsboken som är associerad med dinner-tabellen, väljer du anteckningsboken i Lineage connection-panelen, eller så stänger du ursprungsdiagrammet och klickar på Anteckningsböcker. Om du vill öppna anteckningsboken på en ny flik klickar du på anteckningsbokens namn.

  6. 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:

    Fullständig kolumnhistorik för menyn.

Om du vill visa ursprung med ett annat språk, till exempel Python:

  1. Ö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")
    
  2. Kör cellen genom att klicka i cellen och trycka på Skift+Retur eller klicka Kör-menyn och välja Kör cell.

  3. 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 .

  4. Gå till fliken Ursprung och klicka på Visa ursprungsdiagram. Klicka på ikonerna Plusteckenikon för att utforska datalinjen som frågorna genererar.

    Expanderad härstamningsgraf.

  5. Klicka på en pil som ansluter noder i härledningsgrafen för att öppna härledningsanslutningspanelen. Anslutningspanelen Ursprung visar information om anslutningen, inklusive käll- och måltabeller, notebook-filer och jobb.

Fånga och visa arbetsflödets släktträd

Ursprung samlas också in för alla arbetsflöden som läser eller skriver till Unity Catalog. Visa härkomst för ett Azure Databricks-arbetsflöde:

  1. Klicka på Ny ikonNytt i sidopanelen och välj Anteckningsbok på menyn.

  2. Ange ett namn på notebook-filen och välj SQL i Standardspråk.

  3. Klicka på Skapa.

  4. I den första notebook-cellen anger du följande fråga:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. 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.

  6. Klicka på Kör nu.

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

  8. På fliken Härstamning klickar du på Arbetsflöden och väljer fliken Nedströms. Jobbnamnet visas under Jobbnamn som en konsument av menu tabellen.

Fånga och visa instrumentpanelens historik

För att skapa en instrumentpanel och visa dess dataursprung:

  1. Gå till azure Databricks-landningssidan och öppna Katalogutforskaren genom att klicka på Katalog i sidofältet.

  2. 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öka menu efter tabellen.

  3. Klicka på Öppna i en instrumentpanel.

  4. Välj de kolumner som du vill lägga till på instrumentpanelen och klicka på Skapa.

  5. Publicera instrumentpanelen.

    Endast publicerade instrumentpaneler spåras i datahärledning.

  6. I rutan Sök i det övre fältet söker du efter tabellen och väljer den lineage_data.lineagedemo.menu .

  7. På fliken Linje klickar du på Dashboardar. Instrumentpanelen visas under Instrumentpanelens namn som en användare av menytabellen.

Härkomstbehörigheter

Härstamningsdiagram delar samma behörighetsmodell som Unity Catalog. Tabeller och andra dataobjekt som registrerats i Unity Catalog-metaarkivet är endast synliga för användare som har minst BROWSE behörigheter för dessa objekt. Om en användare inte har BROWSE eller SELECT behörighet på en tabell kan de inte utforska dess ursprung. Linjediagram visar Unity Catalog-objekt över alla arbetsytor som är kopplade till metaarkivet, så länge användaren har tillräckliga objektbehörigheter.

Kör till exempel följande kommandon för 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 visar ursprungsdiagrammet för tabellen lineage_data.lineagedemo.menu, 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 userAoch 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 ge BROWSE behörighet till userB, kan den användaren visa ursprungsdiagrammet för vilken tabell som helst i lineage_data-schemat.

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

På samma sätt måste genealogianvändare ha specifika behörigheter för att visa arbetsytans objekt som anteckningsböcker, jobb och instrumentpaneler. Dessutom kan de bara se detaljerad information om arbetsyteobjekt när de är inloggade på arbetsytan där objekten skapades. Detaljerad information om objekt på arbetsplatsnivå i andra arbetsplatser döljs i släktdiagrammet.

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.

Hämta tabellsläktskap med hjälp av Databricks Assistant

Databricks Assistant innehåller detaljerad information om tabellers ursprung och insikter.

Så här hämtar du ursprungsinformation med hjälp av Assistent:

  1. Gå till azure Databricks-landningssidan och öppna Katalogutforskaren genom att klicka på katalogikonenCatalog i sidofältet.
  2. Klicka på katalognamnet och klicka sedan på ikonen för den inbyggda hjälpassistenten – färg Assistant-ikonen i det övre högra hörnet.
  3. I assistentens prompt skriver du:
    • /getTableLineages för att visa uppströms- och nedströmsberoenden.
    • /getTableInsights för åtkomst till metadatadrivna insikter, till exempel användaraktivitet och frågemönster.

Med de här frågorna kan assistenten svara på frågor som "visa mig underordnade ursprung" eller "vem som frågar den här tabellen oftast".

Databricks Assistant tillhandahåller tabellsläktskap och insikter.

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 kontoaktivitet med systemtabeller och referens för ursprungssystemtabeller.

Om din arbetsyta finns i en region som inte har stöd för linjediagramssystemtabeller kan du också använda Data Lineage REST-API:et för att hämta linjediagramdata programmerbart.

Hämta ursprung med hjälp av REST-API:et för data härkomst

Med API:et för datahärledning kan du hämta tabell- och kolumnhärledning. 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 tabelllinjalinje

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 .

Svar

{
  "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 ursprung

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 .

Svar

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

  • Även om härledningen aggregeras för alla arbetsytor som är kopplade till samma Unity Catalog-metakatalog, är detaljer för arbetsyteobjekt som anteckningsböcker och instrumentpaneler synliga endast i arbetsytan där de skapades.

  • 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 begäran från Jobs API runs submit är inte tillgängliga vid visning av härstamning. Ursprung på tabell- och kolumnnivå registreras fortfarande när du använder runs submit-begäran, men länken till körningen tas inte med.

  • Unity Catalog samlar in härledning 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å.

  • Kolumnhärkomst stöds endast när både källan och målet refereras till med tabellnamnet (exempel: select * from <catalog>.<schema>.<table>). Det går inte att avbilda kolumnsamband om källan eller destinationen adresseras via sökväg (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-dataset sparas inte datahistoriken.

  • Unity Catalog samlar in släktskap från DLT-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.

  • Härkomst fångar inte Stackfunktioner.

  • Globala temporära vyer fångas inte upp i härkomsten.

  • Tabeller under system.information_schema fångas inte upp i datahärkomsten.

  • Fullständig härkomst på kolumnnivå samlas inte in som standard för MERGE åtgärder.

    Du kan aktivera ursprungsinsamling för MERGE åtgärder genom att ställa in Spark-egenskapen spark.databricks.dataLineage.mergeIntoV2Enabled till true. Om du aktiverar den här flaggan kan frågeprestandan försämras, särskilt i arbetsbelastningar som omfattar mycket breda tabeller.