Платформа 3V/DataManager/Маппинг показателей: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 5 промежуточных версий этого же участника)
Строка 81: Строка 81:
 
                 "discriminator": "IndicatorDataOptions",
 
                 "discriminator": "IndicatorDataOptions",
 
                 "mapperOptions": [
 
                 "mapperOptions": [
  {
+
                  {
    "propertyName": "name",
+
                    "propertyName": "root_id",
    "filedName": "NAME",
+
                    "filedName": "d_416103_id",
    "dataType": "String",
+
                    "dataType": "Int32",
    "isPrimary": false,
+
                    "isPrimary": true,
    "discriminator": "MapperOption"
+
                    "discriminator": "MapperOption"
  },
+
                  },
  {
+
                  {
    "propertyName": "root_id",
+
                    "ExpressionId": 1,
    "filedName": "root_id",
+
                    "filedName": "fact",
    "dataType": "Int32",
+
                    "fieldDataType": "Json",
    "isPrimary": true,
+
                    "isPrimary": false,
    "discriminator": "MapperOption"
+
                    "discriminator": "MapperOption"
  },
+
                  }          
  {
+
                ],
    "propertyName": "start_date",
+
  "Expressions": [
    "filedName": "start_date",
+
                {
    "dataType": "DateTime",
+
                  "id": 1,
    "isPrimary": false,
+
                  "expression": "[0]",
    "discriminator": "MapperOption"
+
                  "Variables": {
  }
+
                                "0": "geometry"
  ],
+
                                }
 +
                  }
 +
                ],
 
   "Code": "New_Indicator_1838"
 
   "Code": "New_Indicator_1838"
 
  }
 
  }
 +
</syntaxhighlight>
 +
=== Шаг 4. Результат работы ===
 +
'''ОБЯЗАТЕЛЬНО НЕ ЗАБЫВАЕМ ВСТАВИТЬ В НАСТРОЙКУ SOURCE И ПРОВЕРИТЬ ВСЮ НАСТРОЙКУ НА СИНТАКСИЧЕСКИЕ ОШИБКИ'''
 +
 +
Готовую настройку можно загрузить с помощью задач загрузки данных или сваггер, затем посмотреть результат
 +
 +
[[Файл:результат для показателя.png|1000px]]
 +
 +
В итоге, в показатель-приемник выгрузились необходимые данные
 +
 +
[[Файл:результат показателя-приемника.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>
 
</syntaxhighlight>

Текущая версия на 09:31, 12 декабря 2022

Если приемник данных - показатель, то настройка выглядит следующим образом:

1 "Destination": {
2                  "discriminator": "IndicatorDataOptions",
3                  "mapperOptions": [ {}, {}],
4                  "expressions": [{}],
5                  "clearData": false,
6                  "Code": ""
7                }

Шаг 1. Настройка самого показателя-приемника

Для начала следует создать показатель для загрузки. Чтобы корректно сработала задача загрузки, перед созданием показателя необходимо ознакомиться с атрибутами из источника и их типами данных. Например, необходимо выгрузить геометрию для каждого наименования:

показатель-приемник.png

Показатель строится на основе справочнике, после его создания необходимо обратиться к конструктору показателя и обратить внимание на "columns", из данной иерархии используется название и тип данных.

конструктор показателя.png

  • "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 И ПРОВЕРИТЬ ВСЮ НАСТРОЙКУ НА СИНТАКСИЧЕСКИЕ ОШИБКИ

Готовую настройку можно загрузить с помощью задач загрузки данных или сваггер, затем посмотреть результат

результат для показателя.png

В итоге, в показатель-приемник выгрузились необходимые данные

результат показателя-приемника.png

Пример

Пример показателя-приемника (полезно обратить внимание на тип данных и на наименования столбцов)

Полная настройка:

 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 }