Sdílet prostřednictvím


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_lineageadrese .

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.
  • Poznámkový blok: 23098402394234
  • Práce: 23098402394234
  • Dotaz Databricks SQL: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Řídicí panel: 01ef070d110715f2b6d3061b8bda89ea
  • Starší řídicí panel: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Potrubí: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id řetězec ID k popisu jedinečného běhu entity nebo NULL. Liší se u každého typu entity:
  • Poznámkový blok: command_run_id
  • Úloha: job_run_id
  • Dotaz SQL Databricks: query_run_id
  • Řídicí panel: query_run_id
  • Starší řídicí panel: query_run_id
  • Potrubí: pipeline_update_id

Pokud je entity_type, je NULL, entity_run_id je NULL.
  • Poznámkový blok: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
  • Pozice: 51090402394234
  • SQL dotaz v Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Řídicí panel: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Starší řídicí panel: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Potrubí: c5am1e0r-on2f-4206-adfa-4f6605d68d88
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, , PATHVIEWnebo 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, , PATHVIEWnebo 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_lineageadrese .

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.
  • Poznámkový blok: 23098402394234
  • Práce: 23098402394234
  • Dotaz SQL Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Řídicí panel: 01ef070d110715f2b6d3061b8bda89ea
  • Starší řídicí panel: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Potrubí: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id řetězec ID k popisu jedinečného běhu objektu nebo NULL. Liší se u každého typu entity:
  • Poznámkový blok: command_run_id
  • Úloha: job_run_id
  • Dotaz SQL Databricks: query_run_id
  • Řídicí panel: query_run_id
  • Zastaralý řídicí panel: query_run_id
  • Kanál: pipeline_update_id

Pokud je entity_type, je NULL, entity_run_id je NULL.
  • Poznámkový blok: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
  • Práce: 51090402394234
  • Dotaz Databricks SQL: e9cd8a31-de2f-4206-adfa-4f6605d68d88
  • Řídicí panel: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Starší řídicí panel: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
  • Potrubí: c5am1e0r-on2f-4206-adfa-4f6605d68d88
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, , PATHVIEWnebo 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, , PATHVIEWnebo 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_typeDLT, poznámkové bloky, úlohy, dotazy SQL Databricks a řídicí panely. Události z jiných entit nejsou podporovány.
  • Pokud se zobrazí entity_type jako null, 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"))