Referenční dokumentace systémových tabulek rodokmenu
Důležité
Tato systémová tabulka je ve verzi Public Preview. Aby bylo možné získat přístup k tabulce, musí být schéma v system
katalogu povolené. Další informace naleznete v tématu Povolení schémat systémových tabulek.
Tento článek obsahuje přehled dvou systémových tabulek rodokmenu. Tyto systémové tabulky vycházejí z funkce rodokmenu dat v Unity Catalog, která umožňuje programově dotazovat data rodokmenu, aby se mohla rozhodovat o rozhodování a sestavách v Unity.
Poznámka:
Obě tabulky rodokmenu představují podmnožinu všech událostí čtení a zápisu, protože není vždy možné zachytit rodokmen. Záznamy se generují pouze v případech, kdy je možné odvodit rodokmen.
Tabulka rodokmenu tabulky
Systémová tabulka rodokmenu tabulky obsahuje záznam pro každou událost čtení nebo zápisu v tabulce nebo cestě katalogu Unity. To zahrnuje mimo jiné spuštění úloh, spuštění poznámkového bloku a řídicí panely aktualizované událostí čtení nebo zápisu.
Cesta k tabulce: Tato systémová tabulka se nachází na system.access.table_lineage
adrese .
Tabulka rodokmenu sloupců
Tabulka rodokmenu sloupců neobsahuje události, které nemají zdroj. Pokud například vložíte do sloupce pomocí explicitních hodnot, nezachytí se. Pokud přečtete sloupec, zachytí se bez ohledu na to, jestli zapíšete výstup. Rodokmen sloupců není pro dynamické tabulky Delta podporován.
Cesta k tabulce: Tato systémová tabulka se nachází na system.access.column_lineage
adrese .
Schéma systémové tabulky rodokmenu
Systémové tabulky rodokmenu používají následující schéma. Schéma rodokmenu tabulky nezahrnuje source_column_name
a target_column_name
.
Název sloupce | Datový typ | Popis | Příklad |
---|---|---|---|
account_id |
string | ID účtu Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
string | ID metastoru katalogu Unity. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
string | ID pracovního prostoru | 123456789012345 |
entity_type |
string | Typ entity, ze které byla zachycena transakce rodokmenu. Hodnota je NOTEBOOK , , JOB , PIPELINE ( DASHBOARD_V3 řídicí panel), DBSQL_DASHBOARD (starší řídicí panel), DBSQL_QUERY , NEBO NULL . |
NOTEBOOK |
entity_id |
string | ID entity, ze které byla zachycena transakce rodokmenu. Pokud entity_type je , entity_id je NULL NULL . |
-Zápisník: 23098402394234 -Práce: 23098402394234 – Dotaz SQL databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -Palubní deska: 01ef070d110715f2b6d3061b8bda89ea – Starší řídicí panel: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -Potrubí: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
string | ID pro popis jedinečného spuštění entity nebo NULL . Liší se u každého typu entity:– Poznámkový blok: command_run_id - Práce: job_run_id – Dotaz SQL databricks: query_run_id – Řídicí panel: query_run_id – Starší řídicí panel: query_run_id – Kanál: pipeline_update_id Pokud entity_type je , entity_run_id je NULL NULL . |
-Zápisník: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 -Práce: 51090402394234 – Dotaz SQL databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -Palubní deska: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 – Starší řídicí panel: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 -Potrubí: c5am1e0r-on2f-4206-adfa-4f6605d68d88 |
source_table_full_name |
string | Název tří částí pro identifikaci zdrojové tabulky | catalog.schema.table |
source_table_catalog |
string | Katalog zdrojové tabulky. | catalog |
source_table_schema |
string | Schéma zdrojové tabulky | schema |
source_table_name |
string | Název zdrojové tabulky. | table |
source_path |
string | Umístění v cloudovém úložišti zdrojové tabulky nebo cesta, pokud se čte přímo z cloudového úložiště. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
string | Typ zdroje. Hodnota je TABLE , , PATH VIEW nebo STREAMING_TABLE . |
TABLE |
source_column_name |
string | Název zdrojového sloupce. | date |
target_table_full_name |
string | Třídílný název k identifikaci cílové tabulky | catalog.schema.table |
target_table_catalog |
string | Katalog cílové tabulky. | catalog |
target_table_schema |
string | Schéma cílové tabulky | schema |
target_table_name |
string | Název cílové tabulky. | table |
target_path |
string | Umístění v cloudovém úložišti cílové tabulky | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
string | Typ cíle. Hodnota je TABLE , , PATH VIEW nebo STREAMING TABLE . |
TABLE |
target_column_name |
string | Název cílového sloupce | date |
created_by |
string | Uživatel, který tento rodokmen vygeneroval. Může to být uživatelské jméno Azure Databricks, ID instančního objektu Azure Databricks, System-User nebo NULL pokud se informace o uživateli nedají zachytit. |
crampton.rods@email.com |
event_time |
časové razítko | Časové razítko při vygenerování rodokmenu. Informace o časovém pásmu se zaznamenávají na konci hodnoty s reprezentací +00:00 UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
datum | Datum vygenerování rodokmenu. Jedná se o dělený sloupec. | 2023-06-20 |
Čtení systémových tabulek rodokmenu
Při analýze systémových tabulek rodokmenu si všimněte následujících aspektů:
entity_type
Azure Databricks podporuje tabulky Delta Live, poznámkové bloky, úlohy, dotazy SQL Databricks a řídicí panely. Události z jiných entit se nepodporují.- Pokud se zobrazí
entity_type
jakonull
, znamená to, že v události není zahrnuta žádná entita Azure Databricks. Může to být například výsledek dotazu JDBC nebo kliknutí na kartu Ukázková data v uživatelském rozhraní Azure Databricks. - Pokud chcete zjistit, jestli byla událost čtením nebo zápisem, můžete zobrazit typ zdroje a cílový typ.
- Jen pro čtení: Typ zdroje není null, ale cílový typ má hodnotu null.
- Pouze zápis: Cílový typ není null, ale zdrojový typ má hodnotu null.
- Čtení a zápis: Typ zdroje a cílový typ nemají hodnotu null.
Příklad systémové tabulky rodokmenu
Jako příklad, jak se rodokmen zaznamenává v systémových tabulkách, tady je příklad dotazu následovaný záznamy rodokmenu, který dotaz vytvoří:
CREATE OR REPLACE TABLE car_features
AS SELECT *, in1+in2 as premium_feature_set
FROM car_features_exterior
JOIN car_features_interior
USING(id, model);
Záznam system.access.table_lineage
by vypadal takto:
entity_type |
entity_id |
source_table_name |
target_table_name |
created_by |
event_time |
---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_exterior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
crampton@email.com |
2023-01-25T16:19:58.908+0000 |
Záznam system.access.column_lineage
by vypadal takto:
entity_type |
entity_id |
source_table_name |
target_table_name |
source_column_name |
target_column_name |
event_time |
---|---|---|---|---|---|---|
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in1 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
NOTEBOOK |
27080565267 |
car_features_interior |
car_features |
in2 |
premium_feature_set |
2023-01-25T16:19:58.908+0000 |
Poznámka:
V předchozím příkladu se nezobrazují všechny sloupce rodokmenu. Úplné schéma najdete ve výše uvedeném schématu rodokmenu.
Řešení potíží s dotazy na externí tabulky
Pokud odkazujete na externí tabulku pomocí cesty ke cloudovému úložišti, přidružený záznam rodokmenu obsahuje pouze název cesty, nikoli název tabulky. Záznam rodokmenu pro tento dotaz by například obsahoval název cesty, nikoli název tabulky:
SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;
Pokud se pokoušíte dotazovat záznamy rodokmenu pro externí tabulku odkazovanou cestou, budete muset dotaz filtrovat pomocí source_path
nebo target_path
místo source_table_full_name
nebo target_table_full_name
. Například následující dotaz načítá všechny záznamy rodokmenu pro externí tabulku:
SELECT *
FROM system.access.table_lineage
WHERE
source_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1" OR
target_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1";
Příklad: Načtení záznamů rodokmenu na základě názvu externí tabulky
Pokud nechcete ručně načíst cestu ke cloudovému úložišti a najít rodokmen, můžete pomocí následující funkce získat data rodokmenu pomocí názvu tabulky. Pokud chcete dotazovat rodokmen sloupců, můžete funkci nahradit system.access.table_lineage
system.access.column_lineage
také funkcí.
def getLineageForTable(table_name):
table_path = spark.sql(f"describe detail {table_name}").select("location").head()[0]
df = spark.read.table("system.access.table_lineage")
return df.where(
(df.source_table_full_name == table_name)
| (df.target_table_full_name == table_name)
| (df.source_path == table_path)
| (df.target_path == table_path)
)
Pak pomocí následujícího příkazu volejte funkci a zobrazte záznamy rodokmenu pro externí tabulku:
display(getLineageForTable("table_name"))