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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 12 промежуточных версий 2 участников)
Строка 1: Строка 1:
Что-то про отдельный тип показателей, когда данные внутри показателя собираются из данных таблицы справочника, который так-же является измерением этого показателя (аналог сводной таблицы excel)
+
{{DISPLAYTITLE:Задание показателя с данными из справочников}}
 
== Описание кейса ==
 
== Описание кейса ==
необходимо настроить показатель на основании таблицы справочника "Трудозатраты" с данными, при этом в показатель необходимо вывести измерения по транзитивным атрибутам, связанные с исходным справочником
+
необходимо настроить показатель на основании таблицы справочника "Трудозатраты по задачам" (id=12), при этом в показатель необходимо вывести измерения, связанные с исходным справочником по транзитивным атрибутам.
 +
 
 
== Исходные данные ==
 
== Исходные данные ==
 
=== Справочники ===
 
=== Справочники ===
Строка 53: Строка 54:
 
| 1 || 2||Наименование|| Текстовый ||  
 
| 1 || 2||Наименование|| Текстовый ||  
 
|-
 
|-
| 2 ||24 ||Связь с пользователями Jira || Связанный со справочником "Пользователи" ||  
+
| 2 ||40 ||Связь с пользователями Jira || Связанный со справочником "Пользователи" ||  
 
|}
 
|}
 
"Проекты" (id=504)
 
"Проекты" (id=504)
Строка 62: Строка 63:
 
| 1 || 2||Наименование|| Текстовый ||  
 
| 1 || 2||Наименование|| Текстовый ||  
 
|-
 
|-
| 2 ||24 ||Связь с пользователями Jira || Связанный со справочником "Пользователи" ||  
+
| 2 ||20 ||Производственный проект в Jira || Связанный со справочником "Проекты в Jira" ||  
 
|}
 
|}
 
"Календарь" (id=467)
 
"Календарь" (id=467)
Строка 75: Строка 76:
  
 
== Настройка показателя ==
 
== Настройка показателя ==
На данный момент всю настройку возможно произвести только через json, до реализации интерфейсов
+
На данный момент всю настройку возможно произвести только через json показателя, до реализации интерфейсов.
 +
Ниже приведены два варианта настройки, где
 +
{| class="wikitable"
 +
|-
 +
! Поле JSON !! Описание
 +
|-
 +
| virtualTable|| задается идентификатор исходного справочника и его атрибуты по которым будет настроена связь измерений показателя
 +
|-
 +
| factColumnId || задать порядок атрибута - факта из описания атрибутов блока virtualTable
 +
|-
 +
| aggregationType|| задать при необходимости тип агрегации или оставить NONE
 +
|-
 +
| indicatorDictionariesexpressions || задать маппинг атрибутов исходного справочника с измерениями
 +
|-
 +
| mappings.attributeId || на момент настройки в релизе 0.36.0, указанные значения в данном поле не влияют на результат настройки.
 +
|}
  
 
=== Вариант 1: исходный справочник с данными является измерением показателя  ===
 
=== Вариант 1: исходный справочник с данными является измерением показателя  ===
Строка 82: Строка 98:
 
{
 
{
 
   "virtualTable": {
 
   "virtualTable": {
     "dictionaryId": 12,
+
     "dictionaryId": 12,                                               //идентификатор исходного справочника
 
     "attributes": [
 
     "attributes": [
 
       {
 
       {
 
         "definition": {
 
         "definition": {
 
           "discriminator": "OwnAttributeDefinitionDto",
 
           "discriminator": "OwnAttributeDefinitionDto",
           "id": 34
+
           "id": 34                                                   //идентификатор атрибута в качестве факта показателя,  columnId=0
 
         },
 
         },
 
         "dataType": "Double"
 
         "dataType": "Double"
Строка 95: Строка 111:
 
           "innerAttribute": {
 
           "innerAttribute": {
 
             "discriminator": "OwnAttributeDefinitionDto",
 
             "discriminator": "OwnAttributeDefinitionDto",
             "id": 24
+
             "id": 24                                                 //идентификатор атрибута "ФИО сотрудника" в справочнике "Пользователи" (id=9)
 
           },
 
           },
 
           "discriminator": "TransitiveAttributeDefinitionDto",
 
           "discriminator": "TransitiveAttributeDefinitionDto",
           "id": 22
+
           "id": 22                                                 //идентификатор транзитивного атрибута author в справочнике "Трудозатраты по задачам" (id=12),  columnId=1
 
         },
 
         },
 
         "dataType": "Integer"
 
         "dataType": "Integer"
Строка 105: Строка 121:
 
         "definition": {
 
         "definition": {
 
           "discriminator": "OwnAttributeDefinitionDto",
 
           "discriminator": "OwnAttributeDefinitionDto",
           "id": 1
+
           "id": 1                                                   //идентификатор справочника "Трудозатраты по задачам" (id=12) ,  columnId=2
 
         },
 
         },
 
         "dataType": "Integer"
 
         "dataType": "Integer"
Строка 112: Строка 128:
 
         "definition": {
 
         "definition": {
 
           "discriminator": "OwnAttributeDefinitionDto",
 
           "discriminator": "OwnAttributeDefinitionDto",
           "id": 33
+
           "id": 33                                                 //идентификатор атрибута startDateId в справочнике "Трудозатраты по задачам" (id=12) ,  columnId=3 
 
         },
 
         },
 
         "dataType": "Integer"
 
         "dataType": "Integer"
Строка 121: Строка 137:
 
             "innerAttribute": {
 
             "innerAttribute": {
 
               "discriminator": "OwnAttributeDefinitionDto",
 
               "discriminator": "OwnAttributeDefinitionDto",
               "id": 25
+
               "id": 25                                               //идентификатор атрибута "Связь с проектами" в справочнике "Проекты из Jira" (id=10)
 
             },
 
             },
 
             "discriminator": "TransitiveAttributeDefinitionDto",
 
             "discriminator": "TransitiveAttributeDefinitionDto",
             "id": 31
+
             "id": 31                                               //идентификатор транзитивного атрибута project в справочнике "Задачи" (id=11)
 
           },
 
           },
 
           "discriminator": "TransitiveAttributeDefinitionDto",
 
           "discriminator": "TransitiveAttributeDefinitionDto",
           "id": 29
+
           "id": 29                                                 //идентификатор транзитивного атрибута issue в справочнике "Трудозатраты по задачам" (id=12) ,  columnId=4
         },
+
         },  
 
         "dataType": "Integer"
 
         "dataType": "Integer"
 
       }
 
       }
Строка 148: Строка 164:
 
       ],
 
       ],
 
       "discriminator": "DataIndicatorDictionaryDto",
 
       "discriminator": "DataIndicatorDictionaryDto",
       "dictionaryId": 12
+
       "dictionaryId": 12                                         // справочник "Трудозатраты по задачам" (id=12)
 
     },
 
     },
 
     {
 
     {
Строка 158: Строка 174:
 
       ],
 
       ],
 
       "discriminator": "DataIndicatorDictionaryDto",
 
       "discriminator": "DataIndicatorDictionaryDto",
       "dictionaryId": 467
+
       "dictionaryId": 467                                       // справочник "Календарь" (id=467)
 
     },
 
     },
 
     {
 
     {
 
       "mappings": [
 
       "mappings": [
 
         {
 
         {
           "attributeId": 40,
+
           "attributeId": 40,                                     // атрибут "Связь с пользователями Jira" в справочнике "Сотрудники" (id=19)
 
           "columnId": 1
 
           "columnId": 1
 
         }
 
         }
 
       ],
 
       ],
 
       "discriminator": "DataIndicatorDictionaryDto",
 
       "discriminator": "DataIndicatorDictionaryDto",
       "dictionaryId": 19
+
       "dictionaryId": 19                                       // справочник "Сотрудники" (id=19)
 
     },
 
     },
 
     {
 
     {
 
       "mappings": [
 
       "mappings": [
 
         {
 
         {
           "attributeId": 20,
+
           "attributeId": 20,                                   // атрибут "Производственный проект в Jira"  в справочнике "Проекты" (id=504)
 
           "columnId": 4
 
           "columnId": 4
 
         }
 
         }
 
       ],
 
       ],
 
       "discriminator": "DataIndicatorDictionaryDto",
 
       "discriminator": "DataIndicatorDictionaryDto",
       "dictionaryId": 504
+
       "dictionaryId": 504                                     // справочник "Проекты" (id=504)
 
     }
 
     }
 
   ],
 
   ],
Строка 190: Строка 206:
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
=== Вариант 2: без исходного справочника в качестве измерения показателя, агрегация данных  ===
 
=== Вариант 2: без исходного справочника в качестве измерения показателя, агрегация данных  ===

Текущая версия на 07:36, 14 сентября 2021

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

необходимо настроить показатель на основании таблицы справочника "Трудозатраты по задачам" (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 }