🧠 Análisis DAX — IF vs SWITCH (Extendido)

1️⃣ IF — Lógica Condicional Binaria

La función IF evalúa una condición lógica y devuelve uno de dos resultados. Es directa, clara y muy útil cuando el modelo necesita tomar decisiones simples.

IF( logical_test, value_if_true, value_if_false )

✔️ Casos ideales de uso

📌 Ejemplos prácticos (5 samples)

// 1. Clasificación simple
Status =
IF ( [Sales] > 100000, "High", "Low" )
// 2. Validación de datos nulos
Valid Flag =
IF ( ISBLANK([Amount]), "Missing", "OK" )
// 3. Control de margen
Margin Check =
IF ( [Margin %] > 0.25, "Healthy", "Risk" )
// 4. KPI On/Off
KPI Status =
IF ( [Actual] >= [Target], 1, 0 )
// 5. Protección contra divisiones
Safe Ratio =
IF ( [Denominator] = 0, BLANK(), [Numerator] / [Denominator] )

⚠️ Advertencia

El uso excesivo de IF anidados degrada la legibilidad y hace el modelo frágil.


2️⃣ SWITCH — Lógica Multiescenario

La función SWITCH permite evaluar múltiples escenarios de forma ordenada y legible. Es ideal para reglas de negocio y categorizaciones complejas.

SWITCH(
    expression,
    value1, result1,
    value2, result2,
    else_result
)

📌 Patrón clave: SWITCH(TRUE())

Este patrón evalúa condiciones secuenciales como un ELSE IF.

📌 Ejemplos prácticos (5 samples)

// 1. Segmentación por ventas
Segment =
SWITCH(
    TRUE(),
    [Sales] >= 1000000, "Platinum",
    [Sales] >= 500000,  "Gold",
    [Sales] >= 100000,  "Silver",
    "Bronze"
)
// 2. Clasificación de desempeño
Performance =
SWITCH(
    TRUE(),
    [Score] >= 90, "Excellent",
    [Score] >= 75, "Good",
    [Score] >= 60, "Average",
    "Poor"
)
// 3. Estado financiero
Financial Status =
SWITCH(
    TRUE(),
    [Profit] > 0 && [Cash] > 0, "Healthy",
    [Profit] > 0 && [Cash] <= 0, "Alert",
    "Critical"
)
// 4. Semáforo KPI
KPI Color =
SWITCH(
    TRUE(),
    [Value] >= [Target], "Green",
    [Value] >= [Target]*0.9, "Yellow",
    "Red"
)
// 5. Etiqueta por rango de fechas
Period Label =
SWITCH(
    TRUE(),
    [Days Open] <= 30, "New",
    [Days Open] <= 90, "Open",
    "Aging"
)

3️⃣ Comparación IF vs SWITCH

AspectoIFSWITCH
LógicaBinariaMultiescenario
EscalabilidadBajaAlta
LegibilidadLimitadaExcelente
Uso idealValidacionesReglas de negocio

🧠 Insight Final

IF responde preguntas.
SWITCH define comportamientos.

🧠 DAX Analysis — IF vs SWITCH (Extended)

1️⃣ IF — Binary Conditional Logic

The IF function evaluates a logical condition and returns one of two outcomes. It is simple, direct, and ideal for basic decision-making.

IF( logical_test, value_if_true, value_if_false )

✔️ Best use cases

📌 Practical examples (5 samples)

// 1. Simple classification
Status =
IF ( [Sales] > 100000, "High", "Low" )
// 2. Null validation
Valid Flag =
IF ( ISBLANK([Amount]), "Missing", "OK" )
// 3. Margin control
Margin Check =
IF ( [Margin %] > 0.25, "Healthy", "Risk" )
// 4. KPI On/Off
KPI Status =
IF ( [Actual] >= [Target], 1, 0 )
// 5. Safe division
Safe Ratio =
IF ( [Denominator] = 0, BLANK(), [Numerator] / [Denominator] )

2️⃣ SWITCH — Multi-Scenario Logic

SWITCH allows multiple conditions to be evaluated sequentially. It is ideal for business rules and structured decision logic.

📌 Practical examples (5 samples)

// 1. Sales segmentation
Segment =
SWITCH(
    TRUE(),
    [Sales] >= 1000000, "Platinum",
    [Sales] >= 500000,  "Gold",
    [Sales] >= 100000,  "Silver",
    "Bronze"
)
// 2. Performance rating
Performance =
SWITCH(
    TRUE(),
    [Score] >= 90, "Excellent",
    [Score] >= 75, "Good",
    [Score] >= 60, "Average",
    "Poor"
)
// 3. Financial status
Financial Status =
SWITCH(
    TRUE(),
    [Profit] > 0 && [Cash] > 0, "Healthy",
    [Profit] > 0 && [Cash] <= 0, "Alert",
    "Critical"
)
// 4. KPI traffic light
KPI Color =
SWITCH(
    TRUE(),
    [Value] >= [Target], "Green",
    [Value] >= [Target]*0.9, "Yellow",
    "Red"
)
// 5. Aging label
Period Label =
SWITCH(
    TRUE(),
    [Days Open] <= 30, "New",
    [Days Open] <= 90, "Open",
    "Aging"
)

🧠 Final Insight

IF answers questions.
SWITCH models behavior.