SUMMARIZECOLUMNS
Применяется к:вычисляемой таблице вычисляемой таблицы Вычисление визуального элемента измерениявычисляемой таблицы
Возвращает сводную таблицу по набору групп.
Синтаксис
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
Параметры
Термин | Определение |
---|---|
groupBy_columnName | Полный справочник по столбцам (Table[Column]) базовой таблице, для которой в возвращаемую таблицу включены различные значения. Каждый столбец groupBy_columnName объединяется (разные таблицы) или автоматически существует (одна и та же таблица) с последующими указанными столбцами. |
filterTable | Табличное выражение, которое добавляется в контекст фильтра всех столбцов, указанных как groupBy_columnName аргументы. Значения, представленные в таблице фильтров, используются для фильтрации перед выполнением перекрестного соединения или автоматического существования. |
name | Строка, представляющая имя столбца, используемое для последующего выражения. |
выражение | Любое выражение DAX, возвращающее одно значение (а не таблицу). |
Возвращаемое значение
Таблица, содержащая сочетания значений из предоставленных столбцов на основе указанного группировки. В возвращаемую таблицу включены только строки, для которых по крайней мере одно из предоставленных выражений возвращает непустое значение. Если все выражения оцениваются как BLANK/NULL для строки, эта строка не включена в возвращаемую таблицу.
Замечания
Эта функция не гарантирует порядок сортировки результатов.
Столбец нельзя указать несколько раз в параметре groupBy_columnName. Например, следующая формула недопустима.
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Контекст фильтра
Обратите внимание на следующий запрос:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
В этом запросе без меры столбцы groupBy не содержат столбцов из выражения FILTER (например, из таблицы Customer). Фильтр не применяется к столбцам groupBy. Таблицы "Территория продаж" и "Клиент" могут быть косвенно связаны с помощью таблицы фактов продаж торгового посредника. Так как они не связаны напрямую, выражение фильтра является no-op, и столбцы groupBy не влияют.
Однако с этим запросом:
SUMMARIZECOLUMNS (
'Sales Territory'[Category], 'Customer' [Education],
FILTER('Customer', 'Customer'[First Name] = "Alicia")
)
Столбцы groupBy содержат столбец, который влияет на фильтр, и этот фильтр применяется к результатам groupBy.
С помощью IGNORE
Синтаксис IGNORE можно использовать для изменения поведения функции SUMMARIZECOLUMNS, пропуская определенные выражения из вычисления BLANK/NULL. Строки, для которых все выражения, не использующие значение IGNORE return BLANK/NULL, будут исключены независимо от того, будут ли выражения, использующие IGNORE, оценивать значение BLANK/NULL или нет. ИГНОРИРОВАТЬ можно использовать только в выражении SUMMARIZECOLUMNS.
Пример
SUMMARIZECOLUMNS(
Sales[CustomerId], "Total Qty",
IGNORE( SUM( Sales[Qty] ) ),
"BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 )
)
Это свертит столбец Sales[CustomerId], создав промежуточный итог для всех клиентов в заданной группе. Без IGNORE результатом является:
CustomerId | Всего Qty | BlankIfTotalQtyIsNot3 |
---|---|---|
а | 5 | |
Б | 3 | 3 |
C | 3 | 3 |
CustomerId | Всего Qty | BlankIfTotalQtyIsNot3 |
---|---|---|
Б | 3 | 3 |
C | 3 | 3 |
Все выражения игнорируются,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
Несмотря на то, что оба выражения возвращают пустое значение для некоторых строк, они включаются, так как нет неигнорированных выражений, возвращающих пустое.
CustomerId | Пробел | BlankIfTotalQtyIsNot5 |
---|---|---|
а | 5 | |
Б | ||
О |
С НЕВИЗУАЛЬНЫМ
Функция NONVISUAL обозначает фильтр значений в функции SUMMARIZECOLUMNS как не влияющую на значения меры, но применяется только к столбцам groupBy. NONVISUAL можно использовать только в выражении SUMMARIZECOLUMNS.
Пример
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
NONVISUAL(TREATAS({2007, 2008}, DimDate[CalendarYear])),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
Возвращает результат, в котором [визуальный итог продаж] — это общее количество в течение всех лет:
DimDate[CalendarYear] | [Sales] | [Визуальный итог продаж] |
---|---|---|
2007 | 9,791,060.30 | 29,358,677.22 |
2008 | 9,770,899.74 | 29,358,677.22 |
В отличие от этого, один и тот же запрос без функции NONVISUAL:
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
TREATAS({2007, 2008}, DimDate[CalendarYear]),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
Возвращает результат, в котором [визуальный итог продаж] — это общее число в течение двух выбранных лет:
DimDate[CalendarYear] | [Sales] | [Визуальный итог продаж] |
---|---|---|
2007 | 9,791,060.30 | 19,561,960.04 |
2008 | 9,770,899.74 | 19,561,960.04 |
С ROLLUPADDISSUBTOTAL
Добавление синтаксиса ROLLUPADDISSUBTOTAL изменяет поведение функции SUMMARIZECOLUMNS путем добавления строк свертки или промежуточных итогов в результат на основе столбцов groupBy_columnName. ROLLUPADDISSUBTOTAL можно использовать только в выражении SUMMARIZECOLUMNS.
Пример с одним промежуточным итогом
DEFINE
VAR vCategoryFilter =
TREATAS({"Accessories", "Clothing"}, Product[Category])
VAR vSubcategoryFilter =
TREATAS({"Bike Racks", "Mountain Bikes"}, Product[Subcategory])
EVALUATE
SUMMARIZECOLUMNS
(
ROLLUPADDISSUBTOTAL
(
Product[Category], "IsCategorySubtotal", vCategoryFilter,
Product[Subcategory], "IsSubcategorySubtotal", vSubcategoryFilter
),
"Total Qty", SUM(Sales[Qty])
)
ORDER BY
[IsCategorySubtotal] DESC, [Category],
[IsSubcategorySubtotal] DESC, [Subcategory]
Возвращает следующую таблицу:
Категория | Подкатегории | IsCategorySubtotal | IsSubcategorySubtotal | Всего Qty |
---|---|---|---|---|
Истина | Истина | 60398 | ||
Аксессуары | False | Истина | 36092 | |
Аксессуары | Багажники для велосипедов | False | False | 328 |
Велосипеды | Горные велосипеды | False | False | 4970 |
Clothing | False | Истина | 9101 |
Пример с несколькими промежуточными итогими
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
Продажи группируются по состоянию, по клиенту, по дате, с промежуточными итогими для 1. Продажи по состоянию на 2. Продажи по состоянию, клиент 3. Свернутый как на клиенте, так и на сегодняшний день, ведущий к продажам по состоянию.
Возвращает следующую таблицу:
CustomerID | IsCustomerSubtotal | State | Всего Qty | Дата | IsDateSubtotal |
---|---|---|---|---|---|
а | FALSE | WA | 5 | 7/10/2014 | |
Б | FALSE | WA | 1 | 7/10/2014 | |
Б | FALSE | WA | 2 | 7/11/2014 | |
О | FALSE | ИЛИ | 2 | 7/10/2014 | |
О | FALSE | ИЛИ | 1 | 7/11/2014 | |
TRUE | WA | 6 | 7/10/2014 | ||
TRUE | WA | 2 | 7/11/2014 | ||
TRUE | ИЛИ | 2 | 7/10/2014 | ||
TRUE | ИЛИ | 1 | 7/11/2014 | ||
а | FALSE | WA | 5 | TRUE | |
Б | FALSE | WA | 3 | TRUE | |
О | FALSE | ИЛИ | 3 | TRUE | |
TRUE | WA | 8 | TRUE | ||
TRUE | ИЛИ | 3 | TRUE |
С помощью ROLLUPGROUP
Как и с функцией SUMMARIZE , ROLLUPGROUP можно использовать вместе с ROLLUPADDISSUBTOTAL , чтобы указать, какие сводные группы или детализированные (промежуточные итоги) следует включить, уменьшая количество возвращаемых промежуточных строк. ROLLUPGROUP можно использовать только в выражении SUMMARIZECOLUMNS или SUMMARIZE .
Пример с несколькими промежуточными итогими
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
)
По-прежнему группируются по городу и штату, но свернутые вместе при составлении промежуточных итогов возвращает следующую таблицу.
State | CustomerId | IsCustomerSubtotal | Всего Qty | Город | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | а | FALSE | 2 | Bellevue | FALSE |
WA | Б | FALSE | 2 | Bellevue | FALSE |
WA | а | FALSE | 3 | Редмонд | FALSE |
WA | Б | FALSE | 1 | Редмонд | FALSE |
ИЛИ | О | FALSE | 3 | Портленд | FALSE |
WA | TRUE | 4 | Bellevue | FALSE | |
WA | TRUE | 4 | Редмонд | FALSE | |
ИЛИ | TRUE | 3 | Портленд | FALSE | |
а | FALSE | 5 | FALSE | ||
Б | FALSE | 3 | TRUE | ||
О | FALSE | 3 | TRUE | ||
TRUE | 11 | TRUE |
Связанный контент
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по