Promedio ponderado en Power BI (DAX)

Por el equipo de promedio.net · Actualizado el

DAX no tiene una función de promedio ponderado, pero se escribe con una medida: DIVIDE(SUMX(Tabla, Tabla[Valor] * Tabla[Peso]), SUM(Tabla[Peso])). SUMX multiplica cada valor por su peso fila por fila y suma los productos; DIVIDE los divide entre la suma de los pesos y devuelve blanco, en lugar de un error, si los pesos suman cero. Como es una medida, se recalcula sola para cada categoría, mes o filtro del informe.

Sintaxis

Promedio ponderado =
DIVIDE (
    SUMX ( Tabla, Tabla[Valor] * Tabla[Peso] ),
    SUM ( Tabla[Peso] )
)

DIVIDE(numerador, denominador, [resultado_alternativo]) devuelve BLANK() cuando el denominador es 0, salvo que indiques un tercer argumento constante. Usar / en lugar de DIVIDE produce infinito o un error en esos casos.

Paso a paso

  1. Identifica la columna del valor (precio, calificación) y la del peso (cantidad, créditos).
  2. Crea una Nueva medida con la fórmula de arriba.
  3. Si los pesos están en otra tabla relacionada, tráelos dentro de SUMX con RELATED.
  4. Pon la medida en una tabla con la dimensión que te interese y compara con AVERAGE(Tabla[Valor]).
  5. Comprueba un total a mano o con la calculadora.

Ejemplos resueltos

Ejemplo 1: precio promedio pagado por unidad

Con la tabla Ventas de la página de AVERAGE y AVERAGEX (8 renglones, 28 unidades, 934 pesos):

Precio promedio ponderado =
DIVIDE (
    SUMX ( Ventas, Ventas[Precio] * Ventas[Cantidad] ),
    SUM ( Ventas[Cantidad] )
)
CategoríaPrecio ponderadoAVERAGE(Precio)
Abarrotes33.0658.00
Limpieza33.9044.00
Total33.3651.00

En Abarrotes, el promedio simple de precios (58) lo inflan los dos renglones de café a 95, pero la mayoría de las unidades vendidas fueron galletas a 20 o 22. El ponderado, 595 / 18 = 33.06, es lo que realmente se cobró por unidad. Observa que el total (33.36) no es el promedio de 33.06 y 33.90: la medida se recalcula con todas las filas, no promedia las filas del visual.

Ejemplo 2: promedio por créditos

Tabla Kardex con una fila por alumno y materia:

AlumnoMateriaCalificaciónCréditos
PabloÁlgebra8.06
PabloRedacción9.54
PabloFísica7.08
SaraÁlgebra9.06
SaraRedacción8.54
SaraFísica9.58
Promedio por créditos =
DIVIDE (
    SUMX ( Kardex, Kardex[Calificación] * Kardex[Créditos] ),
    SUM ( Kardex[Créditos] )
)

Pablo obtiene (48 + 38 + 56) / 18 = 7.89 y Sara (54 + 34 + 76) / 18 = 9.11. Sus promedios simples son 8.17 y 9.00: a Pablo lo baja el 7 en Física, la materia de más créditos. Si la universidad trunca en lugar de redondear, aplica TRUNC([Promedio por créditos], 1) en otra medida.

Ejemplo 3: el peso está en otra tabla

Si la tabla Ventas solo tiene Cantidad y el precio de lista vive en la dimensión Productos, relacionada por producto:

Precio de lista ponderado =
DIVIDE (
    SUMX ( Ventas, Ventas[Cantidad] * RELATED ( Productos[Precio lista] ) ),
    SUM ( Ventas[Cantidad] )
)

RELATED trae, para cada renglón de Ventas, el precio del producto correspondiente. Funciona porque SUMX recorre la tabla del lado «muchos» de la relación. Si la relación no existe o va en la dirección contraria, DAX muestra un error que indica que la columna no existe o no tiene relación con la tabla actual.

Errores comunes

Comprueba un caso pequeño con la calculadora de promedio ponderado. La versión de hoja de cálculo con SUMAPRODUCTO está en promedio ponderado en Excel.

Fuentes

  1. Microsoft Learn, SUMX (DAX). Suma de una expresión evaluada fila por fila. Consultado el 11 de noviembre de 2026.
  2. Microsoft Learn, DIVIDE (DAX). Resultado alternativo por omisión BLANK(). Consultado el 11 de noviembre de 2026.