Функция SUMMARIZE (DAX)
Возвращает сводную таблицу с запрошенными итогами для набора групп.
Синтаксис
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
Параметры
table
Любое выражение DAX, возвращающее таблицу данных.groupBy_columnName
(Необязательно) Полное имя существующего столбца, которое используется для создания суммарных групп на основе находящихся в нем значений. Этот параметр не может быть выражением.name
Имя, присвоенное столбцу итогов или сводки, заключенное в двойные кавычки.expression
Любое выражение DAX, возвращающее одно скалярное значение, в котором выражение вычисляется несколько раз (для каждой строки или контекста).
Возвращаемое значение
Таблица с выбранными столбцами в качестве аргументов groupBy_columnName и столбцами итогов, созданными с использованием аргументов name.
Замечания
Каждому столбцу, для которого определяется имя, должно соответствовать выражение, в противном случае возвращается ошибка. Первый аргумент (name) определяет имя столбца в результатах. Второй аргумент (expression) определяет вычисления, выполняемые для получения значения для всех строк в этом столбце.
Столбец groupBy_columnName должен существовать в таблице table или в таблице, связанной с таблицей table.
Все имена должны заключаться в двойные кавычки ("").
Функция группирует выбранные наборы строк в набор строк итогов, используя значения одного или нескольких столбцов groupBy_columnName. Возвращается одна строка для каждой группы.
Пример
В следующем примере возвращаются итоги продаж посредника, сгруппированные по календарному году и названию категории продукта. Полученная таблица позволяет выполнять анализ данных о продажах поставщика по различным показателям: году и категории продукта.
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] |
[Sales Amount (USD)] |
[Discount Amount (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 |
Одежда |
366507.844 |
4151.1235 |
2005 |
Одежда |
31851.1628 |
90.9593 |
2006 |
Одежда |
455730.9729 |
4233.039 |
2007 |
Одежда |
815853.2868 |
12489.3835 |
2008 |
Принадлежности |
153299.924 |
865.5945 |
2005 |
Принадлежности |
18594.4782 |
4.293 |
2006 |
Принадлежности |
86612.7463 |
1061.4872 |
2007 |
Принадлежности |
275794.8403 |
4756.6546 |
Дополнительные параметры SUMMARIZE
SUMMARIZE с ROLLUP
Добавление синтаксиса ROLLUP() изменяет поведение функции SUMMARIZE путем добавления строк свертки к результату в столбцах groupBy_columnName.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)
Параметры ROLLUP
- groupBy_columnName
Полное имя существующего столбца, который будет использоваться для создания групп на основе найденных в нем значений. Этот параметр не может быть выражением.
Примечание: Все остальные параметры SUMMARIZE описываются выше, и их описание не приводится в этом разделе для краткости.
Замечания
- На столбцы, указанные в выражении ROLLUP, нельзя ссылаться как на часть столбцов groupBy_columnName.
Пример
В следующем примере строки свертки добавляются к столбцам Group-By вызова функции SUMMARIZE.
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] |
[Sales Amount (USD)] |
[Discount Amount (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 |
Одежда |
366507.844 |
4151.1235 |
2005 |
Одежда |
31851.1628 |
90.9593 |
2006 |
Одежда |
455730.9729 |
4233.039 |
2007 |
Одежда |
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 возвращает тот же результат путем добавления строк свертки к результатам в столбцах groupBy_columnName. Но для предотвращения появления частичных подытогов в строках свертки можно дополнительно вводить ROLLUPGROUP() в конструкции ROLLUP.
В следующем примере показан только общий итог по всем годам и категориям без подытога по каждому году со всеми категориями:
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] |
[Sales Amount (USD)] |
[Discount Amount (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 |
Одежда |
366507.844 |
4151.1235 |
2005 |
Одежда |
31851.1628 |
90.9593 |
2006 |
Одежда |
455730.9729 |
4233.039 |
2007 |
Одежда |
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 |
SUMMARIZE с ISSUBTOTAL
Позволяет пользователю создавать дополнительный столбец в функции Summarize, возвращающий значение True, если строка содержит значение подытогов для столбца, заданного в качестве аргумента для ISSUBTOTAL. В противном случае возвращается значение False.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)
Параметры ISSUBTOTAL
- columnName
Имя любого столбца в таблице функции SUMMARIZE или любого столбца в связанной таблице.
Возвращаемое значение
Значение True, если строка содержит значение подытогов для столбца, заданного в качестве аргумента, в противном случае — значение False
Замечания
ISSUBTOTAL может использоваться только в части выражения функции SUMMARIZE.
Инструкции ISSUBTOTAL должен предшествовать соответствующий столбец name.
Пример
В следующем образце создается столбец ISSUBTOTAL() для каждого из столбцов ROLLUP() в вызове функции SUMMARIZE().
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])
)
Следующая таблица содержит данные в виде, в котором они будут получены любой функцией, ожидающей получения таблицы.
[Is Sub Total for DateTimeCalendarYear] |
[Is Sub Total for ProductCategoryName] |
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (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 |
Одежда |
366507.844 |
4151.1235 |
FALSE |
FALSE |
2005 |
Одежда |
31851.1628 |
90.9593 |
FALSE |
FALSE |
2006 |
Одежда |
455730.9729 |
4233.039 |
FALSE |
FALSE |
2007 |
Одежда |
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 |