Справочник по системным таблицам потомственности
Внимание
Эта системная таблица находится в общедоступной предварительной версии. Чтобы получить доступ к таблице, схема должна быть включена в каталоге system
. Дополнительные сведения см. в разделе Включение системных схем таблиц.
В этой статье представлен обзор двух системных таблиц происхождения. Эти системные таблицы создаются на основе функции происхождения данных каталога Unity, что позволяет программным способом запрашивать данные происхождения данных для обеспечения принятия решений и отчетов.
Примечание.
Обе таблицы происхождения представляют подмножество всех событий чтения и записи, так как не всегда возможно записать происхождение. Записи выводятся только тогда, когда можно установить происхождение.
Таблица происхождения таблиц
В системе таблиц lineage содержится запись для каждого события чтения или записи в таблице каталога Unity или пути. Это включает в себя, но не ограничивается выполнением заданий, запуском блокнота и информационными панелями, обновленными в результате события чтения или записи.
Путь к таблице: эта системная таблица расположена по адресу system.access.table_lineage
.
Схема линейности таблицы
В таблице системы родословной таблицы используется следующая схема.
Имя столбца | Тип данных | Описание | Пример |
---|---|---|---|
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_DASHBOARD (Устаревшая панель мониторинга), DBSQL_QUERY ИЛИ NULL . |
NOTEBOOK |
entity_id |
строка | Идентификатор сущности, из которой была зафиксирована транзакция родословной. Если entity_type — это NULL , то entity_id — это NULL . |
|
entity_run_id |
строка | Идентификатор для описания уникального запуска сущности или NULL . Это отличается для каждого типа сущности:
Если entity_type — это NULL , то entity_run_id — это NULL . |
|
source_table_full_name |
строка | Трехкомпонентное имя для идентификации исходной таблицы. | catalog.schema.table |
source_table_catalog |
строка | Каталог исходной таблицы. | catalog |
source_table_schema |
строка | Схема исходной таблицы. | 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 |
target_table_full_name |
строка | Трехкомпонентное имя для идентификации целевой таблицы. | catalog.schema.table |
target_table_catalog |
строка | Каталог целевой таблицы. | catalog |
target_table_schema |
строка | Схема целевой таблицы. | 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 |
created_by |
строка | Пользователь, создавший эту линиейку. Это может быть имя пользователя Azure Databricks, идентификатор учетной записи службы Azure Databricks, «System-User» или NULL , если информацию о пользователе невозможно зафиксировать. |
crampton.rods@email.com |
event_time |
метка времени | Метка времени генерации родословной. Сведения о часовом поясе записываются в конце значения с +00:00 , представляющей UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
Дата | Дата создания родословной. Это секционированный столбец. | 2023-06-20 |
Таблица происхождения столбцов
Таблица происхождения столбцов не включает события, у которых нет источника. Например, при вставке в столбец с использованием явных значений он не фиксируется. Если вы считываете столбец, он записывается независимо от того, записываете ли вы выходные данные. Линейность столбцов не поддерживается для DLT.
Путь к таблице: эта системная таблица расположена по адресу system.access.column_lineage
.
схема происхождения столбцов
В системной таблице родословной столбцов используется следующая схема:
Имя столбца | Тип данных | Описание | Пример |
---|---|---|---|
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_DASHBOARD (Устаревшая панель), DBSQL_QUERY ИЛИ NULL . |
NOTEBOOK |
entity_id |
строка | Идентификатор сущности, из нее была записана транзакция происхождения. Если entity_type — это NULL , то entity_id — это NULL . |
|
entity_run_id |
строка | Идентификатор для описания уникального запуска сущности или NULL . Это отличается для каждого типа сущности:
Если entity_type — это NULL , то entity_run_id — это NULL . |
|
source_table_full_name |
строка | Трехкомпонентное имя для идентификации исходной таблицы. | catalog.schema.table |
source_table_catalog |
строка | Каталог исходной таблицы. | catalog |
source_table_schema |
строка | Схема исходной таблицы. | 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 |
строка | Схема целевой таблицы. | 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 |
метка времени | Метка времени создания родословной данных. Сведения о часовом поясе записываются в конце значения с +00:00 , представляющей UTC. |
2023-06-20T19:47:21.194+00:00 |
event_date |
Дата | Дата создания родословной. Это секционированный столбец. | 2023-06-20 |
Чтение системных таблиц родословной
Обратите внимание на следующие рекомендации при анализе системных таблиц происхождения:
- Для
entity_type
платформа Azure Databricks поддерживает технологию DLT, записные книжки, задания, запросы Databricks SQL и панели мониторинга. События из других сущностей не поддерживаются. - Если вы видите
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"))