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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 96: Строка 96:
 
{
 
{
 
   "virtualTable": {
 
   "virtualTable": {
     "dictionaryId": 12,
+
     "dictionaryId": 12,                                               //идентификатор исходного справочника
 
     "attributes": [
 
     "attributes": [
 
       {
 
       {
 
         "definition": {
 
         "definition": {
 
           "discriminator": "OwnAttributeDefinitionDto",
 
           "discriminator": "OwnAttributeDefinitionDto",
           "id": 34
+
           "id": 34                                                   //идентификатор атрибута в качестве факта показателя,  columnId=0
 
         },
 
         },
 
         "dataType": "Double"
 
         "dataType": "Double"
Строка 109: Строка 109:
 
           "innerAttribute": {
 
           "innerAttribute": {
 
             "discriminator": "OwnAttributeDefinitionDto",
 
             "discriminator": "OwnAttributeDefinitionDto",
             "id": 24
+
             "id": 24                              
 
           },
 
           },
 
           "discriminator": "TransitiveAttributeDefinitionDto",
 
           "discriminator": "TransitiveAttributeDefinitionDto",
           "id": 22
+
           "id": 22                                                  
 
         },
 
         },
 
         "dataType": "Integer"
 
         "dataType": "Integer"
Строка 204: Строка 204:
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
=== Вариант 2: без исходного справочника в качестве измерения показателя, агрегация данных  ===
 
=== Вариант 2: без исходного справочника в качестве измерения показателя, агрегация данных  ===

Версия 11:10, 25 августа 2021

Что-то про отдельный тип показателей, когда данные внутри показателя собираются из данных таблицы справочника, который так-же является измерением этого показателя (аналог сводной таблицы 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                                                    //идентификатор атрибута в качестве факта показателя,  columnId=0
 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 }