Поделиться через


Справочник по системе происхождения tables

Внимание

Эта система table находится в предварительной общедоступной версии. Чтобы получить доступ к table, необходимо включить schema в вашем systemcatalog. Дополнительные сведения см. в разделе Включение системных схем table.

В этой статье представлен обзор двойственной системы происхождения tables. Эти системы tables основываются на функции происхождения данных в Unity Catalog, что позволяет программно запрашивать данные о происхождении для поддержки принятия решений и создания отчетов.

Примечание.

Обе линии происхождения tables представляют собой подмножество всех событий чтения и записи, так как не всегда возможно записать линии происхождения. Записи создаются только при выводе происхождения.

Table линия table

table Система генеалогии table включает запись для каждого события чтения или записи в системе Unity Catalogtable или пути. Это включает в себя, но не ограничивается выполнением заданий, запуском записной книжки и панелями мониторинга, обновленными с помощью события чтения или записи.

Table путь: эта система table находится в system.access.table_lineage.

Table происхождение schema

Система table линейной последовательности table использует следующие schema.

имя Column Тип данных Description Пример
account_id строка Идентификатор учетной записи Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id строка Идентификатор метахранилища Unity Catalog. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id строка Идентификатор рабочей области 123456789012345
entity_type строка Тип сущности, из который была записана транзакция происхождения. Значение : NOTEBOOK, JOB, PIPELINEDASHBOARD_V3 (Панель мониторинга), (устаревшая панель мониторинга), DBSQL_DASHBOARDDBSQL_QUERY ИЛИNULL. NOTEBOOK
entity_id строка Идентификатор сущности, из нее была записана транзакция происхождения. Если entity_type имеет значение , NULL имеет entity_idзначение NULL. -Записная книжка: 23098402394234
-Работа: 23098402394234
— SQL-запрос Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Щиток: 01ef070d110715f2b6d3061b8bda89ea
— Устаревшая панель мониторинга: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Трубопровод: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id строка Идентификатор для описания уникального запуска сущности или NULL. Это отличается для каждого типа сущности:

— Записная книжка: command_run_id
— Задание: job_run_id
— SQL-запрос Databricks: query_run_id
— Панель мониторинга: query_run_id
— Устаревшая панель мониторинга: query_run_id
- Конвейер: pipeline_update_id

Если entity_type имеет значение , NULL имеет entity_run_idзначение NULL.
-Записная книжка: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
-Работа: 51090402394234
— SQL-запрос Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Щиток: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
— Устаревшая панель мониторинга: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
-Трубопровод: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name строка Трехкомпонентное имя для идентификации исходного table. catalog.schema.table
source_table_catalog строка catalog исходного table. catalog
source_table_schema строка schema исходного table. schema
source_table_name строка Имя исходного источника table. table
source_path строка Расположение в облачном хранилище исходного tableили путь, если доступ осуществляется непосредственно из облачного хранилища. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type строка Тип источника. Значение : TABLE, PATHVIEWили STREAMING_TABLE. TABLE
target_table_full_name строка Трехкомпонентное имя для идентификации целевого table. catalog.schema.table
target_table_catalog строка catalog целевого table. catalog
target_table_schema строка schema целевого table. schema
target_table_name строка Имя целевого table. table
target_path строка Расположение целевого объекта tableв облачном хранилище. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type строка Тип цели. Значение : TABLE, PATHVIEWили STREAMING TABLE. TABLE
created_by строка Пользователь, создавший эту происхождение. Это может быть имя пользователя Azure Databricks, идентификатор субъекта-службы Azure Databricks, System-User или NULL данные пользователя, которые не могут быть записаны. crampton.rods@email.com
event_time TIMESTAMP Метка времени создания происхождения. Timezone информация записывается в конце значения, при этом +00:00 представляет UTC. 2023-06-20T19:47:21.194+00:00
event_date Дата Дата создания происхождения. Это разделённый column. 2023-06-20

Column линия table

column линия table не включает события, которые не имеют источника. Например, если вы insert в column с помощью явного values, это действие не фиксируется. Если вы читаете column, оно записывается независимо от того, записываете ли вы выходные данные. Column линия не поддерживается для Delta Live Tables.

Table путь: эта система table находится в system.access.column_lineage.

Column родословная schema

Система родословной columntable использует следующие schema:

имя Column Тип данных Description Пример
account_id строка Идентификатор учетной записи Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
metastore_id строка Идентификатор метахранилища Unity Catalog. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id строка Идентификатор рабочей области 123456789012345
entity_type строка Тип сущности, из который была записана транзакция происхождения. Значение : NOTEBOOK, JOB, PIPELINEDASHBOARD_V3 (Панель мониторинга), (устаревшая панель мониторинга), DBSQL_DASHBOARDDBSQL_QUERY ИЛИNULL. NOTEBOOK
entity_id строка Идентификатор сущности, из нее была записана транзакция происхождения. Если entity_type имеет значение , NULL имеет entity_idзначение NULL. -Записная книжка: 23098402394234
-Работа: 23098402394234
— SQL-запрос Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Щиток: 01ef070d110715f2b6d3061b8bda89ea
— Устаревшая панель мониторинга: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Трубопровод: e9cd8a31-de2f-4206-adfa-4f6605d68d88
entity_run_id строка Идентификатор для описания уникального запуска сущности или NULL. Это отличается для каждого типа сущности:

— Записная книжка: command_run_id
— Задание: job_run_id
— SQL-запрос Databricks: query_run_id
— Панель мониторинга: query_run_id
— Устаревшая панель мониторинга: query_run_id
- Конвейер: pipeline_update_id

Если entity_type имеет значение , NULL имеет entity_run_idзначение NULL.
-Записная книжка: e3cr5a10-de6f-6206-fdfa-4f5505d68d55
-Работа: 51090402394234
— SQL-запрос Databricks: e9cd8a31-de2f-4206-adfa-4f6605d68d88
-Щиток: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
— Устаревшая панель мониторинга: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55
-Трубопровод: c5am1e0r-on2f-4206-adfa-4f6605d68d88
source_table_full_name строка Трехчастное имя для идентификации источника table. catalog.schema.table
source_table_catalog строка catalog исходного table. catalog
source_table_schema строка schema исходного table. schema
source_table_name строка Имя источника table. table
source_path строка Расположение в облачном хранилище для исходного файла tableили путь, если он читается непосредственно из облачного хранилища. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type строка Тип источника. Значение : TABLE, PATHVIEWили STREAMING_TABLE. TABLE
source_column_name строка Название источника column. date
target_table_full_name строка Трехчастное имя для идентификации объекта table. catalog.schema.table
target_table_catalog строка catalog целевого table. catalog
target_table_schema строка schema для целевого table. schema
target_table_name строка Имя целевого table. table
target_path строка Расположение в облачном хранилище целевого объекта table. abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type строка Тип цели. Значение : TABLE, PATHVIEWили STREAMING TABLE. TABLE
target_column_name строка Имя цели column. date
created_by строка Пользователь, создавший эту происхождение. Это может быть имя пользователя Azure Databricks, идентификатор субъекта-службы Azure Databricks, System-User или NULL данные пользователя, которые не могут быть записаны. crampton.rods@email.com
event_time TIMESTAMP Метка времени создания происхождения. Timezone сведения записываются в конце значения, где +00:00 представляет UTC. 2023-06-20T19:47:21.194+00:00
event_date Дата Дата создания происхождения. Это секционированный column. 2023-06-20

Чтение системы родословных tables

Обратите внимание на следующие рекомендации при анализе систем происхождения tables:

  • Для entity_typeAzure Databricks поддерживает Delta Live Tables, записные книжки, задания, запросы Databricks SQL и панели мониторинга. События из других сущностей не поддерживаются.
  • Если вы видите entity_type как null, это означает, что сущность Azure Databricks не участвует в событии. Например, это может быть результат запроса JDBC или пользователя, щелкнув вкладку "Пример данных " в пользовательском интерфейсе Azure Databricks.
  • Чтобы определить, было ли событие чтением или записью, можно просмотреть исходный тип и целевой тип.
    • Только для чтения: исходный тип не имеет значения NULL, но целевой тип имеет значение NULL.
    • Только запись: целевой тип не имеет значения NULL, но исходный тип имеет значение NULL.
    • Чтение и запись: исходный тип и целевой тип не имеют значения NULL.

Пример системы родословной table

В качестве примера того, как фиксируется происхождение в системе tables, ниже приведен пример запроса, за которым следуют записи происхождения, создаваемые запросом:

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);

Запись будет system.access.table_lineage выглядеть следующим образом:

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

Запись будет system.access.column_lineage выглядеть следующим образом:

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

Примечание.

Не все линии columns показаны в приведенном выше примере. Для полного schema, смотрите следующую запись родословной schemaвыше.

Устранение неполадок с внешними запросами table

При ссылке на внешний table с помощью пути к облачному хранилищу связанная запись происхождения содержит только имя пути, а не имя table. Например, запись происхождения для этого запроса будет содержать имя пути, а не имя table:

SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;

Если вы пытаетесь запросить записи происхождения для внешнего table, к которому ведет путь, необходимо отфильтровать запрос с помощью source_path или target_path вместо source_table_full_name или target_table_full_name. Так, например, следующий запрос извлекает все линейные записи для внешнего объекта table:

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";

Пример: Получение записей происхождения на основе внешнего имени table

Если вы не хотите вручную получить путь к облачному хранилищу для поиска происхождения, можно использовать следующую функцию для get данных происхождения с помощью имени table. Вы также можете заменить system.access.table_lineage на system.access.column_lineage в функции, если хотите запросить происхождение column.

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)
  )

Затем выполните следующую команду, чтобы вызвать функцию и отобразить записи родословной для внешнего table:

display(getLineageForTable("table_name"))