Сбор и просмотр происхождения данных с помощью каталога Unity
В этой статье описывается, как записывать и визуализировать происхождение данных с помощью обозревателя каталогов, системных таблиц данных и REST API.
Каталог Unity можно использовать для фиксации линейности данных среды выполнения в рамках запросов, выполняемых на Azure Databricks. Родословная поддерживается для всех языков и фиксируется на уровне столбца. Данные о происхождении включают записные книжки, задания и панели мониторинга, связанные с данным запросом. Родословную можно визуализировать в Catalog Explorer почти в реальном времени и получать программно с использованием системных таблиц родословной и REST API Databricks.
Линейность собирается во всех рабочих областях, подключенных к метахранилищу Unity Catalog. Это означает, что родословная, зафиксированная в одной рабочей области, видна в любой другой рабочей области, которая разделяет это хранилище метаданных. В частности, таблицы и другие объекты данных, зарегистрированные в хранилище метаданных, видны пользователям, имеющим по крайней мере BROWSE
разрешения на эти объекты во всех рабочих областях, подключенных к хранилищу метаданных. Однако подробная информация об объектах уровня рабочей области, таких как записные книжки и панели мониторинга в других рабочих зонах, скрыта (см. Ограничения и Разрешения на родословную).
Данные о происхождении сохраняются в течение одного года.
На следующем рисунке представлен пример графика происхождения. Конкретные функции происхождения данных и примеры рассматриваются далее в этой статье.
Сведения об отслеживании происхождения модели машинного обучения см. в статье Отслеживание происхождения данных модели в каталоге Unity.
Требования
Для записи происхождения данных с помощью каталога Unity необходимо следующее:
- Рабочая область должна иметь включенный каталог Unity.
- Таблицы должны быть зарегистрированы в хранилище метаданных каталога Unity.
- В запросах должны использоваться Spark DataFrame (например, функции Spark SQL, возвращающие DataFrame) или интерфейсы Databricks SQL. Примеры запросов Databricks SQL и PySpark см. здесь.
- Чтобы просмотреть происхождение таблицы или представления, пользователи должны иметь по крайней мере привилегию
BROWSE
на родительский каталог таблицы или представления. Родительский каталог также должен быть доступен из рабочей области. См. раздел Ограничение доступа к каталогу для определенных рабочих областей. - Чтобы просмотреть информацию о родословной записных книжек, заданий или панелей мониторинга, пользователи должны иметь разрешения на эти объекты, как определено настройками управления доступом в рабочей области. См. разрешения на трассировку данных.
- Чтобы просмотреть родословную для конвейера с поддержкой каталога Unity , необходимо иметь
CAN_VIEW
разрешения на конвейер. - Для отслеживания происхождения потоков данных между таблицами Delta требуется Databricks Runtime 11.3 LTS или новее.
- Для отслеживания происхождения столбцов для рабочих нагрузок DLT требуется Databricks Runtime 13.3 LTS или более поздней версии.
- Возможно, потребуется обновить правила исходящего брандмауэра, чтобы разрешить подключение к конечной точке Центров событий в плоскости управления Azure Databricks. Обычно это применимо, если рабочая область Azure Databricks развертывается в собственной виртуальной сети (также называемой внедрением виртуальной сети). Чтобы получить конечную точку Пакетов событий для вашего региона рабочего пространства, см. раздел хранилище метаданных, хранилище артефактов BLOB, хранилище системных таблиц, хранилище журналов BLOB и IP-адреса конечных точек Пакетов событий. Сведения о настройке определяемых пользователем маршрутов (UDR) для Azure Databricks см. в разделе Пользовательские параметры маршрутизации для Azure Databricks.
Примеры
Примечание.
В следующих примерах используется имя каталога
lineage_data
и имя схемыlineagedemo
. Чтобы использовать другой каталог и схему, измените имена, используемые в примерах.Чтобы завершить этот пример, необходимо иметь
CREATE
иUSE SCHEMA
привилегии в схеме. Администратор хранилища метаданных, владелец каталога, владелец схемы или пользователь с правамиMANAGE
на схеме может предоставить эти привилегии. Например, чтобы предоставить всем пользователям в группе разрешение "data_engineers" на создание таблиц в схемеlineagedemo
в каталогеlineage_data
, пользователь с одним из указанных выше привилегий или ролей может выполнять следующие запросы:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Фиксирование и изучение линейности данных
Для записи данных происхождения:
Перейдите на главную страницу Azure Databricks, щелкните
New на боковой панели и выберите Notebook в меню.
Введите имя записной книжки и выберите SQL в язык по умолчанию.
В кластеревыберите кластер с доступом к каталогу Unity.
Нажмите кнопку Создать.
В первой ячейке записной книжки введите следующие запросы:
CREATE TABLE IF NOT EXISTS lineage_data.lineagedemo.menu ( recipe_id INT, app string, main string, dessert string ); INSERT INTO lineage_data.lineagedemo.menu (recipe_id, app, main, dessert) VALUES (1,"Ceviche", "Tacos", "Flan"), (2,"Tomato Soup", "Souffle", "Creme Brulee"), (3,"Chips","Grilled Cheese","Cheesecake"); CREATE TABLE lineage_data.lineagedemo.dinner AS SELECT recipe_id, concat(app," + ", main," + ",dessert) AS full_menu FROM lineage_data.lineagedemo.menu
Чтобы выполнить запросы, щелкните в ячейке и нажмите shift+ввод или откройте
и выберите Выполнить ячейку.
Чтобы использовать обозреватель каталогов для просмотра происхождения, созданного этими запросами:
В поле поиска
в верхней строке рабочей области Azure Databricks найдите таблицу и выберите ее. Перейдите на вкладку «Lineage». Откроется панель родословной, отображающая связанные таблицы (в данном примере это таблица
menu
).Чтобы просмотреть интерактивный граф происхождения данных, нажмите Просмотреть график происхождения данных. По умолчанию в графе отображается один уровень. Щелкните значок
на узле, чтобы отобразить дополнительные подключения, если они доступны.
Щелкните стрелку, соединяющую узлы в графе связей, чтобы открыть панель подключения Lineage. Панель подключения родословной отображает детали соединения, включая исходные и целевые таблицы, записные книжки и задания.
граф происхождения
Чтобы отобразить записную книжку, связанную с таблицей
dinner
, выберите записную книжку на панели подключения графа зависимости или закройте граф зависимости и щелкните Записные книжки. Чтобы открыть записную книжку на новой вкладке, щелкните имя записной книжки.Чтобы просмотреть происхождение на уровне столбцов, щелкните столбец в графе, чтобы отобразить ссылки на связанные столбцы. Например, щелчок по столбцу "full_menu" покажет вышестоящие столбцы, от которых был получен данный столбец.
Чтобы просмотреть происхождение с помощью другого языка, например Python:
Откройте созданную ранее записную книжку, создайте новую ячейку и введите следующий код Python:
%python from pyspark.sql.functions import rand, round df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id") df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price") dinner = spark.read.table("lineage_data.lineagedemo.dinner") price = spark.read.table("lineage_data.lineagedemo.price") dinner_price = dinner.join(price, on="recipe_id") dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
Запустите ячейку, щелкнув ячейку и нажав клавиши SHIFT+ВВОД или щелкнув
и выбрав "Выполнить ячейку".
В поле поиска
в верхней строке рабочей области Azure Databricks найдите таблицу и выберите ее. Перейдите на вкладку "Происхождение" и нажмите кнопку "Просмотреть график происхождения". Щелкните значки
, чтобы изучить линию происхождения данных, создаваемую запросами.
Щелкните стрелку, которая подключает узлы в графе происхождения, чтобы открыть панель подключения Lineage. На панели связи происхождения отображаются сведения о соединении, включая исходные и целевые таблицы, блокноты и задания.
Сбор и просмотр сведений о происхождении рабочих процессов
Данные о происхождении также фиксируются для любого рабочего процесса, который выполняет считывание или запись в Unity Catalog. Чтобы просмотреть зависимости для рабочего процесса Azure Databricks, следуйте этим шагам.
Щелкните
Новый на боковой панели и выберите Записная книжка в меню.
Введите имя записной книжки и выберите SQL в язык по умолчанию.
Нажмите кнопку Создать.
В первой ячейке записной книжки введите следующий запрос:
SELECT * FROM lineage_data.lineagedemo.menu
На верхней панели щелкните Расписание. В диалоговом окне расписания выберите Manual, выберите кластер с доступом к каталогу Unity Catalog, и нажмите Создать.
Щелкните Запустить сейчас.
В поле поиска
в верхней строке рабочей области Azure Databricks найдите таблицу и выберите ее. На вкладке нажмите Рабочие процессыи выберите вкладку Downstream. Имя задания появляется под Job Name как потребитель таблицы
menu
.
Запечатление и просмотр истории панели мониторинга
Чтобы создать панель мониторинга и просмотреть ее происхождение данных, выполните приведенные ниже действия.
Перейдите на целевую страницу Azure Databricks и откройте обозреватель каталогов, щелкнув каталог на боковой панели.
Щелкните имя каталога, щелкните lineagedemoи выберите таблицу
menu
. Вы также можете использовать поле поиска в верхней строке для поиска таблицыmenu
.Нажмите кнопку "Открыть" на панели мониторинга.
Выберите столбцы, которые нужно добавить на панель мониторинга, и щелкните Создать.
Опубликуйте панель мониторинга.
Только опубликованные панели мониторинга учитываются в родословной данных.
В поле Поиск в верхней панели найдите таблицу
lineage_data.lineagedemo.menu
и выберите её.На вкладке Lineage щелкните Панели. Панель мониторинга отображается в разделе Имя панели мониторинга в качестве потребителя таблицы меню.
Разрешения на происхождение данных
Графики происхождения используют ту же модель разрешений, что и Unity Catalog. Таблицы и другие объекты данных, зарегистрированные в хранилище метаданных каталога Unity, видны только пользователям, имеющим по крайней мере BROWSE
разрешения на эти объекты. Если у пользователя нет прав BROWSE
или SELECT
в таблице, они не могут изучить его происхождение. Графики происхождения отображают объекты каталога Unity во всех рабочих областях, подключенных к хранилищу метаданных, если у пользователя есть соответствующие разрешения на объекты.
Например, выполните следующие команды для userA
:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Когда userA
просматривает график происхождения для таблицы lineage_data.lineagedemo.menu
, они увидят таблицу menu
. Они не смогут просматривать сведения о связанных таблицах, например нижестоящей lineage_data.lineagedemo.dinner
таблице. Таблица dinner
отображается в виде узла masked
на экране для userA
, и userA
не может развернуть граф, чтобы отобразить подчиненные таблицы из тех, к которым они не имеют разрешения на доступ.
Если вы выполните следующую команду, чтобы предоставить разрешение BROWSE
на userB
, пользователь сможет просмотреть график происхождения для любой таблицы в схеме lineage_data
.
GRANT BROWSE on lineage_data to `userB@company.com`;
Аналогичным образом пользователи происхождения должны иметь определенные разрешения для просмотра объектов рабочей области, таких как записные книжки, задания и панели мониторинга. Кроме того, они могут просматривать только подробные сведения об объектах рабочей области при входе в рабочую область, в которой были созданы эти объекты. Подробная информация об объектах уровня рабочей области в других рабочих областях скрывается в графе родословной.
Дополнительные сведения об управлении доступом к защищаемым объектам в каталоге Unity см. в статье Управление привилегиями в каталоге Unity. Дополнительные сведения об управлении доступом к объектам рабочей области, таким как записные книжки, задания и панели мониторинга, см. списки управления доступом.
Удаление данных о происхождении
Предупреждение
Следующие инструкции удаляют все объекты, хранящиеся в каталоге Unity. Используйте их только при необходимости. Например, для соответствия требованиям.
Чтобы удалить данные происхождения, необходимо удалить хранилище метаданных, управляющее объектами каталога Unity. Дополнительные сведения об удалении хранилища метаданных см. в статье Удаление хранилища метаданных. Данные будут удалены в течение 90 дней.
Узнайте происхождение таблицы с помощью ассистента Databricks
Помощник по Databricks предоставляет подробные сведения о происхождении таблиц и аналитических сведений.
Чтобы получить сведения о происхождении с помощью помощника, выполните следующие действия:
- Перейдите на целевую страницу Azure Databricks и откройте обозреватель каталогов, щелкнув значок каталога
каталога на боковой панели.
- Щелкните имя каталога, затем щелкните значок помощника
в правом верхнем углу.
- В командной строке помощника введите следующее:
- /getTableLineages для просмотра вышестоящих и подчиненных зависимостей.
- /getTableInsights для доступа к аналитическим сведениям на основе метаданных, таким как действия пользователей и шаблоны запросов.
Эти запросы позволяют помощнику отвечать на вопросы, такие как "показать нижестоящие зависимости" или "кто чаще всего запрашивает эту таблицу".
Данные о происхождении запросов с использованием системных таблиц
Системные таблицы происхождения можно использовать для программного запроса данных происхождения. Подробные инструкции см. в статье Мониторинг действий учетной записи с помощью системных таблиц и Справочник системных таблиц родословной.
Если рабочая область находится в регионе, который не поддерживает системные таблицы происхождения, можно также использовать REST API Data Lineage для получения данных происхождения данных программным способом.
Получение происхождения с помощью REST API data lineage
API происхождения данных позволяет получить происхождение таблиц и столбцов. Однако если рабочая область находится в регионе, поддерживающем системные таблицы происхождения, следует использовать системные запросы таблиц вместо REST API. Системные таблицы — это лучший вариант для программного извлечения данных происхождения. Большинство регионов поддерживают системные таблицы происхождения.
Внимание
Чтобы получить доступ к REST API Databricks, необходимо пройти проверку подлинности.
Восстановление происхождения таблицы
В этом примере извлекаются данные о происхождении для таблицы dinner
.
Запрос
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'
Замените <workspace-instance>
.
В этом примере используется файл .netrc.
Ответ
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
Получение происхождения столбцов
В этом примере извлекаются данные столбцов для таблицы dinner
.
Запрос
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'
Замените <workspace-instance>
.
В этом примере используется файл .netrc.
Ответ
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}
Ограничения
Хотя линейная структура агрегируется для всех рабочих пространств, подключенных к одному хранилищу метаданных каталога Unity, сведения об объектах рабочего пространства, таких как ноутбуки и панели мониторинга, отображаются только в том рабочем пространстве, в котором они были созданы.
Поскольку линейность вычисляется в однолетнем скользящем окне, данные, собранные более одного года назад, не показываются. Например, если задание или запрос считывает данные из таблицы А и записывается в таблицу B, связь между таблицей A и таблицей B отображается только в течение одного года. Данные о происхождении можно фильтровать по временным интервалам в течение одного года.
Задания, использующие запрос
runs submit
API заданий, недоступны при отслеживании происхождения. Происхождение на уровне таблицы и столбца по-прежнему фиксируется при использовании запросаruns submit
, но ссылка на запуск не фиксируется.Каталог Unity фиксирует происхождение данных до уровня столбца настолько, насколько это возможно. Однако в некоторых случаях невозможно записать происхождение на уровне столбцов.
Происхождение столбцов поддерживается только в том случае, если источник и целевой объект ссылаются по имени таблицы (пример:
select * from <catalog>.<schema>.<table>
). Происхождение столбцов невозможно записать, если источник или цель указаны с помощью пути (например,select * from delta."s3://<bucket>/<path>"
).Если таблица или представление переименованы, цепочка связи не сохраняется для переименованной таблицы или представления.
Если схема или каталог переименованы, происхождение данных не фиксируется для таблиц и представлений в переименованном каталоге или схеме.
Если вы используете контрольные точки набора данных Spark SQL, родословная не записывается.
Каталог Unity фиксирует происхождение данных из конвейеров DLT чаще всего. Однако в некоторых случаях полное отслеживание происхождения не может быть гарантировано, например, если конвейеры используют API APPLY CHANGES или ВРЕМЕННЫЕ таблицы.
Lineage не записывает функции стека.
Глобальные временные представления не фиксируются в происхождении.
Таблицы в
system.information_schema
не фиксируются в линейности.Полный линейдж на уровне столбцов по умолчанию не отслеживается для операций
MERGE
.Вы можете включить запись происхождения для
MERGE
операций, задав для свойства Spark значениеspark.databricks.dataLineage.mergeIntoV2Enabled
true
. Включение этого флага может замедлить производительность запросов, особенно в рабочих нагрузках, включающих очень широкие таблицы.