FUNCIONES DE AGREGACIÓN EN POWER BI
Las funciones de agregación son el corazón de casi todos los cálculos en Power BI. Permiten resumir grandes volúmenes de datos en un solo valor, como suma, promedio, máximo, conteo, etc., y son fundamentales tanto en medidas como en columnas calculadas.¿Qué son las funciones de agregación?
Son funciones DAX que toman una columna, o una expresión, y devuelven un único valor resumido. Se dividen en dos grandes grupos:- Funciones de agregación simples, no iteradoras.
- Funciones iteradoras, terminan en "X".
Funciones de Agregación Simples
Estas funciones operan directamente sobre una columna y son las más fáciles de usar.| Función | Descripción | Ejemplo |
|---|---|---|
| SUM | Suma todos los valores numéricos | "SUM(Ventas[Importe])" |
| AVERAGE | Calcula el promedio | "AVERAGE(Ventas[Importe])" |
| MIN | Devuelve el valor mínimo | "MIN(Ventas[Fecha])" |
| MAX | Devuelve el valor máximo | "MAX(Ventas[Importe])" |
| COUNT | Cuenta las celdas que contienen números | "COUNT(Ventas[Cantidad])" |
| COUNTA | Cuenta las celdas que no están en blanco | "COUNTA(Clientes[Nombre])" |
| COUNTBLANK | Cuenta las celdas en blanco | "COUNTBLANK(Ventas[Descuento])" |
| COUNTROWS | Cuenta el número de filas de una tabla | "COUNTROWS(Ventas)" |
| DISTINCTCOUNT | Cuenta valores únicos (muy usada) | "DISTINCTCOUNT(Ventas[ID Cliente])" |
| PRODUCT | Multiplica todos los valores | "PRODUCT(Tabla[Factor])" |
Ejemplos prácticos:
Total Ventas = SUM(Ventas[Importe])
Promedio Ticket = AVERAGE(Ventas[Importe])
Clientes Únicos = DISTINCTCOUNT(Ventas[ID Cliente])
Número de Transacciones = COUNTROWS(Ventas)
Funciones Iteradoras (terminadas en X)
Estas funciones son más potentes. Recorren fila por fila una tabla y evalúan una expresión en cada fila antes de agregar el resultado.| Función | Descripción | Cuándo usarla |
|---|---|---|
| "SUMX" | Suma el resultado de una expresión | Cálculos fila a fila (cantidad × precio) |
| "AVERAGEX" | Promedio de una expresión | Promedio ponderado o calculado |
| "MINX" | Mínimo de una expresión | - |
| "MAXX" | Máximo de una expresión | - |
| "COUNTX" | Cuenta resultados no en blanco de una expresión | - |
| "COUNTAX" | Versión de COUNTA iteradora | - |
| "PRODUCTX" | Multiplica resultados de una expresión | - |
| "MEDIANX" | Mediana de una expresión | - |
| "CONCATENATEX" | Concatena texto (aunque no es numérica) | Listas de valores |
Ejemplo clásico de SUMX
Total Importe = SUMX(
Ventas,
Ventas[Cantidad] * Ventas[Precio Unitario]
)
Promedio de Margen = AVERAGEX(
Ventas,
DIVIDE(Ventas[Beneficio], Ventas[Importe])
)
Diferencia clave: SUM vs SUMX
| Aspecto | SUM | SUMX |
|---|---|---|
| Tipo | Agregación simple | Iteradora |
| Argumento | Solo una columna | Tabla + Expresión |
| Uso principal | Sumar una columna existente | Calcular algo fila por fila |
| Rendimiento | Más rápido | Un poco más lento (pero necesario) |
| Ejemplo | "SUM(Ventas[Importe])" | "SUMX(Ventas, [Cantidad]*[Precio])" |
Regla práctica
Usar la versión simple, como "SUM"," AVERAGE"…, siempre que se pueda. Usat la versión X solo cuando se necesite evaluar una expresión por cada fila.Otras funciones de agregación útiles
- "MEDIAN": / "MEDIANX": Calculan la mediana (muy útil cuando hay valores extremos).
- "PERCENTILE.INC" / "PERCENTILEX.INC": Calculan percentiles.
- "RANKX": Aunque es de ranking, se usa mucho junto con agregaciones.
- "CONCATENATEX": Permite crear listas de texto agregadas (ej. “Productos vendidos: A, B, C”).
Lista Productos = CONCATENATEX(
VALUES(Productos[Nombre]),
Productos[Nombre],
", "
)
Buenas prácticas
- Usar medidas en lugar de columnas calculadas para agregaciones, mejor rendimiento y flexibilidad.
- Usar "DIVIDE" dentro de las expresiones iteradoras para evitar errores de división por cero.
- Combinar agregaciones con "CALCULATE" para crear cálculos con filtros:
Ventas Online = CALCULATE( SUM(Ventas[Importe]), Ventas[Canal] = "Online" )
- Cuando se usen funciones X, evita tablas muy grandes sin filtrar, puede afectar el rendimiento.
- Documentar las medidas, en el panel de propiedades.