Сбор и просмотр происхождения данных с помощью каталога Unity
В этой статье описывается, как записывать и визуализировать происхождение данных с помощью Обозреватель каталога, системных таблиц происхождения данных и REST API.
Каталог Unity можно использовать для отслеживания происхождения данных среды выполнения в запросах, выполняемых в Azure Databricks. Происхождение поддерживается для всех языков и записывается до уровня столбца. Данные происхождения включают записные книжки, рабочие процессы и панели мониторинга, связанные с запросом. Происхождение можно визуализировать в каталоге Обозреватель практически в реальном времени и получить программным способом с помощью системных таблиц происхождения и REST API Databricks.
Происхождение агрегируется во всех рабочих областях, подключенных к хранилищу метаданных каталога Unity. Это означает, что происхождение данных, собранное в одной рабочей области, отображается в любой другой рабочей области из этого хранилища метаданных. У пользователей должны быть правильные разрешения на просмотр данных происхождения. Данные о происхождении хранятся в течение 1 года.
Сведения об отслеживании происхождения модели машинного обучения см. в разделе "Отслеживание происхождения данных модели в каталоге Unity".
Требования
Для сбора происхождения данных с использованием каталога Unity необходимо следующее:
Таблицы должны быть зарегистрированы в хранилище метаданных каталога Unity.
В запросах должны использоваться кадры данных Spark (например, функции Spark SQL, возвращающие кадры данных) или интерфейсы Databricks SQL. Примеры запросов Databricks SQL и PySpark см. здесь.
Чтобы просмотреть происхождение таблицы или представления, пользователи должны иметь по крайней мере
BROWSE
права доступа к родительскому каталогу таблицы или представления.Чтобы просмотреть сведения о происхождении записных книжек, рабочих процессов или панелей мониторинга, пользователи должны иметь разрешения на эти объекты в соответствии с параметрами управления доступом в рабочей области. См. статью о разрешениях на происхождение данных.
Чтобы просмотреть конвейер с поддержкой каталога Unity, необходимо иметь
CAN_VIEW
разрешения на конвейер.Возможно, потребуется обновить правила исходящего брандмауэра, чтобы разрешить подключение к конечной точке Концентратора событий на уровне управления Azure Databricks. Обычно это применимо, если рабочая область Azure Databricks развертывается в собственной виртуальной сети (также называемой внедрением виртуальной сети). Чтобы получить конечную точку Концентратора событий для региона рабочей области, см. раздел Хранилище метаданных", хранилище BLOB-объектов артефактов, хранилище системных таблиц, хранилище BLOB-объектов журнала и IP-адреса конечных точек Концентратора событий. Сведения о настройке определяемых пользователем маршрутов (UDR) для Azure Databricks см. в разделе Пользовательские параметры маршрутизации для Azure Databricks.
Ограничения
Потоковая передача между таблицами Delta поддерживается только в Databricks Runtime 11.3 LTS или более поздней версии.
Так как происхождение данных вычисляется в пределах годового скользящего окна, данные о происхождении, собранные более 1 года назад, не отображаются. Например, если задание или запрос считывает данные из таблицы A и записывает их в таблицу B, связь между таблицей A и таблицей B отображается только в течение 1 года.
Данные происхождения можно фильтровать по временным интервалам. При выборе параметра "Все происхождения" отображаются данные происхождения, собранные начиная с июня 2023 года.
Рабочие процессы, использующие запрос
runs submit
API заданий, недоступны при просмотре происхождения данных. Происхождение на уровне таблицы и столбца по-прежнему собирается при использовании запросаruns submit
, но ссылка на выполнение не входит в сбор.Unity Catalog регистрирует происхождение на уровне столбца, когда это возможно. Однако в некоторых случаях не удается зарегистрировать происхождение данных на уровне столбца.
Происхождение столбцов поддерживается только в том случае, если источник и целевой объект ссылаются по имени таблицы (пример:
select * from <catalog>.<schema>.<table>
). Происхождение столбцов невозможно записать, если источник или целевой объект устранен путем (пример:select * from delta."s3://<bucket>/<path>"
).Если таблица переименована, происхождение данных для нее не регистрируется.
Если вы используете контрольные точки для набора данных Spark SQL, данные о происхождении не записываются. См. раздел pyspark.sql.DataFrame.проверкауказатель в документации Apache Spark.
Каталог Unity записывает происхождение из конвейеров разностных динамических таблиц в большинстве случаев. Однако в некоторых случаях полное покрытие происхождения невозможно гарантировать, например, когда конвейеры используют API APPLY CHANGES или ВРЕМЕННЫЕ таблицы.
Примеры
Примечание.
В следующих примерах используется имя
lineage_data
каталога и имяlineagedemo
схемы. Чтобы использовать другой каталог и схему, измените имена, используемые в примерах.Для выполнения этого примера у вас должны быть привилегии
CREATE
иUSE SCHEMA
в схеме. Администратор хранилища метаданных, владелец каталога или владелец схемы могут предоставить вам эти привилегии. Например, чтобы предоставить всем пользователям группы разрешение "data_engineers" на создание таблиц в схемеlineage_data
вlineagedemo
каталоге, пользователь с одним из указанных выше привилегий или ролей может выполнять следующие запросы:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Сбор и изучение происхождения данных
Чтобы собрать данные происхождения, выполните следующие действия:
Перейдите на целевую страницу Azure Databricks, щелкните "Создать " на боковой панели и выберите "Записная книжка " в меню.
Введите имя записной книжки и для параметра Язык по умолчанию выберите 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_data.lineagedemo.dinner
и нажмите кнопку "Поиск lineage_data.lineagedemo.dinner" в Databricks.В разделе "Таблицы" щелкните таблицу
dinner
.Перейдите на вкладку "Происхождение". Откроется панель происхождения и отображает связанные таблицы (например, это
menu
таблица).Чтобы просмотреть интерактивный граф происхождения данных, нажмите Просмотреть график происхождения данных. По умолчанию в графе отображается один уровень. Щелкните значок на узле, чтобы показать больше подключений, если они доступны.
Щелкните стрелку, соединяющую узлы в графе происхождения, чтобы открыть панель Подключение происхождения. На панели Подключение происхождения отображаются сведения о подключении, включая исходные и целевые таблицы, записные книжки и рабочие процессы.
Чтобы отобразить записную книжку, связанную с таблицей
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_data.lineagedemo.price
и нажмите кнопку "Поиск lineage_data.lineagedemo.price" в Databricks.В разделе "Таблицы" щелкните таблицу
price
.Перейдите на вкладку Происхождение и нажмите Просмотреть граф происхождения. Щелкните значки для изучения происхождения данных, созданного запросами SQL и Python.
Щелкните стрелку, соединяющую узлы в графе происхождения, чтобы открыть панель Подключение происхождения. На панели Подключение происхождения отображаются сведения о подключении, включая исходные и целевые таблицы, записные книжки и рабочие процессы.
Сбор и просмотр сведений о происхождении рабочих процессов
Данные о происхождении также записываются для любого рабочего процесса, который считывает или записывает в каталог Unity. Чтобы продемонстрировать просмотр происхождения рабочих процессов Azure Databricks, выполните следующие действия:
Щелкните "Создать" на боковой панели и выберите "Записная книжка " в меню.
Введите имя записной книжки и для параметра Язык по умолчанию выберите SQL.
Нажмите кнопку Создать.
В первой ячейке записной книжки введите следующий запрос:
SELECT * FROM lineage_data.lineagedemo.menu
На верхней панели щелкните Расписание. В диалоговом окне расписания выберите "Вручную", выберите кластер с доступом к каталогу Unity и нажмите кнопку "Создать".
Щелкните Запустить сейчас.
В верхней строке рабочей области Azure Databricks введите
lineage_data.lineagedemo.menu
и щелкните "Поиск lineage_data.lineagedemo.menu" в Databricks.В разделе "Таблицы" просмотрите все таблицы, щелкните таблицу
menu
.Перейдите на вкладку Происхождение, щелкните Рабочие процессы и выберите вкладку Подчиненный. Имя задания отображается в разделе Имя задания в качестве потребителя таблицы
menu
.
Сбор и просмотр происхождения панели мониторинга
Чтобы продемонстрировать просмотр происхождения данных для панели мониторинга SQL, выполните следующие действия:
- Перейдите на целевую страницу Azure Databricks и откройте Обозреватель каталога, щелкнув каталог на боковой панели.
- Щелкните имя каталога, нажмите lineagedemo и выберите таблицу
menu
. Для поиска таблицыmenu
можно также использовать текстовое поле Поиск таблиц на верхней панели. - Щелкните Действия > Создать быструю панель мониторинга.
- Выберите столбцы для добавления на панель мониторинга и нажмите Создать.
- В верхней строке рабочей области Azure Databricks введите
lineage_data.lineagedemo.menu
и щелкните "Поиск lineage_data.lineagedemo.menu" в Databricks. - В разделе "Таблицы" просмотрите все таблицы, щелкните таблицу
menu
. - Перейдите на вкладку Происхождение и щелкните Панели мониторинга. Имя панели мониторинга отображается в разделе Имя панели мониторинга в качестве потребителя таблицы меню.
Разрешения на происхождение данных
Для графов происхождения используется та же модель разрешений, что и для каталога Unity. Если у пользователя нет BROWSE
прав или SELECT
привилегий в таблице, они не могут изучить происхождение. Кроме того, пользователи могут просматривать только записные книжки, рабочие процессы и панели мониторинга, которые у них есть разрешение на просмотр. Например, если для пользователя 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
, отличному от администратора:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
теперь можно просмотреть график происхождения для любой таблицы в схеме lineage_data
.
Дополнительные сведения об управлении доступом к защищаемым объектам в каталоге Unity см. в разделе "Управление привилегиями" в каталоге Unity. Дополнительные сведения об управлении доступом к объектам рабочей области, таким как записные книжки, рабочие процессы и панели мониторинга, см . в списках управления доступом.
Удаление данных о происхождении данных
Предупреждение
Выполнив следующие инструкции, вы удалите все объекты, хранящиеся в каталоге Unity. Используйте их только при необходимости. Например, для соответствия требованиям.
Чтобы удалить данные о происхождении данных, необходимо удалить хранилище метаданных, управляющее объектами каталога Unity. Дополнительные сведения об удалении хранилища метаданных см. в статье Удаление хранилища метаданных. Данные будут удалены в течение 90 дней.
Запрос данных происхождения с помощью системных таблиц
Системные таблицы происхождения можно использовать для программного запроса данных происхождения. Подробные инструкции см. в статье "Мониторинг использования системных таблиц и системных таблиц lineage".
Если рабочая область находится в регионе, который не поддерживает системные таблицы происхождения, можно также использовать 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.
Response
{
"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"
}
]
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по