Справочник по системе происхождения tables
Внимание
Эта система table находится в предварительной общедоступной версии. Чтобы получить доступ к table, необходимо включить schema в вашем system
catalog. Дополнительные сведения см. в разделе Включение системных схем 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 , PIPELINE DASHBOARD_V3 (Панель мониторинга), (устаревшая панель мониторинга), DBSQL_DASHBOARD DBSQL_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 , PATH VIEW или 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 , PATH VIEW или 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 , PIPELINE DASHBOARD_V3 (Панель мониторинга), (устаревшая панель мониторинга), DBSQL_DASHBOARD DBSQL_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 , PATH VIEW или 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 , PATH VIEW или 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_type
Azure 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"))