Partilhar via


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

  1. 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.

  2. groupBy_columnName deve estar em table ou em uma tabela relacionada a table.

  3. Cada nome deve estar entre aspas duplas.

  4. 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