Sdílet prostřednictvím


Zachycení a zobrazení rodokmenu dat pomocí Catalog Unity

Tento článek popisuje, jak zachytit a vizualizovat rodokmen dat pomocí Catalog Exploreru, systému rodokmenu dat tablesa rozhraní REST API.

Unity Catalog můžete použít k zachycení rodokmenu dat za běhu napříč dotazy spuštěným v Azure Databricks. Rodokmen je podporován pro všechny jazyky a je zachycen na úrovni column. Data rodokmenu zahrnují poznámkové bloky, úlohy a řídicí panely související s dotazem. Rodokmen je možné vizualizovat v Catalog Exploreru téměř v reálném čase a programově načíst pomocí systému rodokmenu tables a rozhraní REST API Databricks.

Rodokmen se agreguje napříč všemi pracovními prostory připojenými k metastoru Unity Catalog. To znamená, že rodokmen zachycený v jednom pracovním prostoru je viditelný v jakémkoli jiném pracovním prostoru, který shares metastore. Konkrétně tables a další datové objekty zaregistrované v metastoru jsou viditelné uživatelům, kteří mají alespoň BROWSE oprávnění k těmto objektům ve všech pracovních prostorech připojených k metastoru. Podrobné informace o objektech na úrovni pracovního prostoru, jako jsou poznámkové bloky a řídicí panely v jiných pracovních prostorech, jsou však maskované (viz Omezení a oprávnění rodokmenu).

Data rodokmenu se uchovávají po dobu jednoho roku.

Následující obrázek je ukázkový graf rodokmenu. Konkrétní funkce rodokmenu dat a příklady jsou vyřešeny dále v tomto článku.

Přehled rodokmenu

Informace o sledování rodokmenu modelu strojového učení najdete v tématu Sledování rodokmenu dat modelu v Unity Catalog.

Požadavky

K zachycení datové linie pomocí Unity Catalogjsou potřeba následující:

  • Pracovní prostor musí mít CatalogUnity povolenou.

  • Tables musí být zaregistrovaný v Unity metastore Catalog.

  • Dotazy musí používat rozhraní Spark DataFrame (například funkce Spark SQL, které vracejí DataFrame) nebo Databricks SQL. Příklady dotazů Databricks SQL a PySpark najdete v tématu Příklady.

  • Pokud chcete zobrazit rodokmen table nebo zobrazení, musí mít uživatelé alespoň BROWSE oprávnění k nadřazené catalogtable nebo zobrazení. Nadřazený catalog musí být také přístupný z pracovního prostoru. Viz Limitcatalog přístup ke konkrétním pracovním prostorům.

  • Aby uživatelé mohli zobrazit informace o rodokmenu pro poznámkové bloky, úlohy nebo řídicí panely, musí mít k těmto objektům oprávnění definovaná nastavením řízení přístupu v pracovním prostoru. Viz oprávnění rodokmenu.

  • Pokud chcete zobrazit provenience pro kanál Unity Catalog-enabled pipeline, musíte mít oprávnění CAN_VIEW na tento kanál.

  • Sledování původu streamování mezi Delta tables vyžaduje Databricks Runtime 11.3 LTS nebo vyšší.

  • Column sledování rodokmenu pro úlohy Delta Live Tables vyžaduje Databricks Runtime 13.3 LTS nebo vyšší.

  • Možná budete muset update odchozích pravidel brány firewall, aby bylo možné připojení ke koncovému bodu služby Event Hubs v řídicí rovině Azure Databricks. Obvykle se to týká, pokud je váš pracovní prostor Azure Databricks nasazený ve vlastní virtuální síti (označovaný také jako injektáž virtuální sítě). Pokud chcete get koncový bod služby Event Hubs pro vaši oblast pracovního prostoru, podívejte se na metastore, úložiště objektů blob artefaktů, úložiště tables objektů blob systému, úložiště objektů blob protokolu a IP adresy koncových bodů služby Event Hubs. Informace o nastavení tras definovaných uživatelem pro Azure Databricks najdete v tématu Nastavení trasy definované uživatelem pro Azure Databricks.

Příklady

Poznámka:

  • Následující příklady používají název cataloglineage_data a název schemalineagedemo. Pokud chcete použít jiný catalog a schema, změňte názvy použité v příkladech.

  • K dokončení tohoto příkladu musíte mít oprávnění CREATE a USE SCHEMA pro schema. Správce metastoru, vlastník catalog, vlastník schema nebo uživatel s oprávněním MANAGE na schema mohou tato oprávnění grant. Pokud například chcete všem uživatelům ve skupině data_engineers udělit oprávnění k vytvoření tables v lineagedemoschema v lineage_datacatalog, může uživatel s jedním z výše uvedených oprávnění nebo rolí spustit následující dotazy:

    CREATE SCHEMA lineage_data.lineagedemo;
    GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
    

Zachycení a prozkoumání rodokmenu

Zachycení dat rodokmenu:

  1. Přejděte na cílovou stránku Azure Databricks, klikněte na Nová ikonaNový na bočním panelu a selectPoznámkový blok z nabídky.

  2. Do selectzadejte název poznámkového bloku a SQL .

  3. V clusteruje select cluster s přístupem k Unity Catalog.

  4. Klikněte na Vytvořit.

  5. Do první buňky poznámkového bloku zadejte následující dotazy:

    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. Pokud chcete dotazy spustit, klikněte do buňky a stiskněte shift+enter nebo klikněte na Spustit nabídku a selectspustit buňku.

Pokud chcete použít Catalog Průzkumníka ke zobrazení sledu vygenerovaného těmito dotazy:

  1. V poli Hledat v horním panelu pracovního prostoru Azure Databricks vyhledejte lineage_data.lineagedemo.dinnertable a select.

  2. Select kartu rodokmenu. Zobrazí se panel rodokmenu a ukáže související tables (v tomto příkladu to je menutable).

  3. Pokud chcete zobrazit interaktivní graf rodokmenu dat, klikněte na Zobrazit graf rodokmenu. Ve výchozím nastavení se v grafu zobrazuje jedna úroveň. Kliknutím na ikonu znaménka plus na uzlu zobrazíte další connections, pokud jsou k dispozici.

  4. Kliknutím na šipku, která propojuje uzly v grafu rodokmenu, otevřete panel připojení rodokmenu. Panel připojení pro systém Lineage zobrazuje podrobnosti o připojení, včetně zdrojů a cílů tables, poznámkových bloků a úloh.

    Graf rodokmenu

  5. Pokud chcete zobrazit poznámkový blok přidružený k , poznámkový blok na panelu připojení rodokmenu nebo zavřete graf rodokmenu a klikněte na Poznámkové bloky. Pokud chcete poznámkový blok otevřít na nové kartě, klikněte na název poznámkového bloku.

  6. Pokud chcete zobrazit rodokmen úrovně column, klikněte v grafu na column a zobrazte odkazy na související columns. Například kliknutím na column 'full_menu' zobrazíte upstream columns, odkud byl column odvozen.

    úplná nabídka column rodokmenu

Pokud chcete zobrazit rodokmen pomocí jiného jazyka, například Python:

  1. Otevřete poznámkový blok, který jste vytvořili dříve, vytvořte novou buňku a zadejte následující kód Pythonu:

    %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. Buňku spusťte tak, že kliknete na buňku a stisknete shift+enter nebo klikneteNabídka Spustita vyberete Spustit buňku.

  3. V poli Hledat v horním panelu pracovního prostoru Azure Databricks vyhledejte lineage_data.lineagedemo.pricetable a select.

  4. Přejděte na kartu Rodokmen a klikněte na Zobrazit graf rodokmenu. Kliknutím na Ikona znaménka plus ikony můžete prozkoumat rodokmen dat vygenerovaný dotazy.

    Rozbalený graf rodokmenu

  5. Kliknutím na šipku, která propojuje uzly v grafu rodokmenu, otevřete panel připojení rodokmenu. Panel připojení pro systém Lineage zobrazuje podrobnosti o připojení, včetně zdrojů a cílů tables, poznámkových bloků a úloh.

Zachycení a zobrazení rodokmenu pracovního postupu

Původ je zaznamenán také pro jakýkoli pracovní postup, který přistupuje nebo zapisuje do Unity Catalog. Zobrazení rodokmenu pro pracovní postup Azure Databricks:

  1. Klikněte v postranním panelu na Nová ikonaNová a z nabídky vyberte selectPoznámkový blok.

  2. Do selectzadejte název poznámkového bloku a SQL .

  3. Klikněte na Vytvořit.

  4. Do první buňky poznámkového bloku zadejte následující dotaz:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. V horním panelu klikněte na Plán . V dialogovém okně plán selectRučníselect clusteru s přístupem k CatalogUnity a klikněte na Vytvořit.

  6. Klikněte na možnost Spustit.

  7. V poli Hledat v horním panelu pracovního prostoru Azure Databricks vyhledejte lineage_data.lineagedemo.menutable a select.

  8. Na kartě Rodokmen klikněte na Pracovní postupya select kartu podřízené. Název úlohy se zobrazí v části Název úlohy jako příjemce menutable.

Zachycení a zobrazení rodokmenu řídicího panelu

Vytvoření řídicího panelu a zobrazení rodokmenu dat:

  1. Přejděte na cílovou stránku Azure Databricks a otevřete průzkumníka Catalog kliknutím na Catalog na bočním panelu.

  2. Klikněte na název catalog, klikněte na lineagedemoa selectmenutable. Můžete také použít pole Hledat v horním panelu a vyhledat menutable.

  3. Klikněte na Otevřít na řídicím panelu.

  4. Select columns, který chcete přidat na řídicí panel, a klikněte na Vytvořit.

  5. Publikujte řídicí panel.

    V rodokmenu dat se sledují jenom publikované řídicí panely.

  6. V poli Hledat v horním panelu vyhledejte lineage_data.lineagedemo.menutable a select.

  7. Na kartě Rodokmen klikněte na Řídicí panely. Řídicí panel se zobrazí v části Název řídicího panelu jako příjemce nabídky table.

Oprávnění rodokmenu

Grafy rodokmenu sdílejí stejný model oprávnění jako Unity Catalog. Tables a další datové objekty zaregistrované v metastoru Unity Catalog jsou viditelné pouze uživatelům, kteří mají alespoň BROWSE oprávnění k těmto objektům. Pokud uživatel nemá oprávnění BROWSE nebo SELECT pro table, nemůže prozkoumat jeho rodokmen. Grafy rodokmenu zobrazují objekty Unity Catalog ve všech pracovních prostorech připojených k metastoru, pokud má uživatel odpovídající oprávnění k objektu.

Spusťte například následující příkazy pro userA:

GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;

Při zobrazení userAviews grafu rodokmenu pro lineage_data.lineagedemo.menutable, uvidí menutable. Nebudou moci zobrazit informace o přidružených tables, jako jsou podřízené lineage_data.lineagedemo.dinnertable. dinner table se zobrazí jako uzel masked v zobrazení pro userA, a userA nemůže rozbalit graf, aby ukázal podřízené tables z tables, pokud nemají oprávnění k přístupu.

Pokud spustíte následující příkaz, který grant oprávnění BROWSE k userB, může tento uživatel zobrazit graf rodokmenu pro všechny table v lineage_dataschema.:

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

Uživatelé rodokmenu musí mít také specifická oprávnění k zobrazení objektů pracovního prostoru, jako jsou poznámkové bloky, úlohy a řídicí panely. Kromě toho můžou zobrazit podrobné informace o objektech pracovního prostoru pouze v případě, že jsou přihlášeni k pracovnímu prostoru, ve kterém byly tyto objekty vytvořeny. Podrobné informace o objektech na úrovni pracovního prostoru v jiných pracovních prostorech jsou maskovány v grafu rodokmenu.

Další informace o správě přístupu k zabezpečitelným objektům v Unity Catalognaleznete v tématu Správa oprávnění v Unity Catalog. Další informace o správě přístupu k objektům pracovního prostoru, jako jsou poznámkové bloky, úlohy a řídicí panely, najdete v tématu Seznamy řízení přístupu.

Odstranění dat rodokmenu

Upozorňující

Následující pokyny odstraňují všechny objekty uložené v Unity Catalog. Tyto pokyny použijte pouze v případě potřeby. Například pro splnění požadavků na dodržování předpisů.

Pro odstranění lineárních dat musíte odstranit metastore, který spravuje objekty Unity Catalog. Další informace o odstranění metastoru naleznete v tématu Odstranění metastoru. Data se odstraní do 90 dnů.

Dotazování na historii dat pomocí systému tables

Můžete použít systém datové linie tables pro programové dotazování dat o původu. Podrobné pokyny najdete v tématu Monitorování aktivity účtu pomocí systémových tables a systému Rodokmen tables referenční.

Pokud je váš pracovní prostor v oblasti, která nepodporuje systém rodokmenu tables, můžete k programovému načtení dat rodokmenu použít rozhraní REST API rodokmenu dat.

Načtení rodokmenu pomocí rozhraní REST API rodokmenu dat

Rozhraní API rodokmenu dat umožňuje načíst table a column rodokmen. Pokud je ale váš pracovní prostor v oblasti, která podporuje systém rodokmenu tables, měli byste místo rozhraní REST API použít systémové table dotazy. Systémy tables jsou lepší volbou pro programmatické načítání souvisejících dat. Většina oblastí podporuje systém rodokmenu tables.

Důležité

Pokud chcete získat přístup k rozhraním REST API služby Databricks, musíte použít ověřování.

Získat rodokmen table

Tento příklad načte data rodové linie pro dinnertable.

Žádost

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}'

Nahradit <workspace-instance>.

Tento příklad používá soubor .netrc .

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
        }
      ]
    }
  ]
}

Získat rodokmen column

Tento příklad načte data column pro dinnertable.

Žádost

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"}'

Nahradit <workspace-instance>.

Tento příklad používá soubor .netrc .

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"
    }
  ]
}

Omezení

  • I když je rodokmen agregovaný pro všechny pracovní prostory připojené ke stejnému metastoru Unity Catalog, podrobnosti o objektech pracovního prostoru, jako jsou poznámkové bloky a řídicí panely, jsou viditelné jenom v pracovním prostoru, ve kterém byly vytvořeny.

  • Vzhledem k tomu, že rodová data jsou počítána na posuvném ročním základě window, rodová data shromážděná před více než rokem se nezobrazují. Pokud například úloha nebo dotaz čte data z table A a zapisuje do table B, zobrazí se propojení mezi table A a table B pouze po dobu jednoho roku. Data rodokmenu můžete filtrovat podle časového rámce v rámci jednoho roku window.

  • Úlohy, které používají požadavek rozhraní API runs submit pro úlohy, nejsou při prohlížení rodokmenu k dispozici. Table a column rodokmen úrovně se při použití požadavku runs submit zachytí, ale odkaz na spuštění se nezachytí.

  • Unity Catalog zachycuje rodokmen na úrovni column co nejvíce možné. Existuje však několik případů, kdy rodokmen na úrovni wherecolumnnelze zachytit.

  • Column linie je podporována pouze v případě, že zdroj i cíl jsou referencovány jménem table (příklad: select * from <catalog>.<schema>.<table>). Column rodokmen nelze zachytit, pokud je zdroj nebo cíl adresován cestou (například: select * from delta."s3://<bucket>/<path>").

  • Pokud se table nebo zobrazení přejmenuje, rodokmen se nezachytí pro přejmenované table ani zobrazení.

  • Pokud se přejmenuje schema nebo catalog, rodokmen se nezachytí pro tables a views pod přejmenovanými catalog nebo schema.

  • Pokud používáte vytváření kontrolních bodů datové sady Spark SQL, rodokmen se nezachytí.

  • Unity Catalog ve většině případů zaznamenává rodokmen z kanálů Delta Live Tables. V některých případech však nelze zaručit úplné pokrytí rodokmenu, například když kanály používají POUŽÍT ZMĚNY ROZHRANÍ API nebo DOČASNÝ tables.

  • Rodokmen nezachytává funkce stacku.

  • Globální dočasné views nejsou zachyceny v rodokmenu.

  • Tables pod system.information_schema nejsou zachyceny v rodokmenu.

  • Dokonalé zachycení column-úrovňového rodokmenu se ve výchozím nastavení nezachycuje pro operace MERGE.

    Zachytávání rodokmenu pro MERGE operace můžete zapnout nastavením vlastnosti spark.databricks.dataLineage.mergeIntoV2Enabled Spark na truehodnotu . Povolení tohoto příznaku může zpomalit výkon dotazů, zejména v úlohách, které zahrnují velmi široké kategorie dat tables.