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 sledování původu dat v Unity Catalog, která umožňuje programově dotazovat data o původu pro podporu rozhodování a sestav.
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 s rodokmenem datových tabulek
Systémová tabulka původu tabulky obsahuje záznam pro každou událost čtení nebo zápisu na 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 .
schéma rodokmenu tabulky
Tabulka liniového systému používá následující schéma.
Název sloupce | Datový typ | Popis | Příklad |
---|---|---|---|
account_id |
řetězec | ID účtu Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
řetězec | ID metastoru katalogu Unity. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
řetězec | ID pracovního prostoru | 123456789012345 |
entity_type |
řetězec | 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 |
řetězec | ID entity, ze které byla zachycena transakce rodu. Pokud je entity_type , je NULL , entity_id je NULL . |
|
entity_run_id |
řetězec | ID k popisu jedinečného běhu entity nebo NULL . Liší se u každého typu entity:
Pokud je entity_type , je NULL , entity_run_id je NULL . |
|
source_table_full_name |
řetězec | Název tří částí pro identifikaci zdrojové tabulky | catalog.schema.table |
source_table_catalog |
řetězec | Katalog zdrojové tabulky. | catalog |
source_table_schema |
řetězec | Schéma zdrojové tabulky | schema |
source_table_name |
řetězec | Název zdrojové tabulky. | table |
source_path |
řetězec | Umístění zdrojové tabulky v cloudovém úložišti nebo cesta, pokud se tabulka čte přímo z cloudového úložiště. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
řetězec | Typ zdroje. Hodnota je TABLE , , PATH VIEW nebo STREAMING_TABLE . |
TABLE |
target_table_full_name |
řetězec | Třídílný název k identifikaci cílové tabulky | catalog.schema.table |
target_table_catalog |
řetězec | Katalog cílové tabulky. | catalog |
target_table_schema |
řetězec | Schéma cílové tabulky | schema |
target_table_name |
řetězec | Název cílové tabulky. | table |
target_path |
řetězec | 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 |
řetězec | Typ cíle. Hodnota je TABLE , , PATH VIEW nebo STREAMING TABLE . |
TABLE |
created_by |
řetězec | 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, kde +00:00 označuje 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 |
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 DLT podporován.
Cesta k tabulce: Tato systémová tabulka se nachází na system.access.column_lineage
adrese .
schéma rodokmenu sloupců
Systémová tabulka rodokmenu sloupců používá následující schéma:
Název sloupce | Datový typ | Popis | Příklad |
---|---|---|---|
account_id |
řetězec | ID účtu Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
řetězec | ID úložiště pro metadata katalogu Unity. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
řetězec | ID pracovního prostoru | 123456789012345 |
entity_type |
řetězec | Typ entity, ze které byla zachycena transakce rodokmenu. Hodnota může být NOTEBOOK , JOB , PIPELINE , DASHBOARD_V3 (řídicí panel), DBSQL_DASHBOARD (starší řídicí panel), DBSQL_QUERY nebo NULL . |
NOTEBOOK |
entity_id |
řetězec | ID entity, ze které byla zachycena transakce rodu. Pokud je entity_type , je NULL , entity_id je NULL . |
|
entity_run_id |
řetězec | ID k popisu jedinečného běhu objektu nebo NULL . Liší se u každého typu entity:
Pokud je entity_type , je NULL , entity_run_id je NULL . |
|
source_table_full_name |
řetězec | Název tří částí pro identifikaci zdrojové tabulky | catalog.schema.table |
source_table_catalog |
řetězec | Katalog zdrojové tabulky. | catalog |
source_table_schema |
řetězec | Schéma zdrojové tabulky | schema |
source_table_name |
řetězec | Název zdrojové tabulky. | table |
source_path |
řetězec | Umístění v cloudovém úložišti zdrojové tabulky nebo cesta ke zdrojové tabulce, 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 |
řetězec | Typ zdroje. Hodnota je TABLE , , PATH VIEW nebo STREAMING_TABLE . |
TABLE |
source_column_name |
řetězec | Název zdrojového sloupce. | date |
target_table_full_name |
řetězec | Třídílný název pro identifikaci cílové tabulky | catalog.schema.table |
target_table_catalog |
řetězec | Katalog cílové tabulky. | catalog |
target_table_schema |
řetězec | Schéma cílové tabulky | schema |
target_table_name |
řetězec | Název cílové tabulky. | table |
target_path |
řetězec | 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 |
řetězec | Typ cíle. Hodnota je TABLE , , PATH VIEW nebo STREAMING TABLE . |
TABLE |
target_column_name |
řetězec | Název cílového sloupce | date |
created_by |
řetězec | 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, kde +00:00 označuje 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ů:
- Azure Databricks podporuje pro
entity_type
DLT, poznámkové bloky, úlohy, dotazy SQL Databricks a řídicí panely. Události z jiných entit nejsou podporovány. - 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 je 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 linii sloupců, můžete ve funkci nahradit system.access.table_lineage
za system.access.column_lineage
.
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"))