Dela via


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

Den här artikeln beskriver hur du samlar in och visualiserar data härstamning med hjälp av Catalog Explorer, data härkomstsystemet tablesoch REST-API:et.

Du kan använda Unity Catalog för att samla in spårbarhet av körningsdata över frågor som körs på Azure Databricks. Härkomst stöds för alla språk och registreras ned till column-nivån. 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 ursprungssystemet tables och Databricks REST API.

Kartläggningen sammanställs över alla arbetsytor som är kopplade till ett Unity Catalog-metastore. Det innebär att ursprung som samlas in på en arbetsyta visas på andra arbetsytor som shares metaarkivet. Mer specifikt är tables 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).

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

Översikt över ursprung

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 fånga datalinje med hjälp av Unity Catalog:

  • Arbetsytan måste ha Unity Catalog aktiverat.

  • Tables 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 table eller vy måste användarna ha minst BROWSE behörighet på den överordnade catalog för table eller vyn. Den överordnade catalog måste också vara tillgänglig från arbetsytan. Se Limitcatalog å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 härstamning för en Unity Catalog-aktiverad pipelinemåste du ha CAN_VIEW behörigheter till pipelinen.

  • Ursprungsspårning av strömning mellan Delta tables kräver Databricks Runtime 11.3 LTS eller senare.

  • Column ursprungsspårning för Delta Live Tables arbetsbelastningar kräver Databricks Runtime 13.3 LTS eller senare.

  • Du kan behöva update dina utgående brandväggsregler 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). Om du vill get Event Hubs-slutpunkten för din arbetsyteregion kan du läsa Metaarkiv, bloblagring för artefakt, system tables lagring, loggbloblagring och IP-adresser för Event Hubs-slutpunkter. 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 namnet cataloglineage_data och namnet schemalineagedemo. Om du vill använda en annan catalog och 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 på en schema. En metaarkivadministratör, en catalog-ägare, en schema-ägare eller en användare med MANAGE-behörigheter på schema kan grant dessa privilegier. Om du till exempel vill ge alla användare i gruppen "data_engineers" behörighet att skapa tables i lineagedemoschema i lineage_datacatalogkan 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 Azure Databricks-landningssidan, klicka på Ny IkonNy i sidofältet och selectNotebook- från menyn.

  2. Ange ett namn för notebook-filen och selectSQL i Standardspråk.

  3. I Clusterselect 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 på Kör meny och selectKör cell.

Så här använder du Catalog Explorer för att visa datalinjen som skapas av dessa frågor:

  1. I rutan Search i det övre fältet på Azure Databricks-arbetsytan söker du efter lineage_data.lineagedemo.dinnertable och select den.

  2. Select fliken Lineage. Ursprungspanelen visas och visar relaterade tables (i det här exemplet är det menutable).

  3. 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å plusteckenikonen på en nod för att visa fler connections om de är tillgängliga.

  4. Klicka på en pil som ansluter noder i ursprungsdiagrammet för att öppna anslutningspanelen För ursprung. Panelen Lineage-anslutning visar information om anslutningen, inklusive käll- och mål-tables, notebook-filer och jobb.

    Ursprungsdiagram

  5. Om du vill visa anteckningsboken som är associerad med dinnertableselect du anteckningsboken i Lineage-anslutningen panelen eller stänger ursprungsdiagrammet och klickar på Notebook-filer. Om du vill öppna anteckningsboken på en ny flik klickar du på anteckningsbokens namn.

  6. Om du vill visa härkomsten på nivån av columnklickar du på en column i diagrammet för att visa länkar till relaterade columns. Till exempel, om du klickar på "full_menu" column, visas det ursprungliga columns som column härleddes från.

    Fullständig meny column ursprung

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 Search i det övre fältet på Azure Databricks-arbetsytan söker du efter lineage_data.lineagedemo.pricetable och select den.

  4. Gå till fliken Ursprung och klicka på Visa ursprungsdiagram. Klicka på ikonerna Plusteckenikon för att utforska data härstamningen som genereras av frågorna.

    Expanderat härkomstdiagram

  5. Klicka på en pil som ansluter noder i ursprungsdiagrammet för att öppna anslutningspanelen För ursprung. Panelen Lineage-anslutning visar information om anslutningen, inklusive käll- och mål-tables, notebook-filer och jobb.

Avbilda och visa arbetsflödets ursprung

Härledning 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:

  1. Klicka på Ny ikonNy i sidofältet och selectNotebook- från menyn.

  2. Ange ett namn för notebook-filen och selectSQL 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 schema-dialogrutan selectManuellselect ett kluster med åtkomst till Unity Catalogoch klicka på Skapa.

  6. Klicka på Kör nu.

  7. I rutan Search i det övre fältet på Azure Databricks-arbetsytan söker du efter lineage_data.lineagedemo.menutable och select den.

  8. På fliken Ursprung klickar du på Arbetsflödenoch select fliken nedströms. Jobbnamnet visas under jobbnamn som konsument av menutable.

Avbilda och visa instrumentpanelens ursprung

Så här skapar du en instrumentpanel och visar dess data härkomst:

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

  2. Klicka på namnet på catalog, klicka på lineagedemooch selectmenutable. Du kan också använda rutan Sök i det övre fältet för att söka efter menutable.

  3. Klicka på Öppna på en instrumentpanel.

  4. Select columns som du vill lägga till på instrumentpanelen och klicka på Skapa.

  5. Publicera instrumentpanelen.

    Endast publicerade instrumentpaneler spåras i data härkomst.

  6. I rutan Sök i det övre fältet söker du efter lineage_data.lineagedemo.menutable och select den.

  7. På fliken Ursprung klickar du på Instrumentpaneler. Instrumentpanelen visas under instrumentpanelsnamn som konsument av menyn table.

Ursprungsbehörigheter

Härstamningsdiagram delar samma behörighetsmodell som Unity Catalog. Tables och andra dataobjekt som registrerats i metaarkivet Unity Catalog ä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 tablekan de inte utforska dess ursprung. Härkomstdiagram visar Unity Catalog-objekt i alla arbetsytor som är anslutna 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 de tittar på userAviews ursprungsdiagrammet för lineage_data.lineagedemo.menutable, kommer de att se menutable. De kommer inte att kunna se information om associerade tables, till exempel den underordnade lineage_data.lineagedemo.dinnertable. dinner table visas som en masked nod på skärmen för userA, och userA kan inte expandera diagrammet för att visa nedströms tables från tables som de inte har behörighet att få åtkomst till.

Om du kör följande kommando för att grantBROWSE behörighet att userB, kan användaren visa ursprungsdiagrammet för alla table i lineage_dataschema.

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 Catalogfinns 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 objekt. Mer information om hur du tar bort metaarkivet finns i Ta bort ett metaarkiv. Data tas bort inom 90 dagar.

Fråga efter härstamningsdata med hjälp av system tables

Du kan använda ursprungssystemet tables för att programmatiskt fråga efter ursprungsdata. För detaljerade instruktioner, se Övervaka kontoaktivitet med system tables och Lineagesystem tables referens.

Om din arbetsyta finns i en region som inte stöder härkomstsystem tableskan du istället också använda REST-API:et för datahärkomst för att programmatiskt hämta härkomstdatan.

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

Datalinje-API:et låter dig hämta table och column härkomst. Men om din arbetsyta finns i en region som stöder ursprungssystemet tablesbör du använda system table-förfrågningar i stället för REST-API:et. System tables är ett bättre alternativ för programmatisk hämtning av ursprungsdata. De flesta regioner stöder linjeagesystemet tables.

Viktigt!

För att få åtkomst till Databricks REST API:er måste du autentisera.

Hämta table ursprung

Det här exemplet hämtar ursprungsdata för dinnertable.

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 column ursprung

Det här exemplet hämtar column data för dinnertable.

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

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

  • Eftersom härstamning beräknas på ett rullande ettårs windowvisas inte härstamning som samlats in för mer än ett år sedan. Om till exempel ett jobb eller en fråga läser data från table A och skriver till table B, visas länken mellan table A och table B endast i ett år. Du kan filtrera ursprungsdata efter tidsram inom ett års window.

  • Jobb som använder jobb-API-begäran runs submit är inte tillgängliga när du visar ursprung. Table och column nivå härstamning registreras fortfarande när du använder runs submit begäran, men länken till körningen registreras inte.

  • Unity Catalog fångar släktskap upp till column-nivån så mycket som möjligt. Det finns dock vissa fall där härstamning på wherecolumn-nivå inte kan fångas in.

  • Column härstamning stöds endast när både källan och målet refereras med table namn (exempel: select * from <catalog>.<schema>.<table>). Column-härkomst kan inte fångas om källan eller målet adresseras via sökväg (exempel: select * from delta."s3://<bucket>/<path>").

  • Om en table eller vy har bytt namn registreras inte ursprung för den omdöpta table eller vyn.

  • Om en schema eller catalog har bytt namn registreras inte ursprung för tables och views under den omdöpta catalog eller schema.

  • Om du använder Kontrollpunkter för Spark SQL-datauppsättning samlas inte ursprunget in.

  • Unity Catalog registrerar 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 APPLY CHANGES API eller TEMPORARY tables.

  • Ursprunget avbildar inte Stack-funktioner.

  • Globala temp-views registreras inte i ursprung.

  • Tables under system.information_schema fångas inte i härstamning.

  • Fullständig column-nivå härstamning samlas inte in som standard för MERGE åtgärder.

    Du kan aktivera ursprungsinsamling för MERGE åtgärder genom att ange egenskapen spark.databricks.dataLineage.mergeIntoV2Enabled Spark till true. Om du aktiverar den här flaggan kan du sänka frågeprestandan, särskilt i arbetsbelastningar som omfattar mycket omfattande tables.