GROUPBY
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Примечание.
Эта функция не рекомендуется использовать в визуальных вычислениях , так как, скорее всего, возвращает бессмысленные результаты.
Функция GROUPBY аналогична функции SUMMARIZE . Однако GROUPBY не выполняет неявное вычисление для столбцов расширений, которые он добавляет. GROUPBY позволяет использовать новую функцию CURRENTGROUP в функциях агрегирования в столбцах расширения, которые он добавляет. GROUPBY используется для выполнения нескольких агрегатов в одной таблице.
Синтаксис
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Параметры
Термин | Определение |
---|---|
table | Любое выражение DAX, возвращающее таблицу данных. |
groupBy_columnName | Имя существующего столбца в таблице (или в связанной таблице), по которой данные должны быть сгруппированы. Этот параметр не может быть выражением. |
name | Имя, заданное новому столбцу, добавляемого в список столбцов GroupBy, заключенное в двойные кавычки. |
выражение | Одна из функций агрегирования X с первым аргументом CURRENTGROUP(). Полный список поддерживаемых функций агрегирования X см. в разделе с помощью CURRENTGROUP ниже. |
Возвращаемое значение
Таблица с выбранными столбцами для аргументов groupBy_columnName и столбцов расширения, назначенных аргументами имени.
Замечания
Функция GROUPBY выполняет следующие действия:
Начните с указанной таблицы (и всех связанных таблиц в направлении "к одному").
Создайте группирование с помощью всех столбцов GroupBy (которые должны существовать в таблице на шаге 1.).
Каждая группа является одной строкой в результате, но представляет набор строк в исходной таблице.
Для каждой группы оцените добавляемые столбцы расширения. В отличие от функции SUMMARIZE, не выполняется подразумеваемое вычисление, и группа не помещается в контекст фильтра.
Каждый столбец, для которого определяется имя, должно иметь соответствующее выражение; в противном случае возвращается ошибка. Первый аргумент, имя, определяет имя столбца в результатах. Второй аргумент, выражение, определяет вычисление, выполняемое для получения значения для каждой строки в этом столбце.
groupBy_columnName должны находиться в таблице или в связанной таблице.
Каждое имя должно быть заключено в двойные кавычки.
Функция группирует выбранный набор строк в набор суммарных строк по значениям одного или нескольких столбцов groupBy_columnName. Для каждой группы возвращается одна строка.
GROUPBY в основном используется для выполнения агрегирования по промежуточным результатам из выражений таблиц DAX. Для эффективной агрегирования по физическим таблицам в модели рекомендуется использовать функцию SUMMARIZECOLUMNS или SUMMARIZE .
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
С ПОМОЩЬЮ CURRENTGROUP
CURRENTGROUP можно использовать только в выражении, определяющем столбец расширения в функции GROUPBY. В результате CURRENTGROUP возвращает набор строк из аргумента таблицы GROUPBY, принадлежащих текущей строке результата GROUPBY. Функция CURRENTGROUP не принимает аргументов и поддерживается только в качестве первого аргумента для одной из следующих функций агрегирования: AVERAGEX, COUNTAX, COUNTX, 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])
)