Aggr — функция диаграммы
Функция Aggr() возвращает диапазон значений выражения, вычисленный по указанному измерению или измерениям. Например, максимальное значение продаж по каждому клиенту, по региону.
Функция Aggr используется для вложенных агрегирований, в которых ее первый параметр (внутреннее агрегирование) вычисляется один раз для каждого значения измерения. Измерения указываются во втором и последующих параметрах.
Кроме того, функция Aggr должна заключаться во внешнюю функцию агрегирования, которая использует массив результатов из функции Aggr в качестве ввода в агрегирование, в которое она вложена.
Синтаксис:
Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})
Возвращаемые типы данных: двойное значение
Аргументы:
Аргумент | Описание |
---|---|
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() может быть одиночным полем и не может быть выражением (вычисляемое измерение).
Добавление критериев сортировки к измерению в составе структурированного параметра
Базовая форма аргумента 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 являются эквивалентными.