Função SUMMARIZE (DAX)
Retorna uma tabela resumida para os totais solicitados em um conjunto de grupos.
Sintaxe
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
Parâmetros
table
Qualquer expressão DAX que retorna uma tabela de dados.groupBy_columnName
(Opcional) O nome qualificado de uma coluna existente a ser usado para criar grupos resumidos baseados nos valores localizados nela. Este parâmetro não pode ser uma expressão.name
O nome atribuído a uma coluna total ou resumida, entre aspas duplas.expression
Qualquer expressão DAX que retorne um único valor escalar, onde a expressão será avaliada várias vezes (para cada linha/contexto).
Valor de retorno
Uma tabela com as colunas selecionadas para os argumentos groupBy_columnName e as colunas resumidas criadas pelos argumentos de nome.
Comentários
Cada coluna para a qual você define um nome deve ter uma expressão correspondente; caso contrário, um erro será retornado. O primeiro argumento, name, define o nome da coluna nos resultados. O segundo argumento, expression, define o cálculo executado para obter o valor para cada linha dessa coluna.
groupBy_columnName deve estar em table ou em uma tabela relacionada a table.
Cada nome deve estar entre aspas duplas.
A função agrupa um conjunto de linhas selecionadas em um conjunto de linhas resumidas pelos valores de uma ou mais colunas groupBy_columnName. Uma linha é retornada para cada grupo.
Exemplo
O exemplo a seguir retorna um resumo das vendas de revendedor agrupadas em relação ao ano civil e ao nome de categoria de produto; esta tabela de resultados permite fazer a análise das vendas de revendedor por ano e categoria de produto.
SUMMARIZE(ResellerSales_USD
, DateTime[CalendarYear]
, ProductCategory[ProductCategoryName]
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
A seguinte tabela mostra uma visualização dos dados como seriam recebidos por qualquer função que espera receber uma tabela:
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (USD)] |
2008 |
Bikes |
12968255.42 |
36167.6592 |
2005 |
Bikes |
6958251.043 |
4231.1621 |
2006 |
Bikes |
18901351.08 |
178175.8399 |
2007 |
Bikes |
24256817.5 |
276065.992 |
2008 |
Componentes |
2008052.706 |
39.9266 |
2005 |
Componentes |
574256.9865 |
0 |
2006 |
Componentes |
3428213.05 |
948.7674 |
2007 |
Componentes |
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 |
Acessórios |
153299.924 |
865.5945 |
2005 |
Acessórios |
18594.4782 |
4.293 |
2006 |
Acessórios |
86612.7463 |
1061.4872 |
2007 |
Acessórios |
275794.8403 |
4756.6546 |
Opções SUMMARIZE avançadas
SUMMARIZE com ROLLUP
A adição da sintaxe ROLLUP() modifica o comportamento da função SUMMARIZE, adicionando linhas de rollup ao resultado nas colunas de groupBy_columnName.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)
Parâmetros ROLLUP
- groupBy_columnName
O nome qualificado de uma coluna existente a ser usado para criar grupos resumidos baseados nos valores localizados nela. Este parâmetro não pode ser uma expressão.
Observação: como todos os outros parâmetros SUMMARIZE foram explicados anteriormente, eles não se encontram aqui.
Comentários
- As colunas mencionadas na expressão ROLLUP não podem ser referenciadas como parte de colunas groupBy_columnName.
Exemplo
O exemplo a seguir acrescenta linhas de acúmulo às colunas Group-By da chamada de função SUMMARIZE.
SUMMARIZE(ResellerSales_USD
, ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
A seguinte tabela mostra uma visualização dos dados como seriam recebidos por qualquer função que espera receber uma tabela:
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (USD)] |
2008 |
Bikes |
12968255.42 |
36167.6592 |
2005 |
Bikes |
6958251.043 |
4231.1621 |
2006 |
Bikes |
18901351.08 |
178175.8399 |
2007 |
Bikes |
24256817.5 |
276065.992 |
2008 |
Componentes |
2008052.706 |
39.9266 |
2005 |
Componentes |
574256.9865 |
0 |
2006 |
Componentes |
3428213.05 |
948.7674 |
2007 |
Componentes |
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 |
Acessórios |
153299.924 |
865.5945 |
2005 |
Acessórios |
18594.4782 |
4.293 |
2006 |
Acessórios |
86612.7463 |
1061.4872 |
2007 |
Acessórios |
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() pode ser usado para calcular grupos de subtotais. Se ele for usado no lugar de ROLLUP(), ROLLUPGROUP gerará o mesmo resultado, adicionando linhas de rollup ao resultado nas colunas de groupBy_columnName. Entretanto, a adição de ROLLUPGROUP() em uma sintaxe ROLLUP pode ser usada para evitar subtotais parciais em linhas de rollup.
O seguinte exemplo mostra apenas o total geral de todos os anos e categorias sem o subtotal de cada ano com todas as categorias:
SUMMARIZE(ResellerSales_USD
, ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
A seguinte tabela mostra uma visualização dos dados como seriam recebidos por qualquer função que espera receber uma tabela:
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (USD)] |
2008 |
Bikes |
12968255.42 |
36167.6592 |
2005 |
Bikes |
6958251.043 |
4231.1621 |
2006 |
Bikes |
18901351.08 |
178175.8399 |
2007 |
Bikes |
24256817.5 |
276065.992 |
2008 |
Componentes |
2008052.706 |
39.9266 |
2005 |
Componentes |
574256.9865 |
0 |
2006 |
Componentes |
3428213.05 |
948.7674 |
2007 |
Componentes |
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 |
Acessórios |
153299.924 |
865.5945 |
2005 |
Acessórios |
18594.4782 |
4.293 |
2006 |
Acessórios |
86612.7463 |
1061.4872 |
2007 |
Acessórios |
275794.8403 |
4756.6546 |
76494758.25 |
527507.9262 |
SUMMARIZE com ISSUBTOTAL
Habilita o usuário a criar outra coluna, na função Summarize, que retorna True quando a linha contém valores subtotais para a coluna atribuídos como um argumento a ISSUBTOTAL; caso contrário, retorna False.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)
Parâmetros ISSUBTOTAL
- columnName
O nome de qualquer coluna da tabela da função SUMMARIZE ou qualquer coluna em uma tabela relacionada à tabela.
Valor de retorno
Um valor True se a linha contiver um valor subtotal da coluna atribuída como argumento; caso contrário, retorna False
Comentários
ISSUBTOTAL só pode ser usado na parte de expressão de uma função SUMMARIZE.
ISSUBTOTAL deve ser precedido de uma coluna name correspondente.
Exemplo
O exemplo a seguir gera uma coluna de ISSUBTOTAL() para cada uma das colunas de ROLLUP() na chamada de função SUMMARIZE() especificada.
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])
)
A seguinte tabela mostra uma visualização dos dados como seriam recebidos por qualquer função que espera receber uma tabela:
[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 |
Bikes |
12968255.42 |
36167.6592 |
FALSE |
FALSE |
2005 |
Bikes |
6958251.043 |
4231.1621 |
FALSE |
FALSE |
2006 |
Bikes |
18901351.08 |
178175.8399 |
FALSE |
FALSE |
2007 |
Bikes |
24256817.5 |
276065.992 |
FALSE |
FALSE |
2008 |
Componentes |
2008052.706 |
39.9266 |
FALSE |
FALSE |
2005 |
Componentes |
574256.9865 |
0 |
FALSE |
FALSE |
2006 |
Componentes |
3428213.05 |
948.7674 |
FALSE |
FALSE |
2007 |
Componentes |
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 |
Acessórios |
153299.924 |
865.5945 |
FALSE |
FALSE |
2005 |
Acessórios |
18594.4782 |
4.293 |
FALSE |
FALSE |
2006 |
Acessórios |
86612.7463 |
1061.4872 |
FALSE |
FALSE |
2007 |
Acessórios |
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 |