Платформа 3V/Отчет/2. Настроить столбцы/2.3. Настроить виртуальный показатель: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 14 промежуточных версий 4 участников)
Строка 2: Строка 2:
  
 
== Описание ==
 
== Описание ==
Чтобы произвести расчеты над атрибутом справочника, необходимо создать виртуальный показатель и в операнде использовать следующую конструкцию:
+
В отчете есть возможность добавить виртуальный показатель - расчетный столбец, для которого настраивается тип данных, расчет агрегации по столбцам/строкам таблицы, расчет формулы с использованием функций, доступных в платформе. Формулы в виртуальном показателе рассчитываются в момент построения отчета после загрузки данных, но агрегация выполняется после расчета формул в виртуальном показателе.
  
{| class="wikitable"
+
Добавить виртуальный показатель можно:<br>
|-
+
1. Через конструктор отчета:<br>
! "operands": [ ]
+
[[Файл:Виртуальный показатель.png|мини|слева]]
|-
+
 
| <syntaxhighlight lang="JSON" line>
+
<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>
 
{
 
{
                "dictionaryId": 12,
+
        "dataType": "Double",
                "attribute": {
+
        "isEditable": false,
                  "id": 25,
+
        "leftHeaderDictionaryIds": [],
                  "discriminator": "OwnAttributeDefinitionDto"
+
        "name": "Виртуальный показатель",
                },
+
        "indicatorId": -54157,
                "code": null,
+
        "isVisible": true,
                "id": 1,
+
        "dictionaries": [],
                "name": null,
+
        "formulas": [],
                "discriminator": "AttributeFormulaOperandDto"
+
        "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. В данном справочнике также есть атрибут со временем, которое относится к той или иной трудозатрате, в секундах. Необходимо в пивоте рассчитать время в часах. Для этого необходимо создать виртуальный показатель и прописать формулу:
+
== Пример расчетной формулы для виртуального показателя ==
  
 +
В отчет выведены трудозатраты из справочника 12. В данном справочнике также есть атрибут со временем, которое относится к той или иной трудозатрате, в секундах. Необходимо в отчете рассчитать время в часах. Для этого необходимо создать виртуальный показатель и прописать формулу:
 
{| class="wikitable"
 
{| class="wikitable"
|-
 
! "formulas": [ ]
 
 
|-
 
|-
 
| <syntaxhighlight lang="JSON" line>
 
| <syntaxhighlight lang="JSON" line>
Строка 66: Строка 163:
 
'''operands.id''' - идентификатор операнда, используемого в формуле<br>
 
'''operands.id''' - идентификатор операнда, используемого в формуле<br>
 
'''formulas.id''' - идентификатор формулы<br>
 
'''formulas.id''' - идентификатор формулы<br>
 +
 +
Результат:
 +
 +
[[Файл:Расчетный столбец по атрибуту справочника.png|мини|слева]]

Текущая версия на 11:08, 9 февраля 2022

Описание

В отчете есть возможность добавить виртуальный показатель - расчетный столбец, для которого настраивается тип данных, расчет агрегации по столбцам/строкам таблицы, расчет формулы с использованием функций, доступных в платформе. Формулы в виртуальном показателе рассчитываются в момент построения отчета после загрузки данных, но агрегация выполняется после расчета формул в виртуальном показателе.

Добавить виртуальный показатель можно:
1. Через конструктор отчета:

Виртуальный показатель.png











2. Прописать конструкцию в json отчета как элемент коллекции "topHeaderItems": [].

Пример JSON виртуального показателя
 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       }

Настройка формулы виртуального показателя

Для виртуального показателя можно настроить следующие варианты расчета данных:

  • Настройка агрегации по столбцам и по строкам таблицы

Агрегацию можно настроить через конструктор отчета, выбрав функцию агрегации по строкам/столбцам:

Виртуальный показатель агрегация.png











Либо можно настроить через json-редактор в свойстве aggregations виртуального показателя, указав название необходимой функции агрегации:

Пример JSON агрегации в виртуальном показателе
 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 - идентификатор формулы

Результат:

Расчетный столбец по атрибуту справочника.png