Платформа 3V/Отчет/2. Настроить столбцы/2.2. Выбрать показатели для размещения в столбцах/2.2.5. Настроить сворачивание данных по справочникам: различия между версиями
(Новая страница: «Страница в разработке») |
|||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
− | + | {{DISPLAYTITLE: Настроить сворачивание данных по справочникам}} | |
+ | ==Описание== | ||
+ | Сворачивание показателя - это процесс агрегации значений его фактов вдоль одного или нескольких измерений. Количество отображаемых измерений показателя при этом уменьшается на количество измерений, по которым производится сворачивание, а в качестве значений фактов отображаются агрегированные значения. Процесс сворачивания можно рассматривать как проецирование показателя в пространство меньшей размерности. <br> | ||
+ | Возможно сворачивание по нескольким измерениям - в таком случае тип агрегации для всех сворачиваемых изменений один и тот же. | ||
+ | |||
+ | ==Пример== | ||
+ | Для простоты и наглядности рассмотрим двумерный показатель с единственным вещественным фактом: | ||
+ | [[Файл:Исходный показатель.png|обрамить|без]] | ||
+ | Предположим, мы хотим установить среднее значение для каждого из погодных условий за весь период наблюдений. В таком случае нам следует свернуть показатель по измерению "Календарь" с типом сворачивания (агрегации) "Среднее значение". При этом из двух измерений справочника останется только одно - "Погодные условия", а значения факта будут усреднены вдоль измерения "Календарь": | ||
+ | [[Файл:Свёрнутый показатель.png|обрамить|без]] | ||
+ | |||
+ | ==Включение сворачивания== | ||
+ | Следует понимать, что сворачивание измерений показателя - функциональность отчёта, и, соответственно, она может быть добавлена только в отчёт, содержащий показатель. | ||
+ | |||
+ | ===Через конструктор отчётов=== | ||
+ | [[Файл:Настройка сворачивания через конструктор отчётов (1).png|мини|слева]] | ||
+ | * На вкладке "Столбцы" найти показатель, который требуется свернуть, и выбрать справочник, задающий сворачиваемое измерение. | ||
+ | * Для выбранного справочника на вкладке "Свойства" поставить флаг "Сворачивать данные по справочнику". | ||
+ | * При необходимости - повторить с остальными сворачиваемыми измерениями. | ||
+ | [[Файл:Настройка сворачивания через конструктор отчётов (2).png|мини|слева]] | ||
+ | * Выбрать сворачиваемый показатель и на вкладке "Свойства" выбрать тип агрегации для значений фактов. | ||
+ | <br clear="both" /> | ||
+ | |||
+ | ===Через модель отчёта=== | ||
+ | Чтобы свернуть показатель, необходимо изменить тип соответствующего ему элемента шапки отчёта с ''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> |
Текущая версия на 08:38, 13 декабря 2021
Содержание
Описание
Сворачивание показателя - это процесс агрегации значений его фактов вдоль одного или нескольких измерений. Количество отображаемых измерений показателя при этом уменьшается на количество измерений, по которым производится сворачивание, а в качестве значений фактов отображаются агрегированные значения. Процесс сворачивания можно рассматривать как проецирование показателя в пространство меньшей размерности.
Возможно сворачивание по нескольким измерениям - в таком случае тип агрегации для всех сворачиваемых изменений один и тот же.
Пример
Для простоты и наглядности рассмотрим двумерный показатель с единственным вещественным фактом:
Предположим, мы хотим установить среднее значение для каждого из погодных условий за весь период наблюдений. В таком случае нам следует свернуть показатель по измерению "Календарь" с типом сворачивания (агрегации) "Среднее значение". При этом из двух измерений справочника останется только одно - "Погодные условия", а значения факта будут усреднены вдоль измерения "Календарь":
Включение сворачивания
Следует понимать, что сворачивание измерений показателя - функциональность отчёта, и, соответственно, она может быть добавлена только в отчёт, содержащий показатель.
Через конструктор отчётов
- На вкладке "Столбцы" найти показатель, который требуется свернуть, и выбрать справочник, задающий сворачиваемое измерение.
- Для выбранного справочника на вкладке "Свойства" поставить флаг "Сворачивать данные по справочнику".
- При необходимости - повторить с остальными сворачиваемыми измерениями.
- Выбрать сворачиваемый показатель и на вкладке "Свойства" выбрать тип агрегации для значений фактов.
Через модель отчёта
Чтобы свернуть показатель, необходимо изменить тип соответствующего ему элемента шапки отчёта с 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 }