Платформа 3V/DataManager/Маппинг показателей: различия между версиями
(→Пример) |
|||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 117: | Строка 117: | ||
В итоге, в показатель-приемник выгрузились необходимые данные | В итоге, в показатель-приемник выгрузились необходимые данные | ||
− | [[Файл:результат показателя-приемника.png| | + | [[Файл:результат показателя-приемника.png|1000px]] |
+ | |||
+ | === Пример === | ||
+ | [https://3v.3v-group.net/navigator/#/?viewId=436252 Пример показателя-приемника (полезно обратить внимание на тип данных и на наименования столбцов)] | ||
+ | |||
+ | '''Полная настройка:''' | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | { | ||
+ | "Validation": "StopIfErrorRecordsExists", | ||
+ | "Source": { | ||
+ | "discriminator": "UrlDataManagerSource", | ||
+ | "Uri": "https://3v.3v-group.net/filestorage/api/File/c0ed6016-6423-4ac4-a6ff-9554d0697aad", | ||
+ | "Credentials":{ | ||
+ | "discriminator": "PasswordAuthenticationSettingsDto", | ||
+ | "TokenRequestUrl": "https://3v.3v-group.net/auth/realms/trivium/protocol/openid-connect/token", | ||
+ | "clientId": "corp-engine", | ||
+ | "UserName": "apiTestUser", | ||
+ | "Password": "apiTestUser" | ||
+ | }, | ||
+ | "Headers": { | ||
+ | "namespace": "develop" | ||
+ | } | ||
+ | }, | ||
+ | "Destination": { | ||
+ | "discriminator": "IndicatorDataOptions", | ||
+ | "mapperOptions": [ | ||
+ | { | ||
+ | "propertyName": "root_id", | ||
+ | "filedName": "d_416103_id", | ||
+ | "dataType": "Int32", | ||
+ | "isPrimary": true, | ||
+ | "discriminator": "MapperOption" | ||
+ | }, | ||
+ | { | ||
+ | "ExpressionId": 1, | ||
+ | "filedName": "fact", | ||
+ | "fieldDataType": "Json", | ||
+ | "isPrimary": false, | ||
+ | "discriminator": "MapperOption" | ||
+ | } | ||
+ | ], | ||
+ | "Expressions": [ | ||
+ | { | ||
+ | "id": 1, | ||
+ | "expression": "[0]", | ||
+ | "Variables": { | ||
+ | "0": "geometry" | ||
+ | } | ||
+ | } | ||
+ | ], | ||
+ | "Code": "New_Indicator_1838" | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> |
Текущая версия на 09:31, 12 декабря 2022
Если приемник данных - показатель, то настройка выглядит следующим образом:
1 "Destination": {
2 "discriminator": "IndicatorDataOptions",
3 "mapperOptions": [ {}, {}],
4 "expressions": [{}],
5 "clearData": false,
6 "Code": ""
7 }
Содержание
Шаг 1. Настройка самого показателя-приемника
Для начала следует создать показатель для загрузки. Чтобы корректно сработала задача загрузки, перед созданием показателя необходимо ознакомиться с атрибутами из источника и их типами данных. Например, необходимо выгрузить геометрию для каждого наименования:
Показатель строится на основе справочнике, после его создания необходимо обратиться к конструктору показателя и обратить внимание на "columns", из данной иерархии используется название и тип данных.
- "name": "fact" - будет использоваться для загрузки геометрии
- "name": "d_416103_id" - атрибут для первичного ключа
Шаг 2. Настройка полей
Настройка полей выглядит следующим образом:
1 "mapperOptions": [
2 {
3 "propertyName": "root_id",
4 "filedName": "d_416103_id",
5 "dataType": "Int32",
6 "isPrimary": true,
7 "discriminator": "MapperOption"
8 },
9 {
10 "ExpressionId": 1,
11 "filedName": "fact",
12 "fieldDataType": "Json",
13 "isPrimary": false,
14 "discriminator": "MapperOption"
15 }
16 ],
17 "Expressions": [
18 {
19 "id": 1,
20 "expression": "[0]",
21 "Variables": {
22 "0": "geometry"
23 }
24 }
25 ]
Откуда берется:
- propertyName - название атрибута из источника
- filedName - название столбцов из показателя ("columns")
- dataType/fieldDataType - тип данных, который должен совпадать в приемнике и источнике
- isPrimary - является ли данный атрибут первичным ключом (хотя бы один из атрибутов должен содержать настройку "isPrimary": true)
- discriminator - здесь всегда необходимо ставить "MapperOption"
Типы данных, которые поддерживает DataManager
Тип | Как записать в настройке | Небольшой комментарий |
---|---|---|
Строка | String | Если в источнике приходит тип guid или длинное число, то лучше записать в приемник в атрибут с типом "String" |
Целое число (Integer) | Int32 | Int64 не поддерживается |
Вещественное число (Double) | Double | Формат записи через запятую ("370,70") |
Дата и время | DateTime | Формат записи через запятую 01.01.2000 (даже, если приходят данные в формате "2020-01-01") |
Логический тип | Boolean | - |
Json | "fieldDataType": "Json" | Данные должны приходит в таком "кавычках", если необходимо атрибуты занести в формат json, то следует использовать выражение: "expression": "[атрибут]" и не прописывать в настройках "SaveMode" |
Шаг 3. Завершение настройки
Остается добавить только верный дискриминатор (IndicatorDataOptions), Code (код показателя-приемника)
1 "Destination": {
2 "discriminator": "IndicatorDataOptions",
3 "mapperOptions": [
4 {
5 "propertyName": "root_id",
6 "filedName": "d_416103_id",
7 "dataType": "Int32",
8 "isPrimary": true,
9 "discriminator": "MapperOption"
10 },
11 {
12 "ExpressionId": 1,
13 "filedName": "fact",
14 "fieldDataType": "Json",
15 "isPrimary": false,
16 "discriminator": "MapperOption"
17 }
18 ],
19 "Expressions": [
20 {
21 "id": 1,
22 "expression": "[0]",
23 "Variables": {
24 "0": "geometry"
25 }
26 }
27 ],
28 "Code": "New_Indicator_1838"
29 }
Шаг 4. Результат работы
ОБЯЗАТЕЛЬНО НЕ ЗАБЫВАЕМ ВСТАВИТЬ В НАСТРОЙКУ SOURCE И ПРОВЕРИТЬ ВСЮ НАСТРОЙКУ НА СИНТАКСИЧЕСКИЕ ОШИБКИ
Готовую настройку можно загрузить с помощью задач загрузки данных или сваггер, затем посмотреть результат
В итоге, в показатель-приемник выгрузились необходимые данные
Пример
Пример показателя-приемника (полезно обратить внимание на тип данных и на наименования столбцов)
Полная настройка:
1 {
2 {
3 "Validation": "StopIfErrorRecordsExists",
4 "Source": {
5 "discriminator": "UrlDataManagerSource",
6 "Uri": "https://3v.3v-group.net/filestorage/api/File/c0ed6016-6423-4ac4-a6ff-9554d0697aad",
7 "Credentials":{
8 "discriminator": "PasswordAuthenticationSettingsDto",
9 "TokenRequestUrl": "https://3v.3v-group.net/auth/realms/trivium/protocol/openid-connect/token",
10 "clientId": "corp-engine",
11 "UserName": "apiTestUser",
12 "Password": "apiTestUser"
13 },
14 "Headers": {
15 "namespace": "develop"
16 }
17 },
18 "Destination": {
19 "discriminator": "IndicatorDataOptions",
20 "mapperOptions": [
21 {
22 "propertyName": "root_id",
23 "filedName": "d_416103_id",
24 "dataType": "Int32",
25 "isPrimary": true,
26 "discriminator": "MapperOption"
27 },
28 {
29 "ExpressionId": 1,
30 "filedName": "fact",
31 "fieldDataType": "Json",
32 "isPrimary": false,
33 "discriminator": "MapperOption"
34 }
35 ],
36 "Expressions": [
37 {
38 "id": 1,
39 "expression": "[0]",
40 "Variables": {
41 "0": "geometry"
42 }
43 }
44 ],
45 "Code": "New_Indicator_1838"
46 }
47 }