Справочник по системным таблицам происхождения
Внимание
Эта системная таблица находится в общедоступной предварительной версии. Чтобы получить доступ к таблице, в каталоге должна быть включена system
схема. Дополнительные сведения см. в разделе "Включение схем системной таблицы".
В этой статье представлен обзор двух системных таблиц происхождения. Эти системные таблицы создаются на основе функции происхождения данных каталога Unity, что позволяет программным способом запрашивать данные о происхождении данных, чтобы подпитывать принятие решений и отчеты.
Примечание.
Обе таблицы происхождения представляют подмножество всех событий чтения и записи, так как не всегда невозможно записать происхождение. Записи создаются только при выводе происхождения.
Таблица происхождения таблиц
Системная таблица таблицы содержит запись для каждого события чтения или записи в таблице каталога Unity или пути. Это включает в себя, но не ограничивается выполнением заданий, запуском записной книжки и панелями мониторинга, обновленными с помощью события чтения или записи.
Путь к таблице: эта системная таблица расположена по адресу system.access.table_lineage
.
Таблица происхождения столбцов
Таблица происхождения столбцов не включает события, у которых нет источника. Например, при вставке в столбец с использованием явных значений он не фиксируется. Если вы считываете столбец, он записывается независимо от того, записываете ли вы выходные данные. Происхождение столбцов не поддерживается для разностных динамических таблиц.
Путь к таблице: эта системная таблица расположена по адресу system.access.column_lineage
.
Схема системной таблицы происхождения
Системные таблицы происхождения используют следующую схему. Схема происхождения таблицы не включает 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"))