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]
)
Este cálculo no se puede hacer con un simple SUM, porque necesita multiplicar dos columnas por cada fila.Otro ejemplo útil:


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”).
Ejemplo de "CONCATENATEX":

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.

Errores comunes

  • Intentar hacer "SUM(Ventas[Cantidad] * Ventas[Precio])" → Error. Hay que usar "SUMX".
  • Usar COUNT" cuando se necesita contar filas → Mejor COUNTROWS".
  • Olvidar que DISTINCTCOUNT" es más costoso que COUNTROWS" en tablas grandes.
  • Usar columnas calculadas para totales generales, mejor crear medidas.