Платформа 3V/Отчет/2. Настроить столбцы/2.3. Настроить виртуальный показатель: различия между версиями
м (A.saydakova переименовал страницу Содержание/Отчет/Расчетный столбец по атрибуту справочника в Платформа 3V/Отчет/Расчетный столбец по атрибуту справочника поверх перенаправления) |
|||
(не показано 11 промежуточных версий 3 участников) | |||
Строка 2: | Строка 2: | ||
== Описание == | == Описание == | ||
− | + | В отчете есть возможность добавить виртуальный показатель - расчетный столбец, для которого настраивается тип данных, расчет агрегации по столбцам/строкам таблицы, расчет формулы с использованием функций, доступных в платформе. Формулы в виртуальном показателе рассчитываются в момент построения отчета после загрузки данных, но агрегация выполняется после расчета формул в виртуальном показателе. | |
− | + | Добавить виртуальный показатель можно:<br> | |
− | + | 1. Через конструктор отчета:<br> | |
− | + | [[Файл:Виртуальный показатель.png|мини|слева]] | |
− | + | ||
− | + | <br><br><br><br><br><br><br><br><br><br> | |
+ | |||
+ | 2. Прописать конструкцию в json отчета как элемент коллекции "topHeaderItems": [].<br> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON виртуального показателя</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
{ | { | ||
− | + | "dataType": "Double", | |
− | + | "isEditable": false, | |
− | + | "leftHeaderDictionaryIds": [], | |
− | + | "name": "Виртуальный показатель", | |
− | + | "indicatorId": -54157, | |
− | + | "isVisible": true, | |
− | + | "dictionaries": [], | |
− | + | "formulas": [], | |
− | + | "aggregations": [ | |
− | + | { | |
+ | "type": "None", | ||
+ | "destination": "Rows", | ||
+ | "dictionaryFilterOptions": [] | ||
+ | }, | ||
+ | { | ||
+ | "type": "None", | ||
+ | "destination": "Columns", | ||
+ | "dictionaryFilterOptions": [] | ||
+ | } | ||
+ | ], | ||
+ | "useFullLeftHeaderHierarchy": false, | ||
+ | "recalcAggregationsOnAutoFilter": false, | ||
+ | "transformAggregationType": "None", | ||
+ | "discriminator": "VirtualIndicatorOptionsDto", | ||
+ | "columnOptions": { | ||
+ | "width": null, | ||
+ | "format": null, | ||
+ | "dataControlOptions": { | ||
+ | "format": null, | ||
+ | "mask": null, | ||
+ | "min": null, | ||
+ | "max": null, | ||
+ | "component": null | ||
+ | }, | ||
+ | "isReadOnly": null, | ||
+ | "displayDuplicatedValues": null, | ||
+ | "duplicateValueOptions": "Undefined", | ||
+ | "allowChangeColumnValue": null, | ||
+ | "singleValueColumn": null, | ||
+ | "imageType": "None" | ||
+ | } | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | </div></div> | |
− | == Пример == | + | == Настройка формулы виртуального показателя == |
+ | Для виртуального показателя можно настроить следующие варианты расчета данных: | ||
+ | * Настройка агрегации по столбцам и по строкам таблицы | ||
+ | Агрегацию можно настроить через конструктор отчета, выбрав функцию агрегации по строкам/столбцам: | ||
+ | [[Файл:Виртуальный показатель агрегация.png|мини|слева]]<br><br><br><br><br><br><br><br><br><br> | ||
+ | Либо можно настроить через json-редактор в свойстве aggregations виртуального показателя, указав название необходимой функции агрегации: | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON агрегации в виртуальном показателе</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "dataType": "Double", | ||
+ | "isEditable": false, | ||
+ | "leftHeaderDictionaryIds": [], | ||
+ | "name": "Виртуальный показатель", | ||
+ | "indicatorId": -54157, | ||
+ | "isVisible": true, | ||
+ | "dictionaries": [], | ||
+ | "formulas": [], | ||
+ | "aggregations": [ | ||
+ | { | ||
+ | "type": "Sum", | ||
+ | "destination": "Rows", | ||
+ | "dictionaryFilterOptions": [] | ||
+ | }, | ||
+ | { | ||
+ | "type": "Min", | ||
+ | "destination": "Columns", | ||
+ | "dictionaryFilterOptions": [] | ||
+ | } | ||
+ | ], | ||
+ | "useFullLeftHeaderHierarchy": false, | ||
+ | "recalcAggregationsOnAutoFilter": false, | ||
+ | "transformAggregationType": "None", | ||
+ | "discriminator": "VirtualIndicatorOptionsDto", | ||
+ | "columnOptions": { | ||
+ | "width": null, | ||
+ | "format": null, | ||
+ | "dataControlOptions": { | ||
+ | "format": null, | ||
+ | "mask": null, | ||
+ | "min": null, | ||
+ | "max": null, | ||
+ | "component": null | ||
+ | }, | ||
+ | "isReadOnly": null, | ||
+ | "displayDuplicatedValues": null, | ||
+ | "duplicateValueOptions": "Undefined", | ||
+ | "allowChangeColumnValue": null, | ||
+ | "singleValueColumn": null, | ||
+ | "imageType": "None" | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | <br> | ||
+ | * Настройка расчетной формулы | ||
+ | Все формулы для виртуального показателя прописываются в json, в свойстве "formulas": []. Формулу можно добавить через интерфейс, либо прописать в json. Подробнее по ссылкам ниже. | ||
+ | [[Платформа_3V/Отчет/3._Настроить_формулы_отчета|Описание настройки формул в платформе]]<br> | ||
+ | [[Платформа_3V/Отчет/3._Настроить_формулы_отчета/Настроить_формулы_для_столбцов|Пример настройки формулы для виртуального показателя]] | ||
− | + | == Пример расчетной формулы для виртуального показателя == | |
+ | В отчет выведены трудозатраты из справочника 12. В данном справочнике также есть атрибут со временем, которое относится к той или иной трудозатрате, в секундах. Необходимо в отчете рассчитать время в часах. Для этого необходимо создать виртуальный показатель и прописать формулу: | ||
{| class="wikitable" | {| class="wikitable" | ||
− | |||
− | |||
|- | |- | ||
| <syntaxhighlight lang="JSON" line> | | <syntaxhighlight lang="JSON" line> |
Текущая версия на 11:08, 9 февраля 2022
Содержание
Описание
В отчете есть возможность добавить виртуальный показатель - расчетный столбец, для которого настраивается тип данных, расчет агрегации по столбцам/строкам таблицы, расчет формулы с использованием функций, доступных в платформе. Формулы в виртуальном показателе рассчитываются в момент построения отчета после загрузки данных, но агрегация выполняется после расчета формул в виртуальном показателе.
Добавить виртуальный показатель можно:
1. Через конструктор отчета:
2. Прописать конструкцию в json отчета как элемент коллекции "topHeaderItems": [].
1 {
2 "dataType": "Double",
3 "isEditable": false,
4 "leftHeaderDictionaryIds": [],
5 "name": "Виртуальный показатель",
6 "indicatorId": -54157,
7 "isVisible": true,
8 "dictionaries": [],
9 "formulas": [],
10 "aggregations": [
11 {
12 "type": "None",
13 "destination": "Rows",
14 "dictionaryFilterOptions": []
15 },
16 {
17 "type": "None",
18 "destination": "Columns",
19 "dictionaryFilterOptions": []
20 }
21 ],
22 "useFullLeftHeaderHierarchy": false,
23 "recalcAggregationsOnAutoFilter": false,
24 "transformAggregationType": "None",
25 "discriminator": "VirtualIndicatorOptionsDto",
26 "columnOptions": {
27 "width": null,
28 "format": null,
29 "dataControlOptions": {
30 "format": null,
31 "mask": null,
32 "min": null,
33 "max": null,
34 "component": null
35 },
36 "isReadOnly": null,
37 "displayDuplicatedValues": null,
38 "duplicateValueOptions": "Undefined",
39 "allowChangeColumnValue": null,
40 "singleValueColumn": null,
41 "imageType": "None"
42 }
43 }
Настройка формулы виртуального показателя
Для виртуального показателя можно настроить следующие варианты расчета данных:
- Настройка агрегации по столбцам и по строкам таблицы
Агрегацию можно настроить через конструктор отчета, выбрав функцию агрегации по строкам/столбцам:
Либо можно настроить через json-редактор в свойстве aggregations виртуального показателя, указав название необходимой функции агрегации:
1 {
2 "dataType": "Double",
3 "isEditable": false,
4 "leftHeaderDictionaryIds": [],
5 "name": "Виртуальный показатель",
6 "indicatorId": -54157,
7 "isVisible": true,
8 "dictionaries": [],
9 "formulas": [],
10 "aggregations": [
11 {
12 "type": "Sum",
13 "destination": "Rows",
14 "dictionaryFilterOptions": []
15 },
16 {
17 "type": "Min",
18 "destination": "Columns",
19 "dictionaryFilterOptions": []
20 }
21 ],
22 "useFullLeftHeaderHierarchy": false,
23 "recalcAggregationsOnAutoFilter": false,
24 "transformAggregationType": "None",
25 "discriminator": "VirtualIndicatorOptionsDto",
26 "columnOptions": {
27 "width": null,
28 "format": null,
29 "dataControlOptions": {
30 "format": null,
31 "mask": null,
32 "min": null,
33 "max": null,
34 "component": null
35 },
36 "isReadOnly": null,
37 "displayDuplicatedValues": null,
38 "duplicateValueOptions": "Undefined",
39 "allowChangeColumnValue": null,
40 "singleValueColumn": null,
41 "imageType": "None"
42 }
43 }
- Настройка расчетной формулы
Все формулы для виртуального показателя прописываются в json, в свойстве "formulas": []. Формулу можно добавить через интерфейс, либо прописать в json. Подробнее по ссылкам ниже.
Описание настройки формул в платформе
Пример настройки формулы для виртуального показателя
Пример расчетной формулы для виртуального показателя
В отчет выведены трудозатраты из справочника 12. В данном справочнике также есть атрибут со временем, которое относится к той или иной трудозатрате, в секундах. Необходимо в отчете рассчитать время в часах. Для этого необходимо создать виртуальный показатель и прописать формулу:
1 {
2 "indicatorId": -6183,
3 "dictionaries": [],
4 "calculateByDiffs": false,
5 "leftHeaderPlacementKind": "AnyElement",
6 "expression": "[1]/3600",
7 "operands": [
8 {
9 "dictionaryId": 12,
10 "attribute": {
11 "id": 25,
12 "discriminator": "OwnAttributeDefinitionDto"
13 },
14 "code": null,
15 "id": 1,
16 "name": null,
17 "discriminator": "AttributeFormulaOperandDto"
18 }
19 ],
20 "code": null,
21 "id": 1,
22 "name": null,
23 "discriminator": "IndicatorFormulaDto"
24 }
|
Где:
indicatorId - идентификатор виртуального показателя
expression - формула
dictionaryId - идентификатор справочника
attribute.id - идентификатор атрибута в справочнике
operands.id - идентификатор операнда, используемого в формуле
formulas.id - идентификатор формулы
Результат: