Включение профилирования данных¶
Краткое описание процесса¶
Настройка отображения профилирования физического слоя в Юниверс 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
.
Для формирования Rest-запроса необходимо знать структуру проектов и профилей в стороннем профилировщике. Отправьте 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": []
}
]
}
Просмотр профилирования¶
Результаты профилирования видны в карточках типов активов только для физического слоя:
Подробные результаты профилирования отображаются в карточке типа актива, во вкладке "Профилирование".
Краткие результаты профилирования отображаются в карточке типа актива во вкладке "Связи" (для связанных типов активов, имеющих профилирование).