Zachycení a zobrazení rodokmenu dat pomocí katalogu Unity
Katalog Unity můžete použít k zachycení rodokmenu dat modulu runtime napříč dotazy spuštěným v Azure Databricks. Rodokmen je podporovaný pro všechny jazyky a je zachycený na úrovni sloupce. Data rodokmenu zahrnují poznámkové bloky, pracovní postupy a řídicí panely související s dotazem. Rodokmen je možné vizualizovat v Průzkumníku katalogu téměř v reálném čase a načíst ho pomocí rozhraní DATABricks REST API.
Poznámka:
Data rodokmenu můžete také zobrazit a dotazovat pomocí systémových tabulek rodokmenu (Public Preview). Další informace naleznete v tématu Referenční informace k systémovým tabulkám rodokmenu.
Rodokmen se agreguje napříč všemi pracovními prostory připojenými k metastoru katalogu Unity. To znamená, že rodokmen zachycený v jednom pracovním prostoru je viditelný v jakémkoli jiném sdílení tohoto metastoru. Uživatelé musí mít správná oprávnění k zobrazení dat rodokmenu. Data rodokmenu se uchovávají po dobu 1 roku.
Tento článek popisuje, jak vizualizovat rodokmen pomocí Průzkumníka katalogu a rozhraní REST API. Informace o sledování rodokmenu modelu strojového učení najdete v tématu Sledování rodokmenu dat modelu v katalogu Unity.
Požadavky
K zachycení rodokmenu dat pomocí katalogu Unity se vyžadují následující položky:
Pracovní prostor musí mít povolený katalog Unity.
Tabulky musí být zaregistrované v metastoru katalogu Unity.
Dotazy musí používat datový rámec Sparku (například funkce Spark SQL, které vracejí datový rámec) nebo rozhraní SQL Databricks. Příklady dotazů Databricks SQL a PySpark najdete v tématu Příklady.
Pokud chcete zobrazit rodokmen tabulky nebo zobrazení, musí mít uživatelé alespoň
BROWSE
oprávnění k nadřazenému katalogu tabulky nebo zobrazení.Aby uživatelé mohli zobrazit informace o rodokmenu pro poznámkové bloky, pracovní postupy 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 rodokmen kanálu s podporou katalogu Unity, musíte mít
CAN_VIEW
oprávnění k kanálu.Možná budete muset aktualizovat pravidla odchozí brány firewall tak, aby umožňovala připojení ke koncovému bodu centra událostí 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 získat koncový bod centra událostí pro vaši oblast pracovního prostoru, přečtěte si téma Metastore, úložiště objektů blob artefaktů, úložiště systémových tabulek, úložiště objektů blob protokolu a IP adresy koncových bodů centra událostí. Informace o nastavení tras definovaných uživatelem pro Azure Databricks najdete v tématu Nastavení trasy definované uživatelem pro Azure Databricks.
Omezení
Streamování mezi tabulkami Delta se podporuje jenom v Databricks Runtime 11.3 LTS nebo novějším.
Vzhledem k tomu, že rodokmen se počítá v 1letém posuvném okně, nezobrazuje se rodokmen shromážděný před více než 1 rokem. Pokud například úloha nebo dotaz čte data z tabulky A a zapisuje do tabulky B, zobrazí se propojení mezi tabulkou A a tabulkou B pouze po dobu 1 roku.
Data rodokmenu můžete filtrovat podle časového rámce. Když je vybrána možnost Všechna rodokmeny, zobrazí se data rodokmenu shromážděná od června 2023.
Pracovní postupy, které používají požadavek rozhraní API
runs submit
úloh, nejsou při prohlížení rodokmenu k dispozici. Rodokmen na úrovni tabulky a sloupce se při použitíruns submit
požadavku zachytí, ale odkaz na spuštění se nezachytí.Katalog Unity v maximální možné míře zachycuje rodokmen dat na úrovni sloupce. V některých případech však rodokmen dat na úrovni sloupce není možné zachytit.
Rodokmen sloupců se podporuje pouze v případě, že zdroj i cíl odkazují na název tabulky (příklad:
select * from <catalog>.<schema>.<table>
). Rodokmen sloupců nelze zachytit, pokud zdroj nebo cíl řeší cesta (příklad:select * from delta."s3://<bucket>/<path>"
).Pokud se tabulka přejmenuje, rodokmen dat pro přejmenovanou tabulku se nezachytí.
Pokud používáte vytváření kontrolních bodů datové sady Spark SQL, rodokmen se nezachytí. Viz pyspark.sql.DataFrame.checkpoint v dokumentaci k Apache Sparku.
Katalog Unity 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í rozhraní APPLY CHANGES API nebo DOČASNÉ tabulky.
Příklady
Poznámka:
Následující příklady používají název
lineage_data
katalogu a názevlineagedemo
schématu . Pokud chcete použít jiný katalog a schéma, změňte názvy použité v příkladech.K dokončení tohoto příkladu musíte mít
CREATE
oprávnění keUSE SCHEMA
schématu. Tato oprávnění může udělit správce metastoru, vlastník katalogu nebo vlastník schématu. Pokud chcete například udělit všem uživatelům ve skupině oprávnění "data_engineers" k vytváření tabulek velineagedemo
schématulineage_data
v katalogu, může uživatel s jedním z výše uvedených oprávnění nebo rolí spouštět 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
K zachycení dat rodokmenu použijte následující kroky:
Přejděte na cílovou stránku Azure Databricks, na bočním panelu klikněte na Nový a v nabídce vyberte Poznámkový blok.
Zadejte název poznámkového bloku a vyberte SQL ve výchozím jazyce.
V clusteru vyberte cluster s přístupem k katalogu Unity.
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 a vyberte Spustit buňku.
Pokud chcete k zobrazení rodokmenu vygenerovaného těmito dotazy použít Průzkumníka katalogu, postupujte takto:
Do vyhledávacíhopole v horním panelu pracovního prostoru Azure Databricks zadejte
lineage_data.lineagedemo.dinner
a klikněte na Hledat lineage_data.lineagedemo.dinner v Databricks.V části Tabulky klikněte na
dinner
tabulku.Vyberte kartu Rodokmen. Zobrazí se panel rodokmenu a zobrazí související tabulky (v tomto příkladu je to
menu
tabulka).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 na uzlu zobrazíte další připojení, pokud jsou dostupná.
Kliknutím na šipku spojující uzly v grafu rodokmenu otevřete panel připojení rodokmenu. Panel připojení rodokmenu zobrazuje podrobnosti o připojení, včetně zdrojových a cílových tabulek, poznámkových bloků a pracovních postupů.
Pokud chcete zobrazit poznámkový blok přidružený k
dinner
tabulce, vyberte 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 na úrovni sloupce, klikněte na sloupec v grafu a zobrazte odkazy na související sloupce. Kliknutím na sloupec full_menu například zobrazíte nadřazené sloupce, ze kterých byl sloupec odvozen:
K předvedení vytváření a zobrazování rodokmenu v jiném jazyce, například v Pythonu, použijte následující kroky:
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 kliknetea vyberete Spustit buňku.
Do vyhledávacíhopole v horním panelu pracovního prostoru Azure Databricks zadejte
lineage_data.lineagedemo.price
a klikněte na Hledat lineage_data.lineagedemo.price v Databricks.V části Tabulky klikněte na
price
tabulku.Vyberte kartu Rodokmen a klikněte na Zobrazit graf rodokmenu. Kliknutím na ikony můžete prozkoumat rodokmen dat vygenerovaný dotazy SQL a Pythonu.
Kliknutím na šipku spojující uzly v grafu rodokmenu otevřete panel připojení rodokmenu. Panel připojení rodokmenu zobrazuje podrobnosti o připojení, včetně zdrojových a cílových tabulek, poznámkových bloků a pracovních postupů.
Zachycení a zobrazení rodokmenu pracovního postupu
Rodokmen se zaznamenává také pro všechny pracovní postupy, které čtou nebo zapisují do katalogu Unity. Pokud chcete předvést zobrazení rodokmenu pracovního postupu Azure Databricks, postupujte následovně:
Na bočním panelu klikněte na Nový a v nabídce vyberte Poznámkový blok.
Zadejte název poznámkového bloku a vyberte SQL ve výchozím jazyce.
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 vyberte Ručně, vyberte cluster s přístupem ke katalogu Unity a klikněte na Vytvořit.
Klikněte na možnost Spustit.
Do vyhledávacíhopole v horním panelu pracovního prostoru Azure Databricks zadejte
lineage_data.lineagedemo.menu
a klikněte na Hledat lineage_data.lineagedemo.menu v Databricks.V části Tabulky Zobrazit všechny tabulky klikněte na
menu
tabulku.Vyberte kartu Rodokmen, klikněte na Pracovní postupy a vyberte kartu Podřízená. Název úlohy se zobrazí v části Název úlohy jako příjemce
menu
tabulky.
Zachycení a zobrazení rodokmenu řídicího panelu
Pokud chcete předvést zobrazení rodokmenu řídicího panelu SQL, použijte následující postup:
- Přejděte na cílovou stránku Azure Databricks a otevřete Průzkumníka katalogu kliknutím na Katalog na bočním panelu.
- Klikněte na název katalogu, klikněte na rodokmen a vyberte
menu
tabulku. K vyhledání tabulky můžete také použít textové pole Prohledat tabulky v horním panelumenu
. - Klikněte na Příkazy > Vytvořit rychlý řídicí panel.
- Vyberte sloupce, které chcete přidat na řídicí panel, a klikněte na Vytvořit.
- Do vyhledávacíhopole v horním panelu pracovního prostoru Azure Databricks zadejte
lineage_data.lineagedemo.menu
a klikněte na Hledat lineage_data.lineagedemo.menu v Databricks. - V části Tabulky Zobrazit všechny tabulky klikněte na
menu
tabulku. - Vyberte kartu Rodokmen a klikněte na Řídicí panely. Název řídicího panelu se zobrazí v části Název řídicího panelu jako příjemce tabulky nabídek.
Oprávnění rodokmenu
Grafy rodokmenu sdílejí stejný model oprávnění jako katalog Unity. Pokud uživatel nemá BROWSE
oprávnění k SELECT
tabulce, nemůže prozkoumat rodokmen. Uživatelé navíc můžou zobrazit jenom poznámkové bloky, pracovní postupy a řídicí panely, které mají oprávnění k zobrazení. Pokud například spustíte následující příkazy pro uživatele bez oprávnění userA
správce:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Když userA
zobrazíte graf rodokmenu lineage_data.lineagedemo.menu
tabulky, zobrazí se menu
jim tabulka. Nebudou moct zobrazit informace o přidružených tabulkách, jako je například podřízená lineage_data.lineagedemo.dinner
tabulka. Tabulka dinner
je zobrazena jako masked
uzel v zobrazení userA
a userA
nemůže rozbalit graf tak, aby zobrazoval podřízené tabulky z tabulek, ke kterým nemají oprávnění pro přístup.
Pokud spustíte následující příkaz, který udělí BROWSE
oprávnění uživateli userB
, který není správcem:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
teď může zobrazit graf rodokmenu pro libovolnou tabulku ve schématu lineage_data
.
Další informace o správě přístupu k zabezpečitelným objektům v katalogu Unity najdete v tématu Správa oprávnění v katalogu Unity. Další informace o správě přístupu k objektům pracovního prostoru, jako jsou poznámkové bloky, pracovní postupy a řídicí panely, najdete v tématu Seznamy řízení přístupu.
Odstranění dat rodokmenu
Upozorňující
Následující pokyny odstraní všechny objekty uložené v katalogu Unity. Tyto pokyny použijte pouze v případě potřeby. Například pro splnění požadavků na dodržování předpisů.
Pokud chcete odstranit data rodokmenu, musíte odstranit metastor, který spravuje objekty katalogu Unity. Další informace o odstranění metastoru naleznete v tématu Odstranění metastoru. Data se odstraní do 90 dnů.
Rozhraní API rodokmenu dat
Rozhraní API rodokmenu dat umožňuje načíst rodokmen tabulky a sloupce.
Důležité
Pokud chcete získat přístup k rozhraním REST API služby Databricks, musíte použít ověřování.
Načtení rodokmenu tabulky
Tento příklad načte data rodokmenu dinner
pro tabulku.
Žá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
}
]
}
]
}
Načtení rodokmenu sloupců
Tento příklad načte data sloupců pro dinner
tabulku.
Žá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 .
Odpověď
{
"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"
}
]
}
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro