GROUPBY y CURRENTGROUP.
- Jaime Franco Jimenez
- 6 jul 2023
- 2 Min. de lectura
Vamos a empezar viendo la función GROUPBY, es similar a SUMMARIZE, pero, GROUPBY no realiza una operación CALCULATE implícita, con GROUPBY usamos la función CURRENTGROUP.
Sintaxis
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
· Tabla, es cualquier expresión DAX que devuelva una tabla.
· GroupBy_columnName, nombre de una columna existente de la tabla, o, tabla relacionada por a que se van a agrupar los datos, para este argumento no podemos poner una expresión.
· Name, nombre de la nueva columna que se va a agregar a GroupBy.
· Expresión, es una función de agregación, es decir, un iterador, donde como primer argumento es la función CURRENTGROUP, dichas funciones de agresión pueden ser AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S y VARX.P.
Veamos un ejemplo, tenemos cargado el modelo CONTOSO, compuesto de diferentes tablas relacionadas.

La tabla transaccional es la tabla ventas, donde se realizan las operaciones, el resto son tablas de hechos.
Vamos a crear una nueva tabla, donde vamos a resumir el total por producto, para ello, vamos a herramientas de tablas, y, hacemos clic en nueva tabla.

Ponemos la función GROUPBY.
Tabla = GROUPBY(
Como argumento tabla, ponemos la tabla ventas.
Tabla = GROUPBY(
Ventas
Como argumento groupBy_columnName, ponemos la columna producto de la tabla producto.
Tabla = GROUPBY(
Ventas,
Producto[Producto]
Como argumento name, ponemos, entre comillas dobles, Total.
Tabla = GROUPBY(
Ventas,
Producto[Producto],
"Total"
Como argumento expresión, vamos a poner el iterador SUMX, como argumento tabla, ponemos la función CURRENTGROUP, sin argumentos, como argumento expresión multiplicamos cantidad por preciounitario.
Cerramos paréntesis.
Tabla = GROUPBY(
Ventas,
Producto[Producto],
"Total",
SUMX(CURRENTGROUP(),Ventas[Cantidad]*Ventas[PrecioUnitario]))
Aceptamos, y, tenemos una tabla con una primera columna donde tenemos los productos, y, una segunda columna, llamada total, con las ventas de cada producto.

¿Qué es lo que hace la función GROUPBY?
Comienza por la tabla que hemos especificado, en este caso, la tabla ventas, crea una agrupación por la columna producto de la tabla producto, tenemos una fila para cada producto, damos un nombre para la nueva columna, cada columna debe de tener una expresión, o, calculo, de lo contrario nos devolverá un error, en este caso, es el iterador SUMX.
Vamos a añadir otra columna para resumir, después del argumento groupBy_columnName, ponemos coma, y, ponemos la columna canal de la tabla canal.
Tabla = GROUPBY(
Ventas,
Producto[Producto],Canal[Canal],
"Total",
SUMX(CURRENTGROUP(),Ventas[Cantidad]*Ventas[PrecioUnitario]))
Ahora, tenemos las ventas de cada producto por cada canal.

Lo siguiente es poner esta función dentro de una variable en una medida.
Agrupar =
var agrupar= GROUPBY(
Ventas,
Producto[Producto],
"Total",
SUMX(CURRENTGROUP(),Ventas[Cantidad]*Ventas[PrecioUnitario]))
Queremos calcular cual fue el máximo de ventas de productos por estado, después de la declaración de la variable, ponemos return, ponemos el iterador MAXX, el primer argumento es expresión, que es la variable, el siguiente argumento es variant, pues, ponemos la medida total.
Agrupar =
var agrupar= GROUPBY(
Ventas,
Producto[Producto],
"Total",
SUMX(CURRENTGROUP(),Ventas[Cantidad]*Ventas[PrecioUnitario]))
return
MAXX( agrupar,[Total])
Creamos una table, nos llevamos el campo estado de la tabla clientes, y, la medida, y, vemos la venta máxima para cada producto en cada estado.

Miguel Angel Franco Garcia
Commentaires