Aggr

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

Syntax:  

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

Return data type: dual

Arguments:  

Аргумент Описание
expr

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

StructuredParameter

StructuredParameter включает в себя измерение и, дополнительно, критерий сортировки в формате: (Dimension(Sort-type, Ordering))

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

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

Сведения о порядке использования критериев сортировки см. в Добавление критериев сортировки в измерение в структурированном параметре.

SetExpression По умолчанию функция агрегирования агрегирует множество возможных записей, определенных выборкой. Альтернативный набор записей может быть определен набором выражений анализа.
DISTINCT Если перед аргументом выражения стоит классификатор distinct, или его вообще нет, то каждая комбинация значений измерений будет создавать только одно возвращаемое значение. Это обычный способ создания агрегирований — каждая комбинация значений измерений будет обозначаться одной линией на диаграмме.
NODISTINCT

Если перед аргументом выражения стоит классификатор nodistinct, то каждая комбинация значений измерений может создавать несколько возвращаемых значений в зависимости от базовой структуры данных. Если измерение только одно, функция aggr вернет массив с тем же количеством элементов, что и строк в исходных данных.

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

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

Limitations:  

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

Добавление критериев сортировки в измерение в структурированном параметре

В начальной форме аргумент 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.

Examples and results:  

Пример Результат
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

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

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

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

Aggr(NODISTINCT Max(UnitPrice), Customer)

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

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

При использовании критериев сортировки в аргументе StructuredParameter в выражении: max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Без критериев сортировки результат выражения max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) зависит от порядка сортировки измерения MonthYear. Возможно, желаемый результат не будет получен.

С помощью добавления в измерение значений типа сортировки и типа упорядочения мы задаем критерии сортировки для структурированного параметра: (MonthYear, (NUMERIC, ASCENDING)), где тип сортировки NUMERIC и тип упорядочения ASCENDING указывают на сортировку MonthYear в числовом порядке по возрастанию.

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

В части Aggr выражения общее количество клиентов в месяц (заданное MonthYear) сравнивается с общим количеством предыдущего месяца.

Так как мы используем критерии сортировки с измерением: (MonthYear,(NUMERIC, ASCENDING)), мы уверены, что Aggr сравнивает количества клиентов в последовательных месяцах в виртуальной таблице путем упорядочивания месяцев в возрастающей цифровой последовательности, а не в возрастающем алфавитном порядке.

Данные, используемые в примерах:

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

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||19

] (delimiter is '|');