# Aggr — функция диаграммы

Функция Aggr() возвращает диапазон значений выражения, вычисленный по указанному измерению или измерениям. Например, максимальное значение продаж по каждому клиенту, по региону.

Функция Aggr используется для вложенных агрегирований, в которых ее первый параметр (внутреннее агрегирование) вычисляется один раз для каждого значения измерения. Измерения указываются во втором и последующих параметрах.

Кроме того, функция Aggr должна заключаться во внешнюю функцию агрегирования, которая использует массив результатов из функции Aggr в качестве ввода в агрегирование, в которое она вложена.

Синтаксис:

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Возвращаемые типы данных: двойное значение

Аргументы:

Аргументы

| Аргумент | Описание |
| --- | --- |
| expr | Выражение, состоящее из функции агрегирования. По умолчанию функция агрегирования агрегирует множество возможных записей, определенных выборкой. |
| StructuredParameter | StructuredParameter представляет собой измерение, к которому в некоторых случаях добавляется критерий сортировки следующего формата: `(Dimension(Sort-type, Ordering))`<br><br>Измерение представляет собой одиночное поле, оно не может быть выражением. Измерение предназначено для определения диапазона значений, для которых вычисляется выражение Aggr.<br><br>При включении критериев сортировки осуществляется сортировка созданного функцией Aggr диапазона значений, вычисляемого для измерения. Это имеет значение, если порядок сортировки влияет на результат выражения, содержащего функцию Aggr.<br><br>Сведения о порядке использования критериев сортировки см. в разделе [Добавление критериев сортировки к измерению в составе структурированного параметра](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting). |
| SetExpression | По умолчанию функция агрегирования агрегирует множество возможных записей, определенных выборкой. Альтернативный набор записей может быть определен выражением анализа множества. |
| DISTINCT | Если перед аргументом выражения стоит классификатор distinct или его вообще нет, то каждая комбинация значений измерений будет создавать только одно возвращаемое значение. Это обычный способ создания агрегирований — каждая комбинация значений измерений будет образовывать одну линию на диаграмме. |
| NODISTINCT | Если перед аргументом выражения стоит классификатор nodistinct, то каждая комбинация значений измерений может создавать несколько возвращаемых значений в зависимости от базовой структуры данных. Если измерение только одно, функция aggr вернет массив с тем же количеством элементов, что и строк в исходных данных. |

Базовые функции агрегирования, такие как Sum, Min и Avg, возвращают отдельное числовое значение, тогда как функцию Aggr() можно сравнить с созданием временного промежуточного набора результатов (виртуальной таблицы), с помощью которого можно провести другое агрегирование. Например, при вычислении среднего значения объема продаж путем сложения сумм продаж по клиентам в операторе Aggr() и затем вычисления среднего значения по суммированным результатам: Avg(TOTAL Aggr(Sum(Sales),Customer)).

Примечание к подсказкеИспользуйте функцию Aggr() в вычисляемых измерениях, если необходимо создать агрегирование вложенной диаграммы на различных уровнях.

Ограничения:

Каждое измерение функции Aggr() может быть одиночным полем и не может быть выражением (вычисляемое измерение).

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)Добавление критериев сортировки к измерению в составе структурированного параметра

Базовая форма аргумента StructuredParameter в синтаксисе функции Aggr представляет собой одиночное измерение. Выражение Aggr(Sum(Sales, Month)) служит для вычисления итогового значения продаж за каждый месяц. Однако если выражение входит в состав другой функции агрегирования, в случае отсутствия критериев сортировки результат вычисления может быть неудовлетворительным. Это вызвано тем, что сортировка некоторых изменений может осуществляться в числовом или алфавитном порядке.

В аргументе StructuredParameter функции Aggr можно указать критерии сортировки измерения в составе выражения. Таким образом, к виртуальной таблице, созданной функцией Aggr, применяется определенный порядок сортировки.

Аргумент StructuredParameter имеет следующий синтаксис:

(FieldName, (Sort-type, Ordering))

Структурированные параметры поддерживают создание вложений:

(FieldName, (FieldName2, (Sort-type, Ordering)))

Доступны следующие типы сортировки: NUMERIC, TEXT, FREQUENCY или LOAD\_ORDER.

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

Допустимые типы упорядочивания

| Тип сортировки | Допустимые типы упорядочивания |
| --- | --- |
| NUMERIC | ASCENDING, DESCENDING или REVERSE |
| TEXT | ASCENDING, A2Z, DESCENDING, REVERSE или Z2A |
| FREQUENCY | DESCENDING, REVERSE или ASCENDING |
| LOAD\_ORDER | ASCENDING, ORIGINAL, DESCENDING или REVERSE |

Типы упорядочивания REVERSE и DESCENDING эквивалентны друг другу.

Для типа сортировки TEXT типы упорядочивания ASCENDING и A2Z являются эквивалентными; также эквивалентны типы упорядочивания DESCENDING, REVERSE и Z2A.

Для типа сортировки LOAD\_ORDER типы упорядочивания ASCENDING и ORIGINAL являются эквивалентными.

## Примеры: выражения диаграммы с использованием Aggr

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)

#### Примеры. Выражения диаграммы

### Пример выражения диаграммы 1

#### Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных, чтобы создать пример с выражениями диаграммы, показанный ниже.

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|CC|0|19
] (delimiter is '|');
```

Для получения дополнительной информации об использовании встроенных загрузок см. [Использование встроенных загрузок для загрузки данных](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Выражение диаграммы

Создайте визуализацию ключевых показателей эффективности на листе Qlik Sense. Добавьте следующее выражение в ключевой показатель эффективности в качестве меры:

`Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))`

#### Результат

376.7

#### Объяснение

Выражение `Aggr(Sum(UnitSales*UnitPrice), Customer)` вычисляет общее значение продаж для значения Customer и возвращает несколько значений: 295, 715 и 120 для трех значений Customer.

По сути, мы построили временный список значений, не создавая отдельную таблицу или столбец с этими значениями.

Данные значения выполняют функцию вводимых данных для функции Avg(), служащей для вычисления среднего значения продаж, 376.7.

Для получения дополнительной информации о выражениях см. [Использование выражений в визуализациях](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm).

### Пример выражения диаграммы 2

#### Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных, чтобы создать пример с выражениями диаграммы, показанный ниже.

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|BB|7|12
Betacab|CC|2|22
Betacab|CC|4|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|AA|5|11
Canutility|CC|0|19
] (delimiter is '|');
```

Для получения дополнительной информации об использовании встроенных загрузок см. [Использование встроенных загрузок для загрузки данных](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Выражение диаграммы

Создайте на листе Qlik Sense визуализацию таблицы с измерениями Customer, Product, UnitPrice и UnitSales. Добавьте в таблицу следующее выражение в качестве меры:

`Aggr(NODISTINCT Max(UnitPrice), Customer, Product)`

#### Результат

| Customer | Product | UnitPrice | UnitSales | Aggr(NODISTINCT Max(UnitPrice), Customer, Product) |
| --- | --- | --- | --- | --- |
| Astrida | AA | 15 | 10 | 16 |
| Astrida | AA | 16 | 4 | 16 |
| Astrida | BB | 9 | 9 | 15 |
| Astrida | BB | 15 | 10 | 15 |
| Betacab | BB | 10 | 5 | 12 |
| Betacab | BB | 12 | 7 | 12 |
| Betacab | CC | 20 | 4 | 22 |
| Betacab | CC | 22 | 2 | 22 |
| Betacab | DD | 25 | 25 | 25 |
| Canutility | AA | 11 | 5 | 15 |
| Canutility | AA | 15 | 8 | 15 |
| Canutility | CC | 19 | 0 | 19 |

#### Объяснение

Массив значений: 16, 16, 15, 15, 12, 12, 22, 22, 25, 15, 15 и 19. Классификатор nodistinct означает, что диапазон содержит по одному элементу для каждой строки в данных источника: каждый является максимальным значением UnitPrice для каждого элемента Customer и Product.

### Пример выражения диаграммы 3

#### Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных, чтобы создать пример с выражениями диаграммы, показанный ниже.

```
Set vNumberOfOrders = 1000;

OrderLines:
Load
	RowNo() as OrderLineID,
	OrderID,
	OrderDate,
	Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales
	While Rand()<=0.5 or IterNo()=1;
Load * Where OrderDate<=Today();
Load 
	Rand() as Rand1,
	Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate,
	RecNo() as OrderID
	Autogenerate vNumberOfOrders;
    
Calendar:
Load distinct
	Year(OrderDate) as Year,
	Month(OrderDate) as Month,
	OrderDate 
	Resident OrderLines;
```

#### Выражения диаграммы

Создайте на листе Qlik Sense визуализацию таблицы с измерениями Year и Month. Добавьте в таблицу следующие выражения в качестве мер:

* `Sum(Sales)`
* `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` с меткой Structured Aggr() в таблице.

#### Результат

| Year | Month | Sum(Sales) | Structured Aggr() |
| --- | --- | --- | --- |
| 2013 | Jan | 53495 | 53495 |
| 2013 | Feb | 48580 | 102075 |
| 2013 | Mar | 25651 | 127726 |
| 2013 | Apr | 36585 | 164311 |
| 2013 | May | 61211 | 225522 |
| 2013 | Jun | 23689 | 249211 |
| 2013 | Jul | 42311 | 291522 |
| 2013 | Aug | 41913 | 333435 |
| 2013 | Sep | 28886 | 362361 |
| 2013 | Oct | 25977 | 388298 |
| 2013 | Nov | 44455 | 432753 |
| 2013 | Dec | 64144 | 496897 |
| 2014 | Jan | 67775 | 67775 |

#### Объяснение

Этот пример демонстрирует агрегированные значения за 12-месячный период каждого года в хронологическом порядке по возрастанию, то есть фрагмент (Numeric, Ascending) структурированных параметров выражения Aggr(). В качестве структурных параметров требуются два специфических измерения: Year и Month с сортировкой (1) в хронологическом порядке по году Year (числовое значение) и (2) в хронологическом порядке по месяцу Month (числовое значение). Эти два измерения должны использоваться в визуализации таблиц или диаграмм. Это необходимо для того, чтобы список измерений функции Aggr() соответствовал измерениям объекта, используемого для визуализации.

Различия между этими мерами можно представить в таблице или отдельных линейных графиках:

* `Sum(Aggr(
  	Rangesum(Above(Sum(Sales),0,12)), 
  	(Year), 
  	(Month)
  	))`
* `Sum(Aggr(
  	Rangesum(Above(Sum(Sales),0,12)), 
  	(Year, (Numeric, Ascending)), 
  	(Month, (Numeric, Ascending))
  	))`

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

## Подробнее

* [Базовые функции агрегирования](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [Анализ множеств](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)