Включение профилирования данных¶
Краткое описание процесса¶
Настройка отображения профилирования физического слоя в Юниверс DG состоит из нескольких шагов.
Подготавливается фоновая операция, получающая списки проектов (projects) и профилей (profiles) от профилировщика. Профилировщик находится там же, откуда планируется получать данные.
Фоновая операция запускается по указанному расписанию, и получает списки проектов и профилей.
Если данные для профилирования не загружены, то данные загружаются через раздел Информационные системы.
Если требуемой информационной системы не было создано, то она создается и настраивается.
В свойствах системы заполняется список профилей (Свойства > поле Профилирование).
Список профилей должен быть получен от фоновой операции на шаге 2.
Если данные для профилирования были загружены ранее, то в свойствах информационной системы заполняется список профилей (Свойства > поле Профилирование).
Отправка REST-запроса на получение и сохранение результатов профилирования данных.
Запрос отправляется к стороннему профилировщику.
В запросе используются данные проектов и профилей, полученные от фоновой операции.
Результаты профилирования становятся доступными для просмотра. Профилирование возможно только для активов с типом "Колонка", которые отмечены как часть физического слоя (т.е. при загрузке из краулера / сканера получили теги layer:physical и category:attribute).
Краткие результаты профилирования отображаются в карточке типа актива, во вкладке Связи (для связанных типов активов, имеющих профилирование).
Подробные результаты профилирования отображаются в карточке типа актива, во вкладке Профилирование.
Инструкция по настройке¶
Параметры для фоновой операции¶
Если Юниверс DG установлена с помощью Docker, то настройте параметры через файл .env
. Если система установлена из дистрибутива вручную, то конфигурируйте напрямую файл backend.properties
.
Включите операцию, установите расписание запуска и укажите адрес внешнего профилировщика.
Параметры для .env:
DG_DIS_UPDATE_PROFILES_JOB_DISABLED (логический): true. Определяет, выключена ли фоновая операция по обновлению профилей и проектов.
DG_DIS_UPDATE_PROFILES_CRONEX (строковый): 0 0 0/1 * * ?. CRON-выражение, устанавливает расписание, по которому происходит запуск фоновой операции.
DG_DIS_UPDATE_PROFILES_URL (строковый): http://localhost/list/profiles. URL внешнего Rest-сервиса, который предоставляет данные по профилям.
DG_DIS_UPDATE_PROJECTS_URL (строковый): http://localhost/list/projects. URL внешнего Rest-сервиса, который предоставляет данные по проектам.
Параметры для backend.properties:
com.universe.dg.dis.integration.job.update.profiles.disabled (логический): true. Определяет, выключена ли фоновая операция по обновлению профилей и проектов.
com.universe.dg.dis.integration.job.update.profiles.cronex (строковый): 0 0 0/1 * * ?. CRON-выражение, устанавливает расписание, по которому происходит запуск фоновой операции.
com.universe.dg.dis.integration.job.update.profiles.url (строковый): http://localhost/list/profiles. URL внешнего Rest-сервиса, который предоставляет данные по профилям.
com.universe.dg.dis.integration.job.update.projects.url (строковый): http://localhost/list/projects. URL внешнего Rest-сервиса, который предоставляет данные по проектам.
Получение проектов и профилей от фоновой операции¶
Фоновая операция будет запускаться по заданному расписанию. После каждого запуска списки проектов и профилей будут сохраняться в Юниверс DG (старые будут обновляться).
После сохранения списки проектов и профилей становятся доступными для выбора на страницах информационных систем в поле Профилирование.
Эта же информация предназначена для создания запроса к стороннему профилировщику на сохранение результата профилирования.
Операция отправляет GET-запросы на получение проектов на URL сom.universe.dg.dis.integration.job.update.projects.url и на получение профилей на URL com.universe.dg.dis.integration.job.update.profiles.url. Посмотреть ответ на запросы в виде дерева можно через GET-запрос /v1/dg/dis/integration/profiling/profiles-tree.
Пример ответа на запрос получения проектов:
{
"get_list_projectss": {
"get_list_projects": {
"Projects": [{
"Type_project": "Project",
"Name": "IDQ_RULE_1",
"Id": "project_id_1",
"Parent_id": ""
}, {
"Type_project": "Project",
"Name": "IDQ_RULE_2",
"Id": "project_id_2",
"Parent_id": ""
}, {
"Type_project": "Folder",
"Name": "IDQ_TEST",
"Id": "project_id_3",
"Parent_id": "project_id_2"
}
]
}
}
}
Пример ответа на запрос получения профилей:
{
"get_list_profiless": {
"get_list_profiles": {
"Profiles": [{
"Project_id": "project_id_1",
"Name": "Profile_Clients",
"ID_Profile": "123",
"Type_profiles": "Profile",
"URL": "http://link-to-profile-clients.com"
}, {
"Project_id": "project_id_3",
"Name": "Profile",
"ID_Profile": "124",
"Type_profiles": "Enterprise",
"URL": "http://link-to-profile.com"
}
]
}
}
}
Загрузка данных / обновление дерева профилирования¶
Если данные от имени требуемой информационной системы загружены ранее:
Перейдите в раздел Информационные системы.
Выберите требуемую информационную систему.
В поле Профилирование после работы фоновой операции появится (или обновится) дерево профилей.
Выберите один или несколько профилей (Рисунок 1).
Нажмите кнопку «Сохранить» в правом верхнем углу экрана. Запускать сканер не требуется.
В результате настройки профилирования будут сохранены и будут учитываться при отправке rest-запроса к стороннему профилировщику.
Если данные еще не загружались:
Перейдите в раздел Информационные системы.
Выберите требуемую информационную систему или создайте новую.
Убедитесь, что заполнены основные параметры системы и настройки сканирования.
В поле Профилирование после работы фоновой операции появится (или обновится) дерево профилей.
Выберите один или несколько профилей (Рисунок 1).
После завершения всех настроек нажмите кнопку «Сохранить» в правом верхнем углу экрана.
Перейдите в закладку Запуски и запустите сканер.
Дождитесь завершения работы сканера.
В результате завершения любого из сценариев в Юниверс DG будут сохранены данные от имени определенной информационной системы. Этим данным будут соответствовать профили стороннего профилировщика.
Рисунок 1 – Дерево профилей
Запрос Сохранение результатов профилирования данных¶
Чтобы обновить данные профилирования в карточках типов активов нужно отправить к стороннему профилировщику специальный REST-запрос POST /v1/dg/dis/integration/profiling/save.
Для формирования рест-запроса необходимо знать структуру проектов и профилей в стороннем профилировщике. Отправьте GET-запрос /v1/dg/dis/integration/profiling/profiles-tree. В качестве ответа придет информация о профилях в виде дерева (как в разделе Информационные системы > Свойства > поле Профилирование).
Рекомендации по заполнению POST /v1/dg/dis/integration/profiling/save.
В
informationSystem
указывается информационная система, от имени которой загружены данные. Результат профилирования данных сохранится только если информационная система с заданным именем существует.Ключи
profileId
иprofileChildId
заполняются совместно, с использованием данных о структуру проектов и профилей. Два возможных варианта заполнения ключей:Информационной системе назначен профиль типа Enterprise (например, "profileId": "enterprise_profile_id_1"). Тогда при сохранении результата профилирования для этого профиля под ключом "profileId" указывается ID этого профиля (т.е. "profileId": "enterprise_profile_id_1"), а под ключом "profileChildId" указывается ID одного из дочерних профилей, который не принадлежит дереву профилей (например, "profileChildId": "child_profile_id_2").
Информационной системе назначен профиль типа Profile (например, "profileId": "profile_id_1"). Тогда при сохранении результата профилирования для этого профиля под ключом "profileId" указывается ID фиктивного родителя этого профиля (например, "profileId": "parent_profile_id_2"), который не принадлежит дереву профилей, а под ключом "profileChildId" указывается ID самого профиля (т.е. "profileChildId": "profile_id_1").
В Юниверс DG отображается только профилирование от последнего запроса сохранения результатов. Последняя дата выполнения профилирования считается двумя способами:
Если профиль типа Enterprise, тогда считается минимальная дата по всем последним результатам профилирования для данной ИС и дочерних профилей ("profileId" = ID этого профиля), т.е. учитывается
executionDate
+profileId
.Если профиль типа Profile, тогда считается максимальная дата по всем результатам профилирования для данной ИС и "profileChildId" = ID этого профиля, т.е. учитывается
executionDate
+profileChildId
.
Путь к данным в Юниверс DG указывается в ключе
path
, но без указания информационной системы. Например, в интерфейсе, в столбце "Путь до актива" путь profiler > com_unidata_mdm_workflow_core > act_hi_caseactinst. В ключеpath
путь будет выглядеть как "com_unidata_mdm_workflow_core/act_hi_caseactinst".Если запрос успешен и результаты профилирования данных сохранены, то возвращается пустой ответ со статусом 200.
Пример запроса POST /v1/dg/dis/integration/profiling/save
{
"informationSystem": "local_test_DB_IS",
"statisticsProfiles": [
{
"profileId": "sample_parent_profile_1",
"profileChildId": "profile_1",
"executionDate": "2023-07-23T00:00:00.000Z",
"executionId": 2,
"columnCount": 11,
"rowsCount": 41,
"columns": [
{
"name": "counter",
"path": "public/test_table/counter",
"generalInfo": {
"minValue": "2",
"maxValue": "20",
"minLength": 12,
"maxLength": 19,
"distinctValue": 23,
"distinctPercent": 56.1,
"nullValue": 0,
"nullPercent": 0,
"noDistinctValue": 18,
"noDistinctPercent": 43.9,
"average": 5.2,
"sum": 101.5,
"standardDeviation": 2.2,
"documentedDataType": "String(19)"
},
"patternInfo": [
{
"pattern": "9",
"frequency": 41,
"percent": 100
}
],
"valueInfo": [
{
"value": "20",
"frequencyValue": 30,
"percentValue": 73.17
},
{
"value": "2",
"frequencyValue": 3,
"percentValue": 7.32
},
{
"value": "23",
"frequencyValue": 8,
"percentValue": 19.51
}
],
"dataTypeInfo": [
{
"dataType": "number(12)",
"frequencyDataType": 20,
"percentDataType": 52
},
{
"dataType": "number(19)",
"frequencyDataType": 21,
"percentDataType": 48
}
]
}
]
}
]
}
Пример ответа на запрос получения информационных систем с назначенными профилями (ответа на GET /v1/dg/dis/integration/profiling/information-systems)
{
"details": {
"info": [],
"warning": [],
"error": []
},
"informationSystems": [
{
"name": "test_db_info_system",
"profiles": [
{
"profileId": "profile_1",
"lastExecutionDate": "2023-07-21T03:00:00+03:00"
},
{
"profileId": "profile_2",
"lastExecutionDate": "2023-07-23T03:00:00+03:00"
}
]
},
{
"name": "IS1",
"profiles": [
{
"profileId": "profile_1",
"lastExecutionDate": "2023-09-05T12:50:00+03:00"
},
{
"profileId": "profile_2",
"lastExecutionDate": "2023-09-05T08:50:00+03:00"
}
]
},
{
"name": "new_info_system",
"profiles": []
}
]
}
Просмотр профилирования¶
Результаты профилирования видны в карточках типов активов только для физического слоя.
Подробные результаты профилирования отображаются в карточке типа актива, во вкладке Профилирование.
Краткие результаты профилирования отображаются в карточке типа актива, во вкладке Связи (для связанных типов активов, имеющих профилирование).