Перейти к основному содержимому Перейти к дополнительному содержимому

Вложенные агрегирования

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

Всегда один уровень агрегирования в функции

В типичном приложении может содержаться:

  • один миллион записей данных;
  • сто строк в сводной таблице;
  • один KPI в датчике или текстовом поле.

Хотя эти три числа различаются по величине, они могут представлять все данные. Эти числа — просто различные уровни агрегирования.

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

Следующие выражения будут работать:

  • Sum(Sales)
  • Sum(Sales)/Count(Order Number)

Следующее выражение не будет работать, поскольку оно является вложенным агрегированием:

  • Count(Sum(Sales))

Решение этой проблемы находится в форме функции Aggr(). Вопреки своему имени, это не функция агрегирования. Это функция «многие ко многим», скорее похожая матрицу в математике. Она преобразует таблицу с N записями в таблицу с M записями. Она возвращает массив значений. Она может также рассматриваться как виртуальная прямая таблица с одной мерой и одним или несколькими измерениями.

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

Использование Aggr() для вложенных агрегирований

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

Когда функция используется, оператор Aggr() создает виртуальную таблицу с одним выражением, сгруппированным по одному или нескольким измерениям. Затем результат этой виртуальной таблицы может быть снова агрегирован внешней функцией агрегирования.

Вычисление самой большой средней стоимости заказа

Давайте использовать простой оператор Aggr() в выражении диаграммы.

Нам нужно посмотреть общие показатели на региональном уровне, а также показать два более сложных выражения:

  • Самая большая средняя стоимость заказа по менеджеру в каждом регионе.
  • Менеджер, получивший ту самую большую среднюю стоимость заказа.

Можно легко вычислить среднюю стоимость заказа для каждого региона с помощью стандартного выражения Sum(Sales)/Count([Order Number]).

В приложении на листе Nested Aggregations находится таблица с названием Aggr() function.

  1. Выберите доступную таблицу Aggr() function.
    Откроется панель свойств.
  2. Щелкните команду Добавить столбец и выберите параметр Мера.
  3. Щелкните символ Выражение.
    Откроется редактор выражения.
  4. Введите следующее: Sum(Sales)/Count([Order Number])
  5. Щелкните Применить.

Таблица показывает среднюю стоимость заказа по региону.

Таблица показывает среднюю стоимость заказа по региону.

Примечание к подсказкеРекомендуется убедиться, что данные отформатированы правильно. В этом случае в каждом столбце будет изменена Метка для представления вычисления. В столбцах с денежными значениями изменим Формат чисел на Денежный, а Образец формата — на $ #,##0;-$ #,##0.

Нам нужно получить самую большую среднюю стоимость заказа для каждого региона. Необходимо использовать Aggr(), чтобы указать Qlik Sense, что нужно вычислить среднюю стоимость заказа для каждого региона по менеджеру и затем отобразить самую большую из них. Для получения средней стоимости заказа для каждого региона по менеджеру нужно включить эти измерения в оператор Aggr():

Aggr(Sum(Sales)/Count([Order Number]), Region, Manager)

С помощью этого выражения Qlik Sense создаст виртуальную таблицу, выглядящую следующим образом:

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

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

Когда Qlik Sense вычисляет отдельные средние стоимости заказов для каждого региона по менеджеру, необходимо найти самое большое из этих значений. Для этого функцию Aggr() нужно заключить в Max():

Max(Aggr(Sum(Sales)/Count([Order Number]), Manager, Region))

  1. Щелкните команду Добавить столбец и выберите параметр Мера.
  2. Щелкните символ Выражение.
    Откроется редактор выражения.
  3. Введите следующее: Max(Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Щелкните Применить.

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

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

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

Для этого будет использоваться та же функция Aggr(), что и прежде, но на этот раз вместе с функцией FirstSortedValue(). Функция FirstSortedValue() указывает Qlik Sense вывести имя менеджера для определенного измерения, указанного во второй части функции:

FirstSortedValue(Manager,-Aggr(Sum(Sales)/Count(Order Number), Manager, Region))

Примечание к подсказкеЕсть одна маленькая, но очень важная часть выражения: символ «минус» перед выражением Aggr(). В функции FirstSortedValue() можно указать порядок сортировки массива данных. В этом случае символ «минус» указывает Qlik Sense, что сортировка должна выполняться с самого большого до самого маленького значения.
  1. Щелкните команду Добавить столбец и выберите параметр Мера.
  2. Щелкните символ Выражение.
    Откроется редактор выражения.
  3. Введите следующее: FirstSortedValue(Manager,-Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Щелкните Применить.

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

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

Для получения дополнительной информации см. Aggr

Для получения дополнительной информации см. FirstSortedValue

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!