Share 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 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, arbetsflöden och instrumentpaneler 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.

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örighet i BROWSE tabellens eller vyns överordnade katalog.

  • Om du vill visa ursprungsinformation för notebook-filer, arbetsflöden 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.

  • Du kan behöva uppdatera dina brandväggsregler för utgående trafik för att tillåta anslutning till händelsehubbens slutpunkt 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 händelsehubbens slutpunkt för din arbetsyteregion finns i IP-adresser för metaarkiv, Blob Storage för artefakter, systemtabeller, Blob Storage för logg 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.

Begränsningar

  • Direktuppspelning mellan Delta-tabeller stöds endast i Databricks Runtime 11.3 LTS eller senare.

  • Eftersom ursprung beräknas i en rullande period på 1 år visas inte ursprung som samlats in för mer än 1 år sedan. Om till exempel ett jobb eller en fråga läser data från tabell A och skriver data till tabell B, visas länken mellan tabell A och tabell B endast i 1 år.

    Du kan filtrera ursprungsdata efter tidsram. När "All härkomst" har valts visas ursprungsdata som samlas in från och med juni 2023.

  • Arbetsflöden 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änder runs 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 fånga in kolumn härkomst om källan eller målet hanteras av sökvägen (exempel: select * from delta."s3://<bucket>/<path>").

  • Om namnet på en tabell ändras samlas inte ursprung in för tabellen.

  • Om du använder Kontrollpunkter för Spark SQL-datauppsättning samlas inte ursprunget in. Se pyspark.sql.DataFrame.checkpoint i Apache Spark-dokumentationen.

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

Exempel

Kommentar

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

Använd följande steg för att samla 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.

Använd följande steg om du vill använda Katalogutforskaren för att visa ursprunget som genereras av dessa frågor:

  1. I sökrutani det övre fältet på Azure Databricks-arbetsytan anger lineage_data.lineagedemo.dinner du och klickar på Sök lineage_data.lineagedemo.dinner i Databricks.

  2. Under Tabeller klickar du på tabellen dinner .

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

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

  5. 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 arbetsflöden.

    Ursprungsdiagram

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

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

    Kolumnradage i hel meny

Om du vill visa hur du skapar och visar ursprung med ett annat språk, till exempel Python, använder du följande steg:

  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 sökrutani det övre fältet på Azure Databricks-arbetsytan anger lineage_data.lineagedemo.price du och klickar på Sök lineage_data.lineagedemo.price i Databricks.

  4. Under Tabeller klickar du på tabellen price .

  5. Välj fliken Ursprung och klicka på Visa ursprungsdiagram. Klicka på ikonerna Plusteckenikon för att utforska data härstamningen som genereras av SQL- och Python-frågorna.

    Expanderat härkomstdiagram

  6. 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 arbetsflöden.

Avbilda och visa arbetsflödets ursprung

Ursprung samlas också in för alla arbetsflöden som läser eller skriver till Unity Catalog. Om du vill demonstrera visning av ursprung för ett Azure Databricks-arbetsflöde använder du följande steg:

  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 sökrutani det övre fältet på Azure Databricks-arbetsytan anger lineage_data.lineagedemo.menu du och klickar på Sök lineage_data.lineagedemo.menu i Databricks.

  8. Under Tabeller Visa alla tabeller klickar du på tabellen menu .

  9. Välj fliken Ursprung , klicka på Arbetsflöden och välj fliken Nedström . Jobbnamnet visas under Jobbnamn som konsument av menu tabellen.

Avbilda och visa instrumentpanelens ursprung

Använd följande steg för att demonstrera visning av ursprung för en SQL-instrumentpanel:

  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 textrutan Sök tabeller i det övre fältet för att söka menu efter tabellen.
  3. Klicka på Åtgärder > Skapa en snabbinstrumentpanel.
  4. Välj kolumner som du vill lägga till på instrumentpanelen och klicka på Skapa.
  5. I sökrutani det övre fältet på Azure Databricks-arbetsytan anger lineage_data.lineagedemo.menu du och klickar på Sök lineage_data.lineagedemo.menu i Databricks.
  6. Under Tabeller Visa alla tabeller klickar du på tabellen menu .
  7. Välj fliken Ursprung och klicka på Instrumentpaneler. Instrumentpanelens namn 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, arbetsflöden 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 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 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, arbetsflöden 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"
    }
  ]
}