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

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

Что-то про отдельный тип показателей, когда данные внутри показателя собираются из данных таблицы справочника, который так-же является измерением этого показателя (аналог сводной таблицы excel)

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

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

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

Справочники

"Трудозатраты по задачам" (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 24 Связь с пользователями Jira Связанный со справочником "Пользователи"

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

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

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

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

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

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

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

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

  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": 1
 28         },
 29         "dataType": "Integer"
 30       },
 31       {
 32         "definition": {
 33           "discriminator": "OwnAttributeDefinitionDto",
 34           "id": 33
 35         },
 36         "dataType": "Integer"
 37       },
 38       {
 39         "definition": {
 40           "innerAttribute": {
 41             "innerAttribute": {
 42               "discriminator": "OwnAttributeDefinitionDto",
 43               "id": 25
 44             },
 45             "discriminator": "TransitiveAttributeDefinitionDto",
 46             "id": 31
 47           },
 48           "discriminator": "TransitiveAttributeDefinitionDto",
 49           "id": 29
 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
 71     },
 72     {
 73       "mappings": [
 74         {
 75           "attributeId": 1,
 76           "columnId": 3
 77         }
 78       ],
 79       "discriminator": "DataIndicatorDictionaryDto",
 80       "dictionaryId": 467
 81     },
 82     {
 83       "mappings": [
 84         {
 85           "attributeId": 40,
 86           "columnId": 1
 87         }
 88       ],
 89       "discriminator": "DataIndicatorDictionaryDto",
 90       "dictionaryId": 19
 91     },
 92     {
 93       "mappings": [
 94         {
 95           "attributeId": 20,
 96           "columnId": 4
 97         }
 98       ],
 99       "discriminator": "DataIndicatorDictionaryDto",
100       "dictionaryId": 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 }