Поделиться через


GROUPBY

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Заметка

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

Функция GROUPBY аналогична функции SUMMARIZE. Однако GROUPBY не выполняет неявную CALCULATE для столбцов расширений, которые он добавляет. GROUPBY позволяет использовать новую функцию CURRENTGROUPв функциях агрегирования в столбцах расширения, которые он добавляет. GROUPBY используется для выполнения нескольких агрегатов в одной таблице.

Синтаксис

GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])

Параметры

Срок Определение
table Любое выражение DAX, возвращающее таблицу данных.
groupBy_columnName Имя существующего столбца в таблице (или в связанной таблице), по которой данные должны быть сгруппированы. Этот параметр не может быть выражением.
name Имя, заданное новому столбцу, добавляемого в список столбцов GroupBy, заключенное в двойные кавычки.
expression Одна из функций агрегирования X с первым аргументом, CURRENTGROUP(). Полный список поддерживаемых функций агрегирования X см. в разделе с CURRENTGROUP ниже.

Возвращаемое значение

Таблица с выбранными столбцами для аргументов groupBy_columnName и столбцов расширения, назначенных аргументами имени.

Замечания

  • Функция GROUPBY выполняет следующие действия:

    1. Начните с указанной таблицы (и всех связанных таблиц в направлении "к одному").

    2. Создайте группирование с помощью всех столбцов GroupBy (которые должны существовать в таблице на шаге 1.).

    3. Каждая группа является одной строкой в результате, но представляет набор строк в исходной таблице.

    4. Для каждой группы оцените добавляемые столбцы расширения. В отличие от функции SUMMARIZE, подразумеваемая CALCULATE не выполняется, и группа не помещается в контекст фильтра.

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

  • groupBy_columnName должны находиться в таблице или в связанной таблице.

  • Каждое имя должно быть заключено в двойные кавычки.

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

  • GROUPBY в основном используется для выполнения агрегирования по промежуточным результатам из DAX табличных выражений. Для эффективной агрегирования по физическим таблицам в модели рекомендуется использовать функцию SUMMARIZECOLUMNS или SUMMARIZE.

  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

С CURRENTGROUP

CURRENTGROUP можно использовать только в выражении, определяющем столбец расширения в функции GROUPBY. В результате CURRENTGROUP возвращает набор строк из аргумента таблицы GROUPBY, принадлежащих текущей строке результата GROUPBY. Функция CURRENTGROUP не принимает аргументы и поддерживается только в качестве первого аргумента одной из следующих функций агрегирования: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.

Пример

В следующем примере сначала вычисляется общий объем продаж по странам и категориям продуктов по физическим таблицам с помощью функции SUMMARIZECOLUMNS. Затем она использует функцию GROUPBY для сканирования промежуточного результата от первого шага, чтобы найти максимальное количество продаж в каждой стране по категориям продуктов.

DEFINE
VAR SalesByCountryAndCategory =
SUMMARIZECOLUMNS(
Geography[Country],
Product[Category],
"Total Sales", SUMX(Sales, Sales[Price] * Sales[Qty])
)

EVALUATE
GROUPBY(
SalesByCountryAndCategory,
Geography[Country],
"Max Sales", MAXX(CURRENTGROUP(), [Total Sales])
)

функция SUMMARIZESUMMARIZECOLUMNS