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
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.
groupBy_columnName debe estar en table o en una tabla relacionada con table.
Cada nombre debe estar entre comillas dobles.
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 |