DAX: Lógicas y Condicionales – Decil10.com

DAX: Lógicas y Condicionales

Control de Flujo y Toma de Decisiones – Decil.com

Inteligencia en los Datos

Las funciones lógicas permiten que tus reportes no solo sumen números, sino que interpreten la realidad del negocio. Desde categorizar clientes según su volumen de compra hasta manejar errores de cálculo o valores nulos, estas funciones son las que transforman una tabla estática en una herramienta de Business Intelligence capaz de responder preguntas complejas bajo diferentes escenarios.

IF
Medida Columna
Explicación Técnica
Es la función condicional más básica. Evalúa una prueba lógica y devuelve un valor si el resultado es verdadero y otro si es falso. Se puede anidar (un IF dentro de otro), aunque para más de dos condiciones se recomienda el uso de SWITCH por rendimiento y legibilidad.
Ejemplo Práctico: Cumplimiento de Metas
DAX – Condición Simple
Estado Meta = IF([Ingreso Total Bruto] >= 5000000, “Meta Cumplida”, “Pendiente”)
Contexto: Evalúa si la venta acumulada ha superado los 5 millones de pesos. Si es así, marca el registro como cumplido; de lo contrario, lo mantiene como pendiente.
SWITCH
Medida Columna
Explicación Técnica
Evalúa una expresión contra una lista de valores y devuelve el resultado correspondiente al primer valor coincidente. Es extremadamente potente cuando se usa con TRUE() como primer argumento, permitiendo evaluar múltiples condiciones lógicas independientes en un solo bloque de código.
SWITCH vs IF Anidado: Siempre prefiere SWITCH cuando tengas 3 o más condiciones. Es más fácil de depurar y mantener en el tiempo.
Ejemplo Práctico: Segmentación Geográfica Chile
DAX – Condición Múltiple
Zona Chile = SWITCH( TRUE(), Geografia[Region] = “Arica”, “Norte”, Geografia[Region] = “Maule”, “Centro”, Geografia[Region] = “Biobío”, “Sur”, “Extranjero” )
Contexto: Clasifica automáticamente las sucursales en macrozonas del país según la región registrada en la tabla de Geografía.
AND / OR
Medida
Explicación Técnica
Permiten combinar múltiples pruebas lógicas.
AND (&&): Devuelve verdadero solo si TODAS las condiciones se cumplen.
OR (||): Devuelve verdadero si al menos UNA de las condiciones se cumple.
En DAX moderno, es una mejor práctica usar los símbolos && y || en lugar de las funciones de texto, ya que permiten combinar más de dos condiciones a la vez.
Ejemplo Práctico: Campañas Especiales
DAX – Lógica Combinada
Filtro Campaña = IF( [Ingreso Total Bruto] > 1000000 && Producto[Tipo] = “Vino Tinto”, “Prioridad Alta”, “Regular” )
Contexto: Identifica ventas de “Vino Tinto” que además superen el millón de pesos para asignarles una categoría de prioridad en el seguimiento comercial.
IN
Medida
Explicación Técnica
El operador IN verifica si un valor existe dentro de una lista de valores proporcionada (entre llaves {}). Es mucho más eficiente que escribir múltiples OR seguidos cuando quieres comparar una columna contra varios valores posibles.
Ejemplo Práctico: Filtro de Regiones Clave
DAX – Operador de Pertenencia
Es Zona Central = Geografia[Region] IN {“Valparaíso”, “Metropolitana”, “Maule”}
Contexto: Devuelve un valor lógico (Verdadero/Falso) si la región de la fila actual pertenece a la lista de regiones que componen la zona central de Chile.
NOT
Medida
Explicación Técnica
Invierte el valor lógico de una expresión. Si una condición es verdadera, NOT la convierte en falsa. Es extremadamente útil para crear filtros de exclusión (ej. “Todo excepto esto”).
Ejemplo Práctico: Exclusión de Productos
DAX – Inversión Lógica
Venta Sin Alcohol = CALCULATE( [Ingreso Total Bruto], NOT(Producto[Tipo] IN {“Vino Tinto”, “Pisco”, “Cerveza”}) )
Contexto: Calcula el total de ventas excluyendo todas las categorías de bebidas alcohólicas definidas en la lista.
DIVIDE
Medida
Explicación Técnica
Realiza una división segura que maneja automáticamente el error de división por cero. Si el denominador es cero o nulo, la función devuelve un resultado alternativo (por defecto BLANK), evitando que el reporte muestre errores visuales.
Regla de Oro: Nunca uses el operador / para divisiones en DAX. Siempre usa DIVIDE para asegurar la estabilidad de tus dashboards.
Ejemplo Práctico: Rentabilidad
DAX – División Segura
Margen % = DIVIDE([Utilidad], [Ingreso Total Bruto], 0)
Contexto: Calcula el porcentaje de margen. Si en un periodo no hubo ventas (Ingreso = 0), la función devolverá 0 en lugar de un error.
COALESCE
Medida
Explicación Técnica
Devuelve la primera expresión de una lista que no sea BLANK. Es vital para limpiar reportes donde los valores vacíos pueden confundir al usuario o romper la visualización de gráficos de líneas.
Ejemplo Práctico: Limpieza de Vacíos
DAX – Manejo de Nulos
Venta Final Display = COALESCE([Ingreso Total Bruto], 0)
Contexto: Si una sucursal no tuvo ventas en un mes, el reporte normalmente mostraría un espacio vacío. Con COALESCE, forzamos a que muestre un 0, manteniendo la integridad visual.
ISBLANK
Medida
Explicación Técnica
Verifica si un valor o expresión es BLANK (vacío). Devuelve un valor lógico Verdadero o Falso. Es la herramienta principal para validar la integridad de los datos antes de realizar cálculos.
Ejemplo Práctico: Validación de Descuentos
DAX – Verificación de Vacío
Aplicó Descuento = IF(ISBLANK(Ventas[Descuento]), “Precio Full”, “Oferta”)
Contexto: Clasifica cada transacción. Si la columna Descuento está vacía, se asume que se vendió a precio completo.
IFERROR
Medida
Explicación Técnica
Evalúa una expresión y devuelve un valor alternativo si la expresión original arroja cualquier tipo de error (no solo división por cero, sino errores de tipo de dato o cálculos imposibles).
Uso Moderado: No abuses de IFERROR para ocultar problemas de calidad de datos en tu modelo. Úsalo solo como última línea de defensa en cálculos altamente volátiles.
Ejemplo Práctico: Blindaje de Cálculos
DAX – Control de Errores
Cálculo Seguro = IFERROR([Medida Compleja], 0)