Promedio sin ceros, blancos y AVERAGEA en Power BI

Por el equipo de promedio.net · Actualizado el

En DAX, AVERAGE ignora los blancos pero cuenta los ceros. Para excluir también los ceros, filtra dentro de la medida: CALCULATE(AVERAGE(T[Valor]), T[Valor] <> 0). Para lo contrario, contar los blancos como cero, suma cero a cada fila: AVERAGEX(T, T[Valor] + 0). AVERAGEA es otra función: cuenta TRUE como 1 y FALSE y el texto como 0, y casi nunca es lo que buscas para cifras numéricas.

Qué cuenta cada opción

MedidaBlancosCeros
AVERAGE(T[Valor])IgnoradosContados
CALCULATE(AVERAGE(T[Valor]), T[Valor] <> 0)IgnoradosIgnorados
AVERAGEX(T, T[Valor] + 0)Contados como 0Contados
DIVIDE(SUM(T[Valor]), COUNTROWS(T))Contados como 0Contados

Paso a paso

  1. Revisa en la vista de tabla qué significa un blanco en tu columna: dato que no llegó o valor cero.
  2. Revisa también qué significa un cero: medición real o relleno del sistema de origen.
  3. Elige la medida de la tabla anterior según esa decisión.
  4. Pon las dos versiones (con y sin ceros) lado a lado en una tabla para ver la diferencia antes de publicar.

Tabla de ejemplo Produccion (piezas por máquina en un turno; la máquina M4 no reportó):

MáquinaPiezas
M1120
M20
M3135
M4(blanco)
M5110
M60

Ejemplos resueltos

Ejemplo 1: las tres respuestas posibles

Promedio piezas = AVERAGE ( Produccion[Piezas] )

Promedio sin ceros =
CALCULATE ( AVERAGE ( Produccion[Piezas] ), Produccion[Piezas] <> 0 )

Promedio con blancos en cero = AVERAGEX ( Produccion, Produccion[Piezas] + 0 )
MedidaCálculoResultado
Promedio piezas365 / 573
Promedio sin ceros365 / 3121.67
Promedio con blancos en cero365 / 660.83

Si M2 y M6 estuvieron paradas por mantenimiento programado, el promedio sin ceros (121.67) describe mejor lo que produce una máquina en operación. Si estuvieron paradas por fallas, el 73 es el número honesto. Y si M4 sí trabajó pero no reportó, ningún cálculo la representa bien: lo correcto es reportar cuántas máquinas entraron al promedio.

Ejemplo 2: excluir ceros con AVERAGEX

Otra forma de quitar ceros, útil cuando el valor sale de una expresión y no de una columna:

Ticket promedio sin cortesías =
AVERAGEX (
    Ventas,
    IF ( Ventas[Cantidad] * Ventas[Precio] = 0, BLANK (), Ventas[Cantidad] * Ventas[Precio] )
)

Convertir el cero en BLANK() hace que AVERAGEX lo ignore. En DAX, un blanco comparado con 0 da igual (BLANK() = 0 es verdadero), así que la condición <> 0 del ejemplo 1 también deja fuera los blancos. No pasa nada en este caso, porque AVERAGE ya los ignoraba, pero tenlo presente cuando filtres en otras medidas.

Ejemplo 3: AVERAGEA en una columna de verdadero o falso

En Power BI cada columna tiene un solo tipo de dato, así que AVERAGEA sirve sobre todo para columnas lógicas. Con una columna Pedidos[A tiempo] de tipo verdadero/falso:

Porcentaje a tiempo = AVERAGEA ( Pedidos[A tiempo] )

Porcentaje a tiempo (explícito) =
DIVIDE (
    COUNTROWS ( FILTER ( Pedidos, Pedidos[A tiempo] = TRUE () ) ),
    COUNTROWS ( Pedidos )
)

Con 8 pedidos y 6 entregados a tiempo, ambas dan 0.75; con formato de porcentaje, 75 %. AVERAGEA cuenta cada TRUE como 1 y cada FALSE como 0. La versión explícita es más larga, pero cualquiera que lea el modelo entiende qué calcula.

Las reglas de AVERAGEA

Según la documentación de Microsoft: TRUE cuenta como 1; FALSE, como 0; el texto que no es número, como 0; el texto vacío (""), como 0. AVERAGE, en cambio, ignora los valores lógicos y, si la columna es de texto, devuelve blanco. Las dos devuelven blanco si no hay filas que promediar. AVERAGEA existe sobre todo por compatibilidad con la función PROMEDIOA de Excel.

Errores comunes

Si tus datos vienen de SQL, la lógica equivalente con NULL está en AVG y NULL en SQL.

Fuentes

  1. Microsoft Learn, AVERAGE (DAX). Celdas vacías y lógicas ignoradas, ceros incluidos, texto devuelve blanco. Consultado el 11 de noviembre de 2026.
  2. Microsoft Learn, AVERAGEA (DAX). Reglas para TRUE, FALSE, texto y texto vacío. Consultado el 11 de noviembre de 2026.