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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Страница в разработке»)
 
(Добавлено описание сворачивания показателей и его настройки.)
Строка 1: Строка 1:
Страница в разработке
+
{{DISPLAYTITLE:2.2.5. Настроить сворачивание данных по справочникам}}
 +
==Описание==
 +
Сворачивание показателя - это процесс агрегации значений его фактов вдоль одного или нескольких измерений. Количество отображаемых измерений показателя при этом уменьшается на количество измерений, по которым производится сворачивание, а в качестве значений фактов отображаются агрегированные значения. Процесс сворачивания можно рассматривать как проецирование показателя в пространство меньшей размерности. <br>
 +
Возможно сворачивание по нескольким измерениям - в таком случае тип агрегации для всех сворачиваемых изменений один и тот же.
 +
 
 +
==Пример==
 +
Для простоты и наглядности рассмотрим двумерный показатель с единственным вещественным фактом:
 +
[[Файл:Исходный показатель.png|обрамить|без]]
 +
Предположим, мы хотим установить среднее значение для каждого из погодных условий за весь период наблюдений. В таком случае нам следует свернуть показатель по измерению "Календарь" с типом сворачивания (агрегации) "Среднее значение". При этом из двух измерений справочника останется только одно - "Погодные условия", а значения факта будут усреднены вдоль измерения "Календарь":
 +
[[Файл:Свёрнутый показатель.png|обрамить|без]]
 +
 
 +
==Включение сворачивания==
 +
Следует понимать, что сворачивание измерений показателя - функциональность отчёта, и, соответственно, она может быть добавлена только в отчёт, содержащий показатель.
 +
 
 +
===Через конструктор отчётов===
 +
[[Файл:Настройка сворачивания через конструктор отчётов (1).png|мини|слева]]
 +
* На вкладке "Столбцы" найти показатель, который требуется свернуть, и выбрать справочник, задающий сворачиваемое измерение.
 +
* Для выбранного справочника на вкладке "Свойства" поставить флаг "Сворачивать данные по справочнику".
 +
* При необходимости - повторить с остальными сворачиваемыми измерениями.
 +
[[Файл:Настройка сворачивания через конструктор отчётов (2).png|мини|слева]]
 +
* Выбрать сворачиваемый показатель и на вкладке "Свойства" выбрать тип агрегации для значений фактов.
 +
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 +
 
 +
===Через модель отчёта===
 +
Чтобы свернуть показатель, необходимо изменить тип соответствующего ему элемента шапки отчёта с ''IndicatorOptionsDto'' на ''ViewIndicatorOptionsDto'', указать тип агрегации при сворачивании и перечислить справочники, задающие измерения, по которым происходит сворачивание, в ''dictionaryFilterOptions'':
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">Без сворачивания</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  ...
 +
  "topHeader": {
 +
    "topHeaderItems": [
 +
      ...
 +
      {
 +
        "name": "Погода",
 +
        "indicatorId": 139041,
 +
        "isVisible": true,
 +
        "dictionaries": [
 +
          {
 +
            "isVisible": null,
 +
            "displayAttributeId": null,
 +
            "elementCustomNames": [],
 +
            "groupingMethod": "Default",
 +
            "virtualElements": [],
 +
            "dictionaryId": 139040,
 +
            "filter": {
 +
              "value": null,
 +
              "skipIfValueNull": false,
 +
              "attributeId": null,
 +
              "attribute": {
 +
                "discriminator": "OwnAttributeDefinitionDto",
 +
                "id": 1
 +
              },
 +
              "conditionType": "AllElements",
 +
              "discriminator": "ValueConditionalDictionaryFilterDto",
 +
              "inversion": false
 +
            },
 +
            "hierarchyId": null,
 +
            "limit": null
 +
          }
 +
        ],
 +
        "formulas": [],
 +
        "aggregations": [],
 +
        "useFullLeftHeaderHierarchy": false,
 +
        "recalcAggregationsOnAutoFilter": false,
 +
        "transformAggregationType": "None",
 +
        "discriminator": "IndicatorOptionsDto"
 +
      }
 +
    ],
 +
...
 +
  },
 +
  ...
 +
}
 +
</syntaxhighlight>
 +
</div></div>
 +
<br>
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">Со сворачиванием</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
  ...
 +
  "topHeader": {
 +
    "topHeaderItems": [
 +
      ...
 +
      {
 +
        "sourceIndicatorId": 139041,
 +
        "aggregationType": "Avg",
 +
        "dictionaryFilterOptions": [
 +
          {
 +
            "dictionaryId": 139040,
 +
            "filter": {
 +
              "value": null,
 +
              "skipIfValueNull": false,
 +
              "attributeId": null,
 +
              "attribute": {
 +
                "discriminator": "OwnAttributeDefinitionDto",
 +
                "id": 1
 +
              },
 +
              "conditionType": "AllElements",
 +
              "discriminator": "ValueConditionalDictionaryFilterDto",
 +
              "inversion": false
 +
            },
 +
            "hierarchyId": null,
 +
            "limit": null
 +
          }
 +
        ],
 +
        "name": null,
 +
        "indicatorId": -36380,
 +
        "isVisible": true,
 +
        "dictionaries": [],
 +
        "formulas": [],
 +
        "aggregations": [],
 +
        "useFullLeftHeaderHierarchy": false,
 +
        "recalcAggregationsOnAutoFilter": false,
 +
        "transformAggregationType": "None",
 +
        "discriminator": "ViewIndicatorOptionsDto"
 +
      }
 +
    ],
 +
    ...
 +
  },
 +
  ...
 +
}
 +
</syntaxhighlight>
 +
</div></div>

Версия 14:49, 26 ноября 2021

Описание

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

Пример

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

Исходный показатель.png

Предположим, мы хотим установить среднее значение для каждого из погодных условий за весь период наблюдений. В таком случае нам следует свернуть показатель по измерению "Календарь" с типом сворачивания (агрегации) "Среднее значение". При этом из двух измерений справочника останется только одно - "Погодные условия", а значения факта будут усреднены вдоль измерения "Календарь":

Свёрнутый показатель.png

Включение сворачивания

Следует понимать, что сворачивание измерений показателя - функциональность отчёта, и, соответственно, она может быть добавлена только в отчёт, содержащий показатель.

Через конструктор отчётов

Настройка сворачивания через конструктор отчётов (1).png
  • На вкладке "Столбцы" найти показатель, который требуется свернуть, и выбрать справочник, задающий сворачиваемое измерение.
  • Для выбранного справочника на вкладке "Свойства" поставить флаг "Сворачивать данные по справочнику".
  • При необходимости - повторить с остальными сворачиваемыми измерениями.
Настройка сворачивания через конструктор отчётов (2).png
  • Выбрать сворачиваемый показатель и на вкладке "Свойства" выбрать тип агрегации для значений фактов.















Через модель отчёта

Чтобы свернуть показатель, необходимо изменить тип соответствующего ему элемента шапки отчёта с IndicatorOptionsDto на ViewIndicatorOptionsDto, указать тип агрегации при сворачивании и перечислить справочники, задающие измерения, по которым происходит сворачивание, в dictionaryFilterOptions:

Без сворачивания
 1 {
 2   ...
 3   "topHeader": {
 4     "topHeaderItems": [
 5       ...
 6       {
 7         "name": "Погода",
 8         "indicatorId": 139041,
 9         "isVisible": true,
10         "dictionaries": [
11           {
12             "isVisible": null,
13             "displayAttributeId": null,
14             "elementCustomNames": [],
15             "groupingMethod": "Default",
16             "virtualElements": [],
17             "dictionaryId": 139040,
18             "filter": {
19               "value": null,
20               "skipIfValueNull": false,
21               "attributeId": null,
22               "attribute": {
23                 "discriminator": "OwnAttributeDefinitionDto",
24                 "id": 1
25               },
26               "conditionType": "AllElements",
27               "discriminator": "ValueConditionalDictionaryFilterDto",
28               "inversion": false
29             },
30             "hierarchyId": null,
31             "limit": null
32           }
33         ],
34         "formulas": [],
35         "aggregations": [],
36         "useFullLeftHeaderHierarchy": false,
37         "recalcAggregationsOnAutoFilter": false,
38         "transformAggregationType": "None",
39         "discriminator": "IndicatorOptionsDto"
40       }
41     ],
42 	...
43   },
44   ...
45 }


Со сворачиванием
 1 {
 2   ...
 3   "topHeader": {
 4     "topHeaderItems": [
 5       ...
 6       {
 7         "sourceIndicatorId": 139041,
 8         "aggregationType": "Avg",
 9         "dictionaryFilterOptions": [
10           {
11             "dictionaryId": 139040,
12             "filter": {
13               "value": null,
14               "skipIfValueNull": false,
15               "attributeId": null,
16               "attribute": {
17                 "discriminator": "OwnAttributeDefinitionDto",
18                 "id": 1
19               },
20               "conditionType": "AllElements",
21               "discriminator": "ValueConditionalDictionaryFilterDto",
22               "inversion": false
23             },
24             "hierarchyId": null,
25             "limit": null
26           }
27         ],
28         "name": null,
29         "indicatorId": -36380,
30         "isVisible": true,
31         "dictionaries": [],
32         "formulas": [],
33         "aggregations": [],
34         "useFullLeftHeaderHierarchy": false,
35         "recalcAggregationsOnAutoFilter": false,
36         "transformAggregationType": "None",
37         "discriminator": "ViewIndicatorOptionsDto"
38       }
39     ],
40     ...
41   },
42   ...
43 }