Прочитать на английском

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


SUMMARIZE

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

Возвращает сводную таблицу для запрошенных итогов по набору групп.

Синтаксис

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

Параметры

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

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

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

Замечания

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

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

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

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

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

Пример

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

DAX
SUMMARIZE(ResellerSales_USD  
      , DateTime[CalendarYear]  
      , ProductCategory[ProductCategoryName]  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
      )  

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

DateTime[CalendarYear] ProductCategory[ProductCategoryName] [Сумма продаж (USD)] [Сумма скидки (USD)]
2008 Велосипеды 12968255.42 36167.6592
2005 Велосипеды 6958251.043 4231.1621
2006 Велосипеды 18901351.08 178175.8399
2007 Велосипеды 24256817.5 276065.992
2008 Компоненты 2008052.706 39.9266
2005 Компоненты 574256.9865 0
2006 Компоненты 3428213.05 948.7674
2007 Компоненты 5195315.216 4226.0444
2008 Clothing 366507.844 4151.1235
2005 Clothing 31851.1628 90.9593
2006 Clothing 455730.9729 4233.039
2007 Clothing 815853.2868 12489.3835
2008 Аксессуары 153299.924 865.5945
2005 Аксессуары 18594.4782 4.293
2006 Аксессуары 86612.7463 1061.4872
2007 Аксессуары 275794.8403 4756.6546

С накопительным пакетом

Добавление синтаксиса ROLLUP изменяет поведение функции СУММКE путем добавления строк свертки в результат в столбцы groupBy_columnName. ROLLUP можно использовать только в выражении SUMMARIZE.

Пример

В следующем примере добавляются строки свертки в столбцы вызова функции СУММТE:

DAX
SUMMARIZE(ResellerSales_USD  
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
)  

Возвращает следующую таблицу:

DateTime[CalendarYear] ProductCategory[ProductCategoryName] [Сумма продаж (USD)] [Сумма скидки (USD)]
2008 Велосипеды 12968255.42 36167.6592
2005 Велосипеды 6958251.043 4231.1621
2006 Велосипеды 18901351.08 178175.8399
2007 Велосипеды 24256817.5 276065.992
2008 Компоненты 2008052.706 39.9266
2005 Компоненты 574256.9865 0
2006 Компоненты 3428213.05 948.7674
2007 Компоненты 5195315.216 4226.0444
2008 Clothing 366507.844 4151.1235
2005 Clothing 31851.1628 90.9593
2006 Clothing 455730.9729 4233.039
2007 Clothing 815853.2868 12489.3835
2008 Аксессуары 153299.924 865.5945
2005 Аксессуары 18594.4782 4.293
2006 Аксессуары 86612.7463 1061.4872
2007 Аксессуары 275794.8403 4756.6546
2008 15496115.89 41224.3038
2005 7582953.67 4326.4144
2006 22871907.85 184419.1335
2007 30543780.84 297538.0745
76494758.25 527507.9262

С помощью ROLLUPGROUP

Добавление ROLLUPGROUP в синтаксис ROLLUP можно использовать для предотвращения частичных промежуточных итогов в строках свертки. ROLLUPGROUP можно использовать только в выражении ROLLUP, ROLLUPADDISSUBTOTAL или ROLLUPISSUBTOTAL.

Пример

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

DAX
SUMMARIZE(ResellerSales_USD  
      , ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
)  

Возвращает следующую таблицу:

DateTime[CalendarYear] ProductCategory[ProductCategoryName] [Сумма продаж (USD)] [Сумма скидки (USD)]
2008 Велосипеды 12968255.42 36167.6592
2005 Велосипеды 6958251.043 4231.1621
2006 Велосипеды 18901351.08 178175.8399
2007 Велосипеды 24256817.5 276065.992
2008 Компоненты 2008052.706 39.9266
2005 Компоненты 574256.9865 0
2006 Компоненты 3428213.05 948.7674
2007 Компоненты 5195315.216 4226.0444
2008 Clothing 366507.844 4151.1235
2005 Clothing 31851.1628 90.9593
2006 Clothing 455730.9729 4233.039
2007 Clothing 815853.2868 12489.3835
2008 Аксессуары 153299.924 865.5945
2005 Аксессуары 18594.4782 4.293
2006 Аксессуары 86612.7463 1061.4872
2007 Аксессуары 275794.8403 4756.6546
76494758.25 527507.9262

С ISSUBTOTAL

С помощью ISSUBTOTAL можно создать другой столбец в выражении SUMMARIZE, возвращающий значение True, если строка содержит промежуточные значения столбца, заданного в качестве аргумента ISSUBTOTAL, в противном случае возвращает значение False. ISSUBTOTAL можно использовать только в выражении SUMMARIZE.

Пример

В следующем примере создается столбец ISSUBTOTAL для каждого столбца ROLLUP в заданном вызове функции SUMMARIZE:

DAX
SUMMARIZE(ResellerSales_USD  
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
      , "Is Sub Total for DateTimeCalendarYear", ISSUBTOTAL(DateTime[CalendarYear])  
      , "Is Sub Total for ProductCategoryName", ISSUBTOTAL(ProductCategory[ProductCategoryName])  
)  

Возвращает следующую таблицу:

[Общее значение для DateTimeCalendarYear] [Вложено общее значение для ProductCategoryName] DateTime[CalendarYear] ProductCategory[ProductCategoryName] [Сумма продаж (USD)] [Сумма скидки (USD)]
FALSE FALSE
FALSE FALSE 2008 Велосипеды 12968255.42 36167.6592
FALSE FALSE 2005 Велосипеды 6958251.043 4231.1621
FALSE FALSE 2006 Велосипеды 18901351.08 178175.8399
FALSE FALSE 2007 Велосипеды 24256817.5 276065.992
FALSE FALSE 2008 Компоненты 2008052.706 39.9266
FALSE FALSE 2005 Компоненты 574256.9865 0
FALSE FALSE 2006 Компоненты 3428213.05 948.7674
FALSE FALSE 2007 Компоненты 5195315.216 4226.0444
FALSE FALSE 2008 Clothing 366507.844 4151.1235
FALSE FALSE 2005 Clothing 31851.1628 90.9593
FALSE FALSE 2006 Clothing 455730.9729 4233.039
FALSE FALSE 2007 Clothing 815853.2868 12489.3835
FALSE FALSE 2008 Аксессуары 153299.924 865.5945
FALSE FALSE 2005 Аксессуары 18594.4782 4.293
FALSE FALSE 2006 Аксессуары 86612.7463 1061.4872
FALSE FALSE 2007 Аксессуары 275794.8403 4756.6546
FALSE TRUE
FALSE TRUE 2008 15496115.89 41224.3038
FALSE TRUE 2005 7582953.67 4326.4144
FALSE TRUE 2006 22871907.85 184419.1335
FALSE TRUE 2007 30543780.84 297538.0745
TRUE TRUE 76494758.25 527507.9262

SUMMARIZECOLUMNS