Función SUMMARIZE (DAX)

Devuelve una tabla de resumen para los totales solicitados sobre un conjunto de grupos.

Sintaxis

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

Parámetros

  • tabla
    Cualquier expresión de DAX que devuelva una tabla de datos.

  • groupBy_columnName
    (Opcional) Nombre completo de una columna existente que se utilizará para crear grupos de resumen en función de los valores situados en ella. Este parámetro no puede ser una expresión.

  • name
    Nombre dado a una columna de total o de resumen, escrito entre comillas.

  • expresión
    Cualquier expresión de DAX que devuelva un único valor escalar, con el que la expresión se va a evaluar varias veces (para cada fila y contexto).

Valor devuelto

Una tabla con las columnas seleccionadas para los argumentos de groupBy_columnName y las columnas resumidas diseñadas por los argumentos de nombre.

Comentarios

  1. Cada columna en la que se define un nombre debe tener una expresión correspondiente; en caso contrario, se devuelve un error. El primer argumento, nombre, es el nombre de la columna en el resultado. El segundo argumento, expresión, define el cálculo realizado para obtener el valor de cada fila de esa columna.

  2. groupBy_columnName debe estar en table o en una tabla relacionada con table.

  3. Cada nombre debe estar entre comillas dobles.

  4. La función agrupa un conjunto de filas seleccionado en un conjunto de filas de resumen de acuerdo con los valores de una o más columnas groupBy_columnName. Se devuelve una fila para cada grupo.

Ejemplo

En el ejemplo siguiente se devuelve un resumen de las ventas de distribuidores, agrupadas en torno al año natural y el nombre de la categoría de producto. Esta tabla de resultados permite realizar análisis sobre las ventas de distribuidor por año y categoría de producto.

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

En la tabla siguiente se muestra una vista previa de los datos que recibiría cualquier función que espere recibir una tabla:

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

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

275794.8403

4756.6546

Opciones avanzadas de SUMMARIZE

SUMMARIZE con ROLLUP

La adición de la sintaxis ROLLUP() modifica el comportamiento de la función de SUMMARIZE mediante la adición de filas acumuladas al resultado de las columnas de groupBy_columnName.

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

Parámetros de ROLLUP

  • groupBy_columnName
    Nombre completo de una columna existente que se utilizará para crear grupos de resumen en función de los valores situados en ella. Este parámetro no puede ser una expresión.

Nota: todos los demás parámetros de SUMMARIZE ya se han explicado y no se repiten aquí por razones de brevedad.

Comentarios

  • No se puede hacer referencia a las columnas mencionadas en la expresión de ROLLUP como parte de una columna de groupBy_columnName.

Ejemplo

En el ejemplo siguiente se agregan filas acumuladas a las columnas de Group-By de la llamada a la función SUMMARIZE.

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

En la tabla siguiente se muestra una vista previa de los datos que recibiría cualquier función que espere recibir una tabla:

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

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

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() se puede usar para calcular grupos de subtotales. Si se usa ROLLUP en contexto, ROLLUPGROUP arrojará el mismo resultado sumando las filas acumuladas al resultado en las columnas groupBy_columnName. Sin embargo, la adición de ROLLUPGROUP() dentro de una sintaxis de ROLLUP se puede usar para impedir subtotales parciales en las filas acumuladas.

El ejemplo siguiente muestra solo el total de todos los años y categorías sin el subtotal de cada año con todas las categorías:

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

En la tabla siguiente se muestra una vista previa de los datos que recibiría cualquier función que espere recibir una tabla:

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

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

275794.8403

4756.6546

76494758.25

527507.9262

SUMMARIZE con ISSUBTOTAL

Permite al usuario crear otra columna, en la función Summarize, que devuelve TRUE si la fila contiene valores de subtotal para la columna especificada como argumento para ISSUBTOTAL; en caso contrario, devuelve FALSE.

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)

Parámetros de ISSUBTOTAL

  • columnName
    Nombre de cualquier columna de la tabla de la función SUMMARIZE, o de cualquier columna de otra tabla relacionada con ella.

Valor devuelto

Valor de True si la fila contiene un valor de subtotal para la columna proporcionada como argumento; en caso contrario, False

Comentarios

  • ISSUBTOTAL solo se puede utilizar en la parte de expresión de una función SUMMARIZE.

  • ISSUBTOTAL deben ir precedido de una columna name correspondiente.

Ejemplo

En el ejemplo siguiente se genera una columna de ISSUBTOTAL() para cada una de las columnas de ROLLUP() de la llamada a función 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])
)

En la tabla siguiente se muestra una vista previa de los datos que recibiría cualquier función que espere recibir una tabla:

[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

Accessories

153299.924

865.5945

FALSE

FALSE

2005

Accessories

18594.4782

4.293

FALSE

FALSE

2006

Accessories

86612.7463

1061.4872

FALSE

FALSE

2007

Accessories

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