Saltar al contenido

Función lógica IF

Una de las herramientas más potentes que se tienen a nivel de análisis de datos, es la capacidad de establecer sentencias condicionales. Desde un punto de vista de desarrollo, es común tener que aplicar alguna regla que nos permita evaluar distintos escenarios.

Aquí vamos a centrarnos en el uso de la función lógica IF.

Estructura

La función IF corresponde a lo siguiente.

IF( <TestLógico>, <ResultadoVerdadero> [, <ResultadoFalso>] )

Veámosla en acción a partir de una columna calculada.

Sentencia condicional para establecer la revisión de un catálogo.

Puede leerse de la siguiente manera:

Si el género es igual a rock, tendremos que revisar el catálogo. De lo contrario, todo se encuentra en orden.

 

Omitiendo el parámetro falso

Como en muchas funciones en DAX, no es obligatorio utilizar todos sus parámetros.

Así se vería reflejado el resultado si lo omitimos.

Al omitir el tercer parámetro, las filas quedarán en blanco.

 

Ejecución desde una medida

En algunos escenarios; recordando que en DAX todo es un constante depende. Un pequeño cambio en la sintaxis puede permitirnos aplicar la misma lógica en una medida.

La función SELECTEDVALUE(), se utiliza para evaluar si la columna contiene el valor esperado.

 

Sentencia IF anidada

Un IF anidado significa ampliar la lógica para que tome en cuenta otras condiciones. En este ejemplo, además de corresponder al género ranchera, deberá ser menor al año 1950.

Las sentencias anidadas hacen más verbosa la sintaxis. Nótese el uso del tercer (3) parámetro de la segunda evaluación: «Luego de un rato».

Leemos:

Si el género es ranchera y si el año es menor a 1950; la vamos a escuchar. Si es ranchera, pero no es menor a 1950 la dejamos para luego de un rato. Pero de no cumplirse ambas condiciones, la dejaremos para otra oportunidad.

Importante: el orden de múltiples sentencias anidadas tendrá impacto en el resultado. Hay que tener en cuenta el orden para evitar que se vean solapadas o sobre escritas generando resultados incorrectos.

 

Sustituyendo IF anidados con SWITCH + TRUE

Es posible simplificar la sintaxis cuando se requiere evaluar distintos criterios uniendo las funciones SWITCH y TRUE.

En vez de utilizar un (1) IF para cada conversión, con SWITCH podemos crear una sintaxis más agradable a la lectura.

 

También puede utilizarse en sintaxis que involucren más de un criterio de evaluación.

En la línea siete (7) se utiliza el operador doble de concatenación lógica ampersand && para establecer dos criterios de clasificación.

 

Posibles errores: si combinas un resultado que entregue un tipo de datos diferente a la evaluación -siendo en este caso todos textos- dentro de una columna calculada generará un error.

Mientras que, una medida no se encuentra sujeta a esa limitante.

Una medida puede ofrecer un resultado lógico que combine distintos tipos de datos.

 

Podría leerse de la siguiente manera:

Si el valor seleccionado es igual a ranchera; la vamos a escuchar primero. De lo contrario, vamos a contar todas las filas de la tabla registros donde el género no es ranchera ignorando los filtros presentes.

 

Utilizando variables para mejorar el rendimiento

Una de las ventajas de las variables aparte de simplificar la sintaxis, es mejorar el rendimiento en ciertos escenarios.

La variable TotalOyentes es la sumatoria de la columna oyentes.

 

Leemos:

Si el total de oyentes es mayor a quince millones; lo multiplicaremos por el tres por ciento. Si el total de oyentes es mayor a dos millones y medio, también lo multiplicaremos, pero por el dos por ciento. Si no se cumplen estos criterios, lo multiplicaremos por el uno por ciento.

En esta sintaxis, sin el uso de una variable que realice la sumatoria de los oyentes, se tendría que invocar cinco (5) veces la misma función.

 

Nueva función IF.EAGER

En la actualización de marzo 2021, presentaron una nueva función lógica llamada IF.EAGER. Podemos utilizarla en los escenarios donde el rendimiento es importante; similar a lo visto en el punto anterior utilizando variables para evitar evaluaciones múltiples de la misma expresión.

Por ejemplo:

Multiplicación condicional = IF.EAGER( [Total Oyentes] > 15000000; [Total Oyentes] * 0,03; [Total Oyentes] )

La medida [Total Oyentes] aparece tres (3) veces, tanto en la expresión lógica como en los parámetros de verdadero y falso.

Si utilizamos IF.EAGER la evaluación de la medida será ejecutada una (1) sola vez.

Esa es la diferencia.

Sin embargo, esto no quiere decir vamos a dejar de utilizar la función IF; por el contrario, siendo esta nueva función solamente una alternativa en casos donde sea apremiante su uso, y asimismo, queramos evitar sintaxis muy verbosas por el uso de variables para alcanzar un mejor rendimiento.

 

Combinando operadores lógicos

En DAX existen las funciones AND y OR, siendo sus equivalentes los operadores ampersand (&&), y la doble barra vertical o pleca (||). La gran diferencia es que al utilizar las funciones, estarías sujeto a dos parámetros lógicos. En cambio, con los operadores puedes aplicar las condiciones que sean necesarias.

Utilizando la función OR o AND tendremos disponibles solamente dos (2) parámetros lógicos.

Leemos:

Si el género es rock o rap, tenemos que revisar el catálogo. De lo contrario, todo se encuentra en orden.

Veamos otro ejemplo, pero el operador IN, creando una condición lógica OR.

En vez de utilizar la doble barra vertical en cada sentencia lógica. Utilizamos el operador IN para agrupar todo en una misma línea.

Leemos:

Si el género es ranchera, balada o romántica; revisaremos el catálogo. De lo contrario, todo está en orden.

 

¿Aplicar una lógica o filtrar?

Hay que tener cuidado en ejecutar lógicas en escenarios donde lo correcto es filtrar. Por ejemplo, usando CALCULATE o FILTER. Adquiere importancia en modelos que contemplan una cantidad considerable de datos; y de aplicarse una lógica para conseguir una reducción de registros, sería muy costosa su evaluación en comparación a las funciones regularmente utilizadas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Quieres aprender DAX? en serio...

Estudiar por medio de tutoriales sirve como complemento; pero no sustituye una educación estructurada.