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.
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 catalog
lineage_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
aUSE SCHEMA
pro schema. Správce metastoru, vlastník catalog, vlastník schema nebo uživatel s oprávněnímMANAGE
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 vlineagedemo
schema vlineage_data
catalog, 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:
Přejděte na cílovou stránku Azure Databricks, klikněte na
Nový na bočním panelu a selectPoznámkový blok z nabídky.
Do selectzadejte název poznámkového bloku a SQL .
V clusteruje select cluster s přístupem k Unity Catalog.
Klikněte na Vytvořit.
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
Pokud chcete dotazy spustit, klikněte do buňky a stiskněte shift+enter nebo klikněte na
a selectspustit buňku.
Pokud chcete použít Catalog Průzkumníka ke zobrazení sledu vygenerovaného těmito dotazy:
V poli Hledat v horním panelu pracovního prostoru Azure Databricks vyhledejte
lineage_data.lineagedemo.dinner
table a select.Select kartu rodokmenu. Zobrazí se panel rodokmenu a ukáže související tables (v tomto příkladu to je
menu
table).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
na uzlu zobrazíte další connections, pokud jsou k dispozici.
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.
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.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.
Pokud chcete zobrazit rodokmen pomocí jiného jazyka, například Python:
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")
Buňku spusťte tak, že kliknete na buňku a stisknete shift+enter nebo kliknete
a vyberete Spustit buňku.
V poli Hledat v horním panelu pracovního prostoru Azure Databricks vyhledejte
lineage_data.lineagedemo.price
table a select.Přejděte na kartu Rodokmen a klikněte na Zobrazit graf rodokmenu. Kliknutím na
ikony můžete prozkoumat rodokmen dat vygenerovaný dotazy.
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:
Klikněte v postranním panelu na
Nová a z nabídky vyberte selectPoznámkový blok.
Do selectzadejte název poznámkového bloku a SQL .
Klikněte na Vytvořit.
Do první buňky poznámkového bloku zadejte následující dotaz:
SELECT * FROM lineage_data.lineagedemo.menu
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.
Klikněte na možnost Spustit.
V poli Hledat v horním panelu pracovního prostoru Azure Databricks vyhledejte
lineage_data.lineagedemo.menu
table a select.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
menu
table.
Zachycení a zobrazení rodokmenu řídicího panelu
Vytvoření řídicího panelu a zobrazení rodokmenu dat:
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.
Klikněte na název catalog, klikněte na lineagedemoa select
menu
table. Můžete také použít pole Hledat v horním panelu a vyhledatmenu
table.Klikněte na Otevřít na řídicím panelu.
Select columns, který chcete přidat na řídicí panel, a klikněte na Vytvořit.
Publikujte řídicí panel.
V rodokmenu dat se sledují jenom publikované řídicí panely.
V poli Hledat v horním panelu vyhledejte
lineage_data.lineagedemo.menu
table a select.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í userA
views grafu rodokmenu pro lineage_data.lineagedemo.menu
table, uvidí menu
table. Nebudou moci zobrazit informace o přidružených tables, jako jsou podřízené lineage_data.lineagedemo.dinner
table.
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_data
schema.:
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 dinner
table.
Žá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 dinner
table.
Žá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žadavkuruns 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 vlastnostispark.databricks.dataLineage.mergeIntoV2Enabled
Spark natrue
hodnotu . Povolení tohoto příznaku může zpomalit výkon dotazů, zejména v úlohách, které zahrnují velmi široké kategorie dat tables.