2.2.5. Настроить сворачивание данных по справочникам
Содержание
Описание
Сворачивание показателя - это процесс агрегации значений его фактов вдоль одного или нескольких измерений. Количество отображаемых измерений показателя при этом уменьшается на количество измерений, по которым производится сворачивание, а в качестве значений фактов отображаются агрегированные значения. Процесс сворачивания можно рассматривать как проецирование показателя в пространство меньшей размерности.
Возможно сворачивание по нескольким измерениям - в таком случае тип агрегации для всех сворачиваемых изменений один и тот же.
Пример
Для простоты и наглядности рассмотрим двумерный показатель с единственным вещественным фактом:
Предположим, мы хотим установить среднее значение для каждого из погодных условий за весь период наблюдений. В таком случае нам следует свернуть показатель по измерению "Календарь" с типом сворачивания (агрегации) "Среднее значение". При этом из двух измерений справочника останется только одно - "Погодные условия", а значения факта будут усреднены вдоль измерения "Календарь":
Включение сворачивания
Следует понимать, что сворачивание измерений показателя - функциональность отчёта, и, соответственно, она может быть добавлена только в отчёт, содержащий показатель.
Через конструктор отчётов
- На вкладке "Столбцы" найти показатель, который требуется свернуть, и выбрать справочник, задающий сворачиваемое измерение.
- Для выбранного справочника на вкладке "Свойства" поставить флаг "Сворачивать данные по справочнику".
- При необходимости - повторить с остальными сворачиваемыми измерениями.
- Выбрать сворачиваемый показатель и на вкладке "Свойства" выбрать тип агрегации для значений фактов.
Через модель отчёта
Чтобы свернуть показатель, необходимо изменить тип соответствующего ему элемента шапки отчёта с 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 }