Платформа 3V/Показатель/Показатель на справочнике

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Описание кейса

необходимо настроить показатель на основании таблицы справочника "Трудозатраты по задачам" (id=12), при этом в показатель необходимо вывести измерения, связанные с исходным справочником по транзитивным атрибутам.

Исходные данные

Справочники

"Трудозатраты по задачам" (id=12)

Идентификатор Наименование атрибута Тип Назначение
1 2 Наименование трудозатраты Текстовый
2 22 author Связанный со справочником "Пользователи"
3 29 issue Связанный со справочником "Задачи"
4 33 startDateId Числовой Идентификатор календаря уровня Месяц, для связи с измерением Календарь
5 34 timeSpentInHours Дробный Факт в показателе

"Пользователи" (id=9)

Идентификатор Наименование атрибута Тип Назначение
1 2 Наименование Текстовый
2 24 ФИО сотрудника Связанный со справочником "Сотрудники"

"Задачи" (id=11)

Идентификатор Наименование атрибута Тип Назначение
1 2 Наименование Текстовый
2 31 project Связанный со справочником "Проекты из Jira"

"Проекты из Jira" (id=10)

Идентификатор Наименование атрибута Тип Назначение
1 2 Наименование Текстовый
2 25 Связь с проектами Связанный со справочником "Проекты"

"Сотрудники" (id=19)

Идентификатор Наименование атрибута Тип Назначение
1 2 Наименование Текстовый
2 40 Связь с пользователями Jira Связанный со справочником "Пользователи"

"Проекты" (id=504)

Идентификатор Наименование атрибута Тип Назначение
1 2 Наименование Текстовый
2 20 Производственный проект в Jira Связанный со справочником "Проекты в Jira"

"Календарь" (id=467)

Идентификатор Наименование атрибута Тип Назначение
1 1 Идентификатор Числовой
2 24 Наименование Текстовый

Настройка показателя

На данный момент всю настройку возможно произвести только через json показателя, до реализации интерфейсов. Ниже приведены два варианта настройки, где

Поле JSON Описание
virtualTable задается идентификатор исходного справочника и его атрибуты по которым будет настроена связь измерений показателя
factColumnId задать порядок атрибута - факта из описания атрибутов блока virtualTable
aggregationType задать при необходимости тип агрегации или оставить NONE
indicatorDictionariesexpressions задать маппинг атрибутов исходного справочника с измерениями
mappings.attributeId на момент настройки в релизе 0.36.0, указанные значения в данном поле не влияют на результат настройки.

Вариант 1: исходный справочник с данными является измерением показателя

  1  
  2 {
  3   "virtualTable": {
  4     "dictionaryId": 12,                                                //идентификатор исходного справочника
  5     "attributes": [
  6       {
  7         "definition": {
  8           "discriminator": "OwnAttributeDefinitionDto",
  9           "id": 34                                                    //идентификатор атрибута в качестве факта показателя,  columnId=0
 10         },
 11         "dataType": "Double"
 12       },
 13       {
 14         "definition": {
 15           "innerAttribute": {
 16             "discriminator": "OwnAttributeDefinitionDto",
 17             "id": 24                                                 //идентификатор атрибута "ФИО сотрудника" в справочнике "Пользователи" (id=9)
 18           },
 19           "discriminator": "TransitiveAttributeDefinitionDto",
 20           "id": 22                                                  //идентификатор транзитивного атрибута author в справочнике "Трудозатраты по задачам" (id=12),  columnId=1
 21         },
 22         "dataType": "Integer"
 23       },
 24       {
 25         "definition": {
 26           "discriminator": "OwnAttributeDefinitionDto",
 27           "id": 1                                                   //идентификатор справочника "Трудозатраты по задачам" (id=12) ,  columnId=2
 28         },
 29         "dataType": "Integer"
 30       },
 31       {
 32         "definition": {
 33           "discriminator": "OwnAttributeDefinitionDto",
 34           "id": 33                                                  //идентификатор атрибута startDateId в справочнике "Трудозатраты по задачам" (id=12) ,  columnId=3   
 35         },
 36         "dataType": "Integer"
 37       },
 38       {
 39         "definition": {
 40           "innerAttribute": {
 41             "innerAttribute": {
 42               "discriminator": "OwnAttributeDefinitionDto",
 43               "id": 25                                               //идентификатор атрибута "Связь с проектами" в справочнике "Проекты из Jira" (id=10)
 44             },
 45             "discriminator": "TransitiveAttributeDefinitionDto",
 46             "id": 31                                                //идентификатор транзитивного атрибута project в справочнике "Задачи" (id=11) 
 47           },
 48           "discriminator": "TransitiveAttributeDefinitionDto",
 49           "id": 29                                                 //идентификатор транзитивного атрибута issue в справочнике "Трудозатраты по задачам" (id=12) ,  columnId=4
 50         }, 
 51         "dataType": "Integer"
 52       }
 53     ]
 54   },
 55   "factColumnId": 0,
 56   "aggregationType": "None",
 57   "discriminator": "DictionaryIndicatorDto",
 58   "isReadonly": false,
 59   "isCached": false,
 60   "isDataSourceExternal": false,
 61   "indicatorDictionaries": [
 62     {
 63       "mappings": [
 64         {
 65           "attributeId": 1,
 66           "columnId": 2
 67         }
 68       ],
 69       "discriminator": "DataIndicatorDictionaryDto",
 70       "dictionaryId": 12                                          // справочник "Трудозатраты по задачам" (id=12)
 71     },
 72     {
 73       "mappings": [
 74         {
 75           "attributeId": 1,
 76           "columnId": 3
 77         }
 78       ],
 79       "discriminator": "DataIndicatorDictionaryDto",
 80       "dictionaryId": 467                                        // справочник "Календарь" (id=467)
 81     },
 82     {
 83       "mappings": [
 84         {
 85           "attributeId": 40,                                     // атрибут "Связь с пользователями Jira" в справочнике "Сотрудники" (id=19)
 86           "columnId": 1
 87         }
 88       ],
 89       "discriminator": "DataIndicatorDictionaryDto",
 90       "dictionaryId": 19                                        // справочник "Сотрудники" (id=19)
 91     },
 92     {
 93       "mappings": [
 94         {
 95           "attributeId": 20,                                    // атрибут "Производственный проект в Jira"  в справочнике "Проекты" (id=504)
 96           "columnId": 4
 97         }
 98       ],
 99       "discriminator": "DataIndicatorDictionaryDto",
100       "dictionaryId": 504                                      // справочник "Проекты" (id=504)
101     }
102   ],
103   "factOptions": [],
104   "isAccessRightsEnabled": false,
105   "code": "Ind_Tab_Issue_Work_Logs",
106   "id": 887,
107   "name": "Показатель на справочнике Трудозатрат"
108 }

Вариант 2: без исходного справочника в качестве измерения показателя, агрегация данных

 1  
 2 {
 3   "virtualTable": {
 4     "dictionaryId": 12,
 5     "attributes": [
 6       {
 7         "definition": {
 8           "discriminator": "OwnAttributeDefinitionDto",
 9           "id": 34
10         },
11         "dataType": "Double"
12       },
13       {
14         "definition": {
15           "innerAttribute": {
16             "discriminator": "OwnAttributeDefinitionDto",
17             "id": 24
18           },
19           "discriminator": "TransitiveAttributeDefinitionDto",
20           "id": 22
21         },
22         "dataType": "Integer"
23       },
24       {
25         "definition": {
26           "discriminator": "OwnAttributeDefinitionDto",
27           "id": 33
28         },
29         "dataType": "Integer"
30       },
31       {
32         "definition": {
33           "innerAttribute": {
34             "innerAttribute": {
35               "discriminator": "OwnAttributeDefinitionDto",
36               "id": 25
37             },
38             "discriminator": "TransitiveAttributeDefinitionDto",
39             "id": 31
40           },
41           "discriminator": "TransitiveAttributeDefinitionDto",
42           "id": 29
43         },
44         "dataType": "Integer"
45       }
46     ]
47   },
48   "factColumnId": 0,
49   "aggregationType": "Sum",
50   "discriminator": "DictionaryIndicatorDto",
51   "isReadonly": false,
52   "isCached": false,
53   "isDataSourceExternal": false,
54   "indicatorDictionaries": [
55     {
56       "mappings": [
57         {
58           "attributeId": 1,
59           "columnId": 2
60         }
61       ],
62       "discriminator": "DataIndicatorDictionaryDto",
63       "dictionaryId": 467
64     },
65     {
66       "mappings": [
67         {
68           "attributeId": 40,
69           "columnId": 1
70         }
71       ],
72       "discriminator": "DataIndicatorDictionaryDto",
73       "dictionaryId": 19
74     },
75     {
76       "mappings": [
77         {
78           "attributeId": 20,
79           "columnId": 3
80         }
81       ],
82       "discriminator": "DataIndicatorDictionaryDto",
83       "dictionaryId": 504
84     }
85   ],
86   "factOptions": [],
87   "isAccessRightsEnabled": false,
88   "code": "Ind_Tab_Issue_Work_Logs_sum",
89   "id": 889,
90   "name": "Показатель на справочнике Трудозатрат (сумма по факту)"
91 }