Справочник по системным таблицам происхождения
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии. Схема должна быть включена для отображения в каталоге system
. Дополнительные сведения см. в разделе "Включение схем системной таблицы"
В этой статье представлен обзор двух системных таблиц происхождения. Эти системные таблицы создаются на основе функции происхождения данных каталога Unity, что позволяет программным способом запрашивать данные о происхождении данных, чтобы подпитывать принятие решений и отчеты.
Существует две системные таблицы происхождения:
system.access.table_lineage
system.access.column_lineage
Примечание.
Обе таблицы происхождения представляют подмножество всех событий чтения и записи, так как не всегда невозможно записать происхождение. Записи создаются только при выводе происхождения.
Таблица происхождения таблиц
Системная таблица таблицы содержит запись для каждого события чтения или записи в таблице каталога Unity или пути. Это включает в себя, но не ограничивается выполнением заданий, запуском записной книжки и панелями мониторинга, обновленными с помощью события чтения или записи.
Таблица происхождения столбцов
Таблица происхождения столбцов не включает события, у которых нет источника. Например, при вставке в столбец с использованием явных значений он не фиксируется. Если вы считываете столбец, он записывается независимо от того, записываете ли вы выходные данные. Происхождение столбцов не поддерживается для разностных динамических таблиц.
Схема системной таблицы происхождения
Системные таблицы происхождения используют следующую схему. Схема происхождения таблицы не включает source_column_name
и target_column_name
.
Имя столбца | Тип данных | Description | Пример |
---|---|---|---|
account_id |
строка | Идентификатор учетной записи Azure Databricks. | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
строка | Идентификатор хранилища метаданных каталога Unity. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
строка | Идентификатор рабочей области | 123456789012345 |
entity_type |
строка | Тип сущности, из который была записана транзакция происхождения. Значение : NOTEBOOK , JOB , PIPELINE DASHBOARD_V3 (Панель мониторинга), (устаревшая панель мониторинга), DBSQL_QUERY DBSQL_DASHBOARD ИЛИNULL . |
NOTEBOOK |
entity_id |
строка | Идентификатор сущности, из нее была записана транзакция происхождения. Если entity_type имеет значение , entity_id имеет NULL значение 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 имеет значение , entity_run_id имеет NULL значение 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 |
строка | Трехкомпонентное имя для идентификации исходной таблицы. | catalog.schema.table |
source_table_catalog |
строка | Каталог исходной таблицы. | catalog |
source_table_schema |
строка | Схема исходной таблицы. | catalog.schema |
source_table_name |
строка | Имя исходной таблицы. | table |
source_path |
строка | Расположение в облачном хранилище исходной таблицы или путь, если он считывается непосредственно из облачного хранилища. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
source_type |
строка | Тип источника. Значение : TABLE , PATH VIEW или STREAMING_TABLE . |
TABLE |
source_column_name |
строка | Имя исходного столбца. | date |
target_table_full_name |
строка | Трехкомпонентное имя для идентификации целевой таблицы. | catalog.schema.table |
target_table_catalog |
строка | Каталог целевой таблицы. | catalog |
target_table_schema |
строка | Схема целевой таблицы. | catalog.schema |
target_table_name |
строка | Имя целевой таблицы. | table |
target_path |
строка | Расположение в облачном хранилище целевой таблицы. | abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1 |
target_type |
строка | Тип цели. Значение : TABLE , PATH VIEW или STREAMING TABLE . |
TABLE |
target_column_name |
строка | Имя целевого столбца. | date |
created_by |
строка | Пользователь, создавший эту происхождение. Это может быть имя пользователя Azure Databricks, идентификатор субъекта-службы Azure Databricks, System-User или NULL данные пользователя, которые не могут быть записаны. |
crampton.rods@email.com |
event_time |
TIMESTAMP | Метка времени создания происхождения. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
Дата | Дата создания происхождения. Это секционированные столбцы. | 2023-06-20 |
Чтение системных таблиц происхождения
Обратите внимание на следующие рекомендации при анализе системных таблиц происхождения:
entity_type
Для azure Databricks поддерживает разностные динамические таблицы, записные книжки, задания, запросы SQL Databricks и панели мониторинга. События из других сущностей не поддерживаются.- Если вы видите
entity_type
какnull
, это означает, что сущность Azure Databricks не участвует в событии. Например, это может быть результат запроса JDBC или пользователя, щелкнув вкладку "Пример данных " в пользовательском интерфейсе Azure Databricks. - Чтобы определить, было ли событие чтением или записью, можно просмотреть исходный тип и целевой тип.
- Только для чтения: исходный тип не имеет значения NULL, но целевой тип имеет значение NULL.
- Только запись: целевой тип не имеет значения NULL, но исходный тип имеет значение NULL.
- Чтение и запись: исходный тип и целевой тип не имеют значения NULL.
Пример системной таблицы происхождения
В качестве примера записи происхождения в системных таблицах ниже приведен пример запроса, за которым следует запись происхождения, создаваемый запросом:
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 |
Примечание.
Не все столбцы происхождения показаны в приведенном выше примере. Полные схемы см. в приведенной выше схеме происхождения.
Устранение неполадок с запросами внешней таблицы
При ссылке на внешнюю таблицу с помощью пути к облачному хранилищу связанная запись происхождения содержит только имя пути, а не имя таблицы. Например, запись происхождения для этого запроса будет содержать имя пути, а не имя таблицы:
SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;
Если вы пытаетесь запросить записи происхождения для внешней таблицы, на которую ссылается путь, необходимо отфильтровать запрос с помощью source_path
или target_path
вместо source_table_full_name
него target_table_full_name
. Например, следующий запрос извлекает все записи происхождения для внешней таблицы:
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";
Пример. Получение записей происхождения на основе имени внешней таблицы
Если вы не хотите вручную получить путь к облачному хранилищу для поиска происхождения, можно использовать следующую функцию, чтобы получить данные о происхождении с помощью имени таблицы. Вы также можете заменить system.access.table_lineage
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)
)
Затем выполните следующую команду, чтобы вызвать функцию и отобразить записи происхождения для внешней таблицы:
display(getLineageForTable("table_name"))