Cómo usar DIVIDE en DAX para evitar la división por cero
Al crear medidas como el margen de beneficio, la tasa de conversión o el ticket medio, divides constantemente un valor entre otro. El problema aparece cuando el denominador es cero o está en blanco: con el operador /, Power BI devuelve un error o el valor Infinity, que estropea el visual. La función DIVIDE en DAX se creó para resolver esto y evitar cualquier error de división por cero, y es una de las primeras buenas prácticas que todo autor de informes debería dominar.
Requisitos previos
- Power BI Desktop instalado (lo mismo se aplica a Power Pivot en Excel o a Microsoft Fabric).
- Un modelo con una tabla de valores numéricos. En el ejemplo usamos una tabla
Vendas(ventas) con las columnasReceita(ingresos) yCusto(coste). - Saber crear una medida: haz clic derecho en la tabla y elige Nueva medida.
Paso 1: Entender el problema de la división por cero
Imagina que quieres calcular el margen dividiendo el beneficio entre los ingresos. Una medida directa con el operador / quedaría así:
Margem sem DIVIDE = ( SUM(Vendas[Receita]) - SUM(Vendas[Custo]) ) / SUM(Vendas[Receita])
Mientras haya ingresos, el cálculo funciona. Pero basta con que exista una fila en la que los ingresos sean 0 o estén en blanco — un producto nuevo, un mes sin ventas — para que el resultado se convierta en un error o en Infinity. En una matriz, esa celda muestra un aviso y da una imagen poco profesional del informe.
Paso 2: Conocer la sintaxis de la función DIVIDE
DIVIDE se creó precisamente para tratar estos casos. La sintaxis tiene tres argumentos, siendo el último opcional:
DIVIDE( <numerador>, <denominador> [, <resultado_alternativo>] )
Cuando el denominador es 0 o BLANK, DIVIDE no genera ningún error: devuelve el resultado alternativo. Si no indicas ninguno, el valor devuelto por defecto es BLANK. El numerador y el denominador pueden ser columnas, medidas o expresiones completas.
Paso 3: Crear la medida con DIVIDE
Vamos a reescribir el margen de forma segura. Para que el ejemplo sea legible, creamos primero dos medidas de apoyo:
Total Receita = SUM(Vendas[Receita])
Total Custo = SUM(Vendas[Custo])
Ahora el margen, ya con DIVIDE en DAX:
Margem % =
DIVIDE(
[Total Receita] - [Total Custo],
[Total Receita]
)
Siempre que los ingresos sean 0 o estén en blanco, la medida devuelve BLANK en lugar de fallar con un error. Solo falta dar formato de porcentaje a la medida, en la pestaña Herramientas de medidas, y ya la puedes usar en cualquier visual.
Paso 4: Elegir el resultado alternativo
A veces queremos mostrar un número en lugar de una celda vacía — por ejemplo, un 0 cuando todavía no hay ventas. Basta con rellenar el tercer argumento:
Margem % com zero =
DIVIDE(
[Total Receita] - [Total Custo],
[Total Receita],
0
)
La elección depende del objetivo. Deja BLANK (sin el tercer argumento) cuando quieras que los visuales oculten automáticamente las filas sin datos. Usa 0 cuando realmente necesites un número, por ejemplo para ordenar una tabla o para reutilizar el valor en otro cálculo.
Paso 5: DIVIDE en lugar del operador "/"
La diferencia se resume en dos líneas:
- El operador
/devuelve un error o Infinity cuando el denominador es 0. DIVIDEdetecta ese caso y devuelve el resultado alternativo, sin errores.
Por eso, la recomendación de Microsoft es usar DIVIDE siempre que exista la mínima posibilidad de que el denominador sea cero o nulo. En la práctica, eso significa casi todos los ratios de un informe real.
Verificar el resultado
Coloca una matriz en el informe con los productos en las filas y la medida Margem % en los valores. Asegúrate de que haya al menos un producto sin ingresos. Si comparas las dos versiones, la medida con / muestra un error o Infinity en esa fila, mientras que la medida con DIVIDE muestra una celda vacía (o 0, si usaste el tercer argumento). Si no aparece ningún aviso de error, el cálculo es correcto.
Conclusión
Con DIVIDE tendrás medidas robustas para cualquier indicador que implique un ratio — margen, tasa de conversión, ticket medio o ROI — sin preocuparte por los denominadores a cero. El siguiente paso es revisar tus medidas antiguas y sustituir los operadores / por DIVIDE donde tenga sentido. Un consejo final: prefiere dejar el resultado como BLANK cuando quieras que los gráficos ignoren por sí solos las filas sin datos. ¿Cuál de tus medidas vas a corregir primero?