Insights / Blog

Sentencia IF

Guía para principiantes: Sentencia IF en Tableau

Las sentencias IF son una parte fundamental de Tableau, así como otras plataformas de análisis, lenguajes de programación e incluso herramientas como hojas de cálculo. Comprender lo que hacen y cómo funcionan es esencial al crear campos calculados. En este blog, explicaremos los conceptos básicos de la sentencia IF, mencionando sus componentes, algunas reglas que los rigen, y el orden de las operaciones, entre otros.

Componentes

 Un condicional en Tableau tiene la siguiente estructura:

sentencia IF

Desglosando la sintaxis, se observan múltiples componentes. Vamos a comenzar, en primer lugar, fijándonos en las dos primeras líneas:

sentencia IF

Lo que estas dos líneas significan es: “Si el campo Ventas ([Sales]) es menor o igual a 500, devuelve el valor “Small” en el nuevo campo calculado ”. La clave de estas sentencias es la palabra IF, que indica que se está escribiendo una condición. La palabra THEN indica que se va a especificar el valor de retorno, en este caso “Small”. Entre estas dos palabras, se encuentra la condición, es decir, una comparación que devuelve VERDADERO o FALSO. En este caso, que el campo [Sales] sea menor o igual que 500. En Tableau existen seis operadores de comparación disponibles:

 

Operador Significado Devuelve VERDADERO si…
= o == Igual que Ambos miembros de la igualdad tienen el mismo valor
<> o != Distinto a Ambos miembros de la igualdad tienen distinto valor
> Mayor que El primer miembro tiene un valor mayor que el segundo
< Menor que El primer miembro tiene un valor menor que el segundo
>= Mayor o igual que El primer miembro tiene un valor mayor o igual que el segundo
<= Menor o igual que El primer miembro tiene un valor menor o igual que el segundo

En este ejemplo, se está verificando si el campo [Sales] es menor o igual a 500. Si es así , la declaración IF será VERDADERA. Si no, será FALSO. Si la instrucción booleana es verdadera, se devolverá el valor especificado después de THEN, en este caso, «Small». Por lo contrario, si no lo es, continuaremos con la siguiente línea:

sentencia IF

Al haber escrito IF al principio, la próxima condición debe ir precedida del prefijo ELSE, es decir, ELSEIF. En este ejemplo, la segunda expresión condicional es [Sales]>500 Y [Sales]<=2000. A diferencia de la primera línea, esta expresión contiene dos comparaciones independientes, [Sales]>500 y [Sales]<=2000, separadas por AND. En este caso, AND es lo que se llama un operador lógico. Los operadores lógicos más comunes en Tableau son:

 

Operador Definición
AND Para que toda la expresión condicional sea verdadera, las comparaciones en el lado izquierdo y derecho de AND deben ser verdaderas. Si alguno de ellos es falso, entonces todo el enunciado es falso.
OR Para que toda la expresión condicional sea verdadera, al menos una de las comparaciones en el lado izquierdo o derecho del OR debe ser verdadera. La declaración completa solo será falsa si ambas comparaciones son falsas.
NOT A diferencia de AND y OR, NOT no se usa para combinar varias expresiones. En cambio, se usa en una sola expresión y básicamente devuelve el resultado opuesto al de la expresión. En otras palabras, si la expresión es VERDADERA, NOT la convertirá en FALSA y viceversa. A menudo, NOT se puede evitar mediante el uso de diferentes tipos de operadores de comparación.

Entonces, para que la declaración de este ejemplo sea verdadera, las Ventas deben ser mayores que 500 y menores o iguales a 2000. Si ambas son verdaderas, la sentencia IF devolverá «Medium». Si no, continúa con la siguiente instrucción.

sentencia IF

Al usar la palabra clave, ELSE, no se necesita una expresión condicional. ELSE simplemente significa que, si ninguna de las expresiones condicionales anteriores era verdadera, devolverá este valor. Entonces, en este caso, si las Ventas son mayores que 2000, la declaración devolverá «large».

Finalmente, para que se complete la sentencia IF, debe cerrarse con END.

¡El primero gana!

Cuando se trata de sentencias IF, el primero siempre gana. En otras palabras, las declaraciones IF terminan tan pronto como se determina que una expresión condicional es verdadera. Veamos una versión modificada de nuestra declaración anterior.

Sentencia IF

Se ha cambiado la línea

Sentencia IF

por

Sentencia IF

 

Si bien puede parecer que esto cambiará los resultados, no lo hará. Para ilustrar esto, supongamos que Ventas = 100. Tanto IF [Sales]<=500 como ELSEIF [Sales]<=2000 son técnicamente ciertos, pero debido a la regla mencionada anteriormente, la declaración terminará tan pronto como llegue a una expresión verdadera. Dado que la primera expresión es verdadera, la declaración IF devolverá «Small» y finalizará; nunca pasará a evaluar la segunda expresión. Si, por ejemplo, Ventas = 600, entonces la primera declaración sería falsa, por lo que la sentencia IF continuaría con la segunda expresión. Dado que ahora sabemos que Ventas es mayor que 500, es redundante incluirlo en la expresión condicional, por lo que podemos excluir esa comparación.

 

Fila a fila

Otra cosa importante a tener en cuenta es que una sentencia IF operará en una sola fila. Por una parte, esto técnicamente no es del todo cierto, ya que los campos calculados de Tableau y las declaraciones IF pueden calcularse sobre una partición de datos más grande cuando se usa algún tipo de agregación. En ese caso, nos adentraremos en el nivel de detalle (LOD) de la visualización y en otros temas más complejos. Entonces, para mantener esto simple, no vamos a hacer ningún tipo de agregación y, por eso, nuestras sentencias IF siempre operarán a nivel de fila.

Tomemos, por ejemplo, este pequeño conjunto de datos de muestra.

Actor Película Categoría
Adam Sandler Billy Madison Comedia
Mark Wahlberg Ted Comedia
Mark Wahlberg Shooter Acción

 

Y el siguiente campo calculado

Sentencia IF

Se puede pensar que Mark Wahlberg dará como resultado un valor de «Comedia/Acción», ya que tiene las categorías «Comedia» y «Acción». Pero este no es el caso, ya que esta sentencia IF operará solo en el nivel de fila; solo verá la categoría de esa fila actual, lo que dará como resultado lo siguiente.

Actor Película Categoría Nueva Categoría
Adam Sandler Billy Madison Comedia Comedia
Mark Wahlberg Ted Comedia Comedia
Mark Wahlberg Shooter Acción Acción

Por supuesto, se podría crear un campo calculado para combinar los géneros de las películas que protagoniza Mark Wahlberg, pero eso requeriría algunos cálculos más complejos de los que vamos a abordar aquí.

 

Mismo tipo de datos

Las declaraciones IF siempre deben devolver el mismo tipo de datos. Tomemos, por ejemplo, esta versión de nuestro campo calculado:

Sentencia IF

Si se intenta esto en Tableau, obtendría el error “Expected type integer, found string. Result types from ‘IF’ expressions must match.» Este mensaje de error indica que la primera sentencia IF devolvió un número entero, pero el siguiente ELSEIF devuelve una cadena. No podemos hacer esto ya que ambos deben ser del mismo tipo de datos; debemos elegir un valor de retorno entero o una cadena, no ambos.

 

Siempre hay algo más

Una última cosa que se debe entender es que las declaraciones IF siempre incluyen un ELSE, ya sea que las incluya explícitamente o no. En nuestro ejemplo anterior, incluimos explícitamente un ELSE, pero ¿qué pasa si lo excluimos como se muestra a continuación?

Sentencia IF

En este caso, cualquier fila con Ventas superior a 2000 devolvería un valor NULL. Excluir ELSE es esencialmente como escribir ELSE NULL.

Sentencia IF

NULL es un valor especial que indica que no hay ningún valor. También puede ser cualquier tipo de datos, lo que significa que siempre es un valor de retorno válido.

Por supuesto, no hay nada que le impida escribir explícitamente ELSE NULL. De hecho, a veces se hace ésto para que sea más fácil para otros entender la lógica de una declaración IF en particular o para tomar nota del hecho de que, aunque hay otros valores potenciales, queremos que devuelva NULL.

 

Orden de las operaciones

Ahora que hemos explorado la anatomía de las sentencias IF, así como algunas de las reglas que rigen su uso, hablemos un poco sobre algunos problemas lógicos más complejos que podemos encontrar. Aquí hay un ejemplo que se ve con bastante frecuencia:

Sentencia IF

Puede pensar que esto le dará cualquier cosa donde la Fecha de pedido sea posterior al 1 de enero de 2020 y tenga una categoría de «Muebles» o «Suministros de oficina». Pero estaría equivocado ya que estos diferentes operadores lógicos tienen un orden específico de operaciones. Este orden de operaciones es como el que se usa en las ecuaciones matemáticas. El siguiente gráfico muestra el orden de precedencia de las sentencias lógicas:

Sentencia IF

En otras palabras, lo primero que se calcula en una declaración lógica son los paréntesis, que agrupan las comparaciones. Luego viene NOT, seguido de AND, luego OR. Entonces, usemos esto para comprender mejor la sentencia IF anterior. Como AND se calcula antes que OR, las dos comparaciones separadas por AND se evaluarán primero:

Sentencia IF

Entonces, esto nos dará cualquier cosa con una categoría de «Suministros de oficina» y una fecha de pedido a partir del 1 de enero de 2020.

El OR actuará entonces como si la declaración anterior fuera una expresión singular. Entonces la declaración original nos dará cualquier cosa donde 1) la categoría sea «Muebles» O 2) la categoría sea «Suministros de oficina» y la fecha del pedido sea el 1 de enero de 2020 o después. Las ventas de muebles de 2019 se incluirán ya que cumplir con el criterio # 1.

Probablemente pueda ver, como se indicó anteriormente, cómo las declaraciones IF que combinan diferentes operadores lógicos pueden volverse muy confusas, ya que debe pensar en el orden en que se ejecutarán los operadores. Afortunadamente, podemos usar paréntesis para agrupar diferentes comparaciones. Por ejemplo, si vamos a cambiar esta declaración para devolver cualquier cosa cuya fecha de pedido sea posterior al 1 de enero de 2020 y tenga una categoría de «Muebles» o «Suministros de oficina». Para hacer esto, podemos agregar paréntesis (que se muestran en rojo a continuación) para agrupar las condiciones de categoría.

Sentencia IF

Estos paréntesis obligarán a la sentencia IF a evaluar primero las condiciones entre ellos: ¿la categoría es «Muebles» o «Suministros de oficina»? Luego evaluará esta expresión, como un todo, junto con la expresión del otro lado del AND, que es exactamente lo que queremos.

Tan pronto como mezcle AND, OR y NOT, es una buena práctica insertar paréntesis explícitamente para que pueda ser el 100% del orden en que se evalúa cada condición.

 

Variantes de IF

Cabe mencionar algunas variantes de IF que están disponibles en Tableau y algunas otras plataformas o lenguajes de programación.

Una de esas variantes de IF, es IIF, que le permite realizar una instrucción IF/ELSE simple dentro de una llamada de función concisa. Toma tres parámetros: la condición, el resultado si es verdadero y el resultado si es falso.

Por ejemplo, veamos la siguiente sentencia:

Sentencia IF

Se puede convertir esto en un IIF:

Sentencia IF

Si bien la función solo admite un IF y un ELSE, puede usar sentencias IIF anidadas para imitar la funcionalidad de las declaraciones IF/ELSEIF/ELSE. Sin embargo, los IIF anidados pueden ser muy difíciles de leer, por lo que sería mucho mejor escribir la instrucción IF completa.

Otra variante es la sentencia CASE. La funcionalidad de las declaraciones CASE varía bastante entre las diferentes plataformas. En Tableau, es simplemente un método más conciso pero menos poderoso para realizar comparaciones múltiples. Sin embargo, en plataformas como SQL, CASE le permite hacer todo lo posible con una instrucción IF. De hecho, el SQL estándar ANSI puro ni siquiera incluye declaraciones IF en absoluto; debe usar CASE.

Veamos la siguiente instrucción IF:

Sentencia IF

Esta es una sentencia IF simple en la que cada IF/ELSEIF realiza una comparación de igualdad simple basada en el mismo campo, Subcategoría. En este escenario, podemos reemplazarlo con una declaración CASE:

Sentencia IF

Como se puede observar, esto requiere un poco menos de texto y es un poco más fácil de escribir. Sin embargo, como se indicó anteriormente, las instrucciones CASE en Tableau requieren 1) que compare con un solo campo, que se encuentra después de la palabra clave CASE y 2) que solo realice comparaciones de igualdad; no puede realizar comparaciones de desigualdad (>, <, etc. .) en una instrucción CASE.

 

Conclusión: Sentencia IF en Tableau

Las sentencias IF (y sus variantes) son increíblemente poderosas y un requisito absoluto para cualquiera que cree campos calculados en Tableau. Pero, si no tienes experiencia en programación o análisis, pueden ser un poco desalentadores. Si bien sólo se acaba de rascar la superficie de lo que se puede hacer con las declaraciones IF en Tableau (y otras plataformas). Esta breve guía puede ayudar a comprender mejor cómo funcionan y ayudar a evitar muchos errores que se pueden tener al aprenderlas por primera vez.

Esperamos que este blog haya sido útil para entender lo que se puede hacer con sentencia IF en Tableau. Si quieres aprender más acerca de Tableau, echa un vistazo a otros blogs o ponte en contacto con nosotros a través de nuestro formulario web o escribiendo a info@theinformationlab.es.

Últimos post

Ventajas del Almacenamiento en la Nube

Herramientas de Big Data

Herramientas de Big Data: La selección de The Information Lab

¿Qué estás buscando?

¿Quién trata tus datos?

The Information Lab Spain, S.L.
(en adelante, “Titular“)

¿Por qué tratamos los datos que te pedimos?

Se tratan tus datos para poder prestarte los servicios solicitados. + info

¿Cuál es la legitimación para este tratamiento de tus datos?

Estos datos son necesarios para llevar a cabo la resolución de consultas que puedas plantearnos o para la prestación de los servicios que se hayan solicitado a través del Sitio Web. + info

¿Se van a hacer cesiones o transferencias con tus datos?

Tus datos no serán cedidos a terceras empresas. + info

¿Cuáles son mis derechos?

El interesado tiene derecho a ejercitar su derecho de:
Acceso, rectificación, supresión, oposición, portabilidad de los Datos, limitación del Tratamiento y a no ser objeto de decisiones automatizadas individualizadas. + info

¿Tienes dudas?

Tanto si tienes alguna o sugerencia como si quieres darte de baja ponte en contacto con nosotros enviando un email a la siguiente dirección: info@theinformationlab.es