Funciones lógicas

En este artículo se presentan las funciones lógicas y sus usos en Tableau. También se muestra cómo crear un cálculo lógico mediante un ejemplo.

Por qué usar cálculos lógicos

Los cálculos lógicos le permiten determinar si una determinada condición es true o false (lógica booleana). Por ejemplo, es posible que desee categorizar valores según determinados límites.

Un cálculo lógico se podría parecer a lo siguiente:

IF [Profit] > 0 
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END

Funciones lógicas y operadores disponibles en Tableau

AND

Sintaxis<expr1> AND <expr2>
DefiniciónRealiza la conjunción lógica de dos expresiones. (Si ambos lados son True, la prueba lógica devuelve True).
ResultadoBooleano (True o False)
Ejemplo
IF [Season] = "Spring" AND "[Season] = "Fall" 
THEN "It's the apocalypse and footwear doesn't matter"
END

"Si tanto (Temporada = Primavera) como (Temporada = Otoño) son true simultáneamente, entonces devuelve: Es el apocalipsis y el calzado no importa".

Notas

A menudo se utiliza con IF y IIF. Consulte también NOT y O.

Si ambas expresiones son TRUE (no son FALSE o NULL), el resultado será TRUE. Si cualquiera de las expresiones es NULL, entonces el resultado es NULL. En todos los demás casos, el resultado será FALSE.

Si crea un cálculo en el cual el resultado de una comparación de AND se muestra en una hoja de trabajo, Tableau muestra TRUE y FALSE. Si desea cambiar esto, use el área Formato en el cuadro de diálogo de formato.

Nota: El operador AND usa evaluación de circuito corto. Esto significa que si la primera expresión se evalúa y es FALSE, entonces la segunda expresión no se evalúa en absoluto. Puede ser útil si la segunda expresión tiene como resultado un error cuando la primera expresión es FALSE, porque la segunda expresión, en este caso, nunca se evalúa.

CASE

SintaxisCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
ResultadoDepende del tipo de datos de los valores <then>.
Definición

Evalúa la expression y la compara con las opciones especificadas (<value1>, <value2>, etc.). Cuando se encuentra un value que coincide con la expresión, CASE devuelve el valor de la return correspondiente. En caso de que no se encuentre ninguna coincidencia, se devolverá la expresión predeterminada. Si no hay ninguna devolución predeterminada y no hay valores que coincidan, se devolverá Null.

Ejemplo
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Mire el campo Estación. Si el valor es Verano, devolverá Sandalias. Si el valor es Invierno, devolverá Botas. Si ninguna de las opciones del cálculo coincide con lo que hay en el campo Estación, devolverá Zapatillas".

Notas

Consulte también IF y IIF.

Usado con WHEN, THEN, ELSE y END.

Consejo: Muchas veces puede usar un grupo para obtener los mismos resultados que una función CASE complicada, o usar CASE para reemplazar la funcionalidad de agrupación nativa, como en el ejemplo anterior. Es posible que desee probar cuál es más eficaz para su escenario.

ELSE

SintaxisCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DefiniciónUna pieza opcional de una expresión IF o CASE utilizada para especificar un valor predeterminado para devolver si ninguna de las expresiones probadas es true.
Ejemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END
Notas

Usado con CASE, WHEN, IF, ELSEIF, THEN y END

ELSE es opcional con CASE y IF. En un cálculo donde ELSE no se especifica, si ninguno de los <test>es true, el cálculo general devolverá un valor null.

ELSE no requiere una condición (como [Season] = "Winter") y puede considerarse como una forma de gestión de valores nulos.

ELSEIF

Sintaxis[ELSEIF <test2> THEN <then2>]
DefiniciónUna pieza opcional de una expresión IF utilizada para especificar condiciones adicionales más allá del IF inicial.
Ejemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSEIF [Season] = "Spring" THEN 'Sneakers'
ELSEIF [Season] = "Autumn" THEN 'Sneakers'
ELSE 'Bare feet'
END
Notas

Se usa con IF, THEN, ELSE y END

ELSEIF puede considerarse como cláusulas IF adicionales. ELSEIF es opcional y se puede repetir varias veces.

A diferencia de ELSE, ELSEIF requiere una condición (como [Season] = "Winter").

END

DefiniciónSe utiliza para cerrar una expresión IF o CASE.
Ejemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Si Estación = Verano, devolverá Sandalias. Si no, mire la siguiente expresión. Si Estación = Invierno, devolverá Botas. Si ninguna de las expresiones es true, devolverá Zapatillas".

CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Mire el campo Estación. Si el valor es Verano, devolverá Sandalias. Si el valor es Invierno, devolverá Botas. Si ninguna de las opciones del cálculo coincide con lo que hay en el campo Estación, devolverá Zapatillas".

Notas

Usado con CASE, WHEN, IF, ELSEIF, THEN y ELSE.

IF

SintaxisIF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
ResultadoDepende del tipo de datos de los valores <then>.
Definición

Prueba una serie de expresiones que devuelven el valor <then> para la primera <test> true.

Ejemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Si Estación = Verano, devolverá Sandalias. Si no, mire la siguiente expresión. Si Estación = Invierno, devolverá Botas. Si ninguna de las expresiones es true, devolverá Zapatillas".

Notas

Consulte también IF e IIF.

Se usa con ELSEIF, THEN, ELSE y END

IFNULL

SintaxisIFNULL(expr1, expr2)
ResultadoDepende del tipo de datos de los valores <expr>.
Definición

Devuelve <expr1> si no es null, de lo contrario, devuelve <expr2>.

Ejemplo
IFNULL([Assigned Room], "TBD")

"Si el campo Sala asignada no es null, devolverá su valor. Si el campo Sala asignada es null, devolverá TBD".

Notas

Comparar con ISNULL. IFNULL siempre devuelve un valor. ISNULL devuelve un valor booleano (True o False).

Consulte también ZN.

IIF

SintaxisIIF(<test>, <then>, <else>, [<unknown>])
ResultadoDepende del tipo de datos de los valores de la expresión.
DefiniciónComprueba si se cumple una condición (<test>), y devuelve <then> si la prueba es true, <else> si la prueba es false, y un valor opcional para <unknown> si la prueba es null. Si no se especifica la incógnita opcional, IIF devolverá null.
Ejemplo
IIF([Season] = 'Summer', 'Sandals', 'Other footwear')

"Si Estación = Verano, devolverá Sandalias. Si no, devolverá Otro calzado"

IIF([Season] = 'Summer', 'Sandals', 
IIF('Season' = 'Winter', 'Boots', 'Other footwear')
)

"Si Estación = Verano, devolverá Sandalias. Si no, mire la siguiente expresión. Si Estación = Invierno, devolverá Botas. Si ninguna de las dos cosas es true, devolverá Zapatillas".

IIF('Season' = 'Summer', 'Sandals', 
IIF('Season' = 'Winter', 'Boots',
IIF('Season' = 'Spring', 'Sneakers', 'Other footwear')
)
)

"Si Estación = Verano, devolverá Sandalias. Si no, mire la siguiente expresión. Si Estación = Invierno, devolverá Botas. Si ninguna de las expresiones es true, devolverá Zapatillas".

Notas

Consulte también IF eCASE.

IIF no tiene equivalente ELSEIF (como IF) o cláusulas WHEN repetidas (como CASE). En cambio, se pueden evaluar varias pruebas secuencialmente anidando expresiones IIF como el elemento <unknown>. Se devuelve el primer true (el más externo).

Es decir, en el siguiente cálculo, el resultado será Rojo, no Naranja, porque la expresión deja de evaluarse tan pronto como A = A se evalúa como true:

IIF('A' = 'A', 'Red', IIF('B' = 'B', 'Orange', IIF('C' = 'D', 'Yellow', 'Green')))

IN

Sintaxis<expr1> IN <expr2>
ResultadoBooleano (True o False)
DefiniciónDevuelve TRUE si cualquier valor de <expr1> coincide con cualquier valor de <expr2>.
Ejemplo
SUM([Cost]) IN (1000, 15, 200)

"¿El valor del campo Coste es 1000, 15 o 200?"

[Field] IN [Set]

"¿El valor del campo está presente en el conjunto?"

Notas

Los valores en <expr2> pueden ser un conjunto, una lista de valores literales o un campo combinado.

Consulte también WHEN.

ISDATE

SintaxisISDATE(string)
ResultadoBooleano (True o False)
DefiniciónIndica True si una <string> es una fecha válida. La expresión de entrada debe ser un campo de cadena (texto).
Ejemplo
ISDATE("2018-09-22")

“¿La cadena 2018-09-22 tiene una fecha con formato correcto?”

Notas

Lo que se considera una fecha válida depende de la configuración regional(El enlace se abre en una ventana nueva) del sistema que evalúa el cálculo. Por ejemplo:

En los EE. UU:

  • ISDATE("2018-09-22") = TRUE
  • ISDATE("2018-22-09") = FALSE

En el Reino Unido:

  • ISDATE("2018-09-22") = FALSE
  • ISDATE("2018-22-09") = TRUE

ISNULL

SintaxisISNULL(expression)
ResultadoBooleano (True o False)
Definición

Devuelve true si la <expression> es NULL (no contiene datos válidos).

Ejemplo
ISNULL([Assigned Room])

"¿El campo Sala asignada es null?"

Notas

Compárelo con IFNULL. IFNULL siempre devuelve un valor. ISNULL devuelve un booleano.

Consulte también ZN.

MAX

SintaxisMAX(expression) o MAX(expr1, expr2)
ResultadoEl mismo tipo de datos que el argumento, o NULL  si alguna parte del argumento es nula.
Definición

Indica el máximo de dos argumentos, los cuales deben ser del mismo tipo de datos.

MAX se puede aplicar también a un solo campo como una agregación.

Ejemplo
MAX(4,7) = 7
MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021#
MAX([Name]) = "Zander"
Notas

Para cadenas

MAX suele ser el valor que aparece en último lugar en orden alfabético.

Para las fuentes de datos de bases de datos, el valor de cadena MAX es el valor más alto en la secuencia de orden definido por la base de datos para esta columna.

Para fechas

Para las fechas, MAX es la fecha más reciente. Si MAX es una agregación, el resultado no tendrá una jerarquía de fechas. Si MAX es una comparación, el resultado conservará la jerarquía de fechas.

Como agregación

MAX(expression) es una función agregada y devuelve un solo resultado agregado. Se muestra como AGG(expression) en la visualización.

Como comparación

MAX(expr1, expr2) compara los dos valores y devuelve un valor de nivel de fila.

Consulte también MIN.

MIN

SintaxisMIN(expression) o MIN(expr1, expr2)
ResultadoEl mismo tipo de datos que el argumento, o NULL  si alguna parte del argumento es nula.
Definición

Indica el mínimo de dos argumentos, los cuales deben ser del mismo tipo de datos.

MIN se puede aplicar también a un solo campo como una agregación.

Ejemplo
MIN(4,7) = 4
MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#
MIN([Name]) = "Abebi"
Notas

Para cadenas

MIN suele ser el valor que aparece en primer lugar en orden alfabético.

Para las fuentes de datos de bases de datos, el valor de cadena MIN es el valor más bajo en la secuencia de orden definido por la base de datos para esta columna.

Para fechas

Para las fechas, MIN es la fecha más anterior. Si MIN es una agregación, el resultado no tendrá una jerarquía de fechas. Si MIN es una comparación, el resultado conservará la jerarquía de fechas.

Como agregación

MIN(expression) es una función agregada y devuelve un solo resultado agregado. Se muestra como AGG(expression) en la visualización.

Como comparación

MIN(expr1, expr2) compara los dos valores y devuelve un valor de nivel de fila.

Consulte también MAX.

NOT

SintaxisNOT <expression>
ResultadoBooleano (True o False)
DefiniciónRealiza una negación lógica en una expresión.
Ejemplo
IF NOT [Season] = "Summer" 
THEN 'Don't wear sandals'
ELSE 'Wear sandals' 
END

"Si la temporada no es igual al Verano, entonces devolverá: No uses sandalias. Si no, devolverá: Usa sandalias".

Notas

A menudo se utiliza con IF y IIF. Consulte también AND y O.

O

Sintaxis<expr1> OR <expr2>
ResultadoBooleano (True o False)
DefiniciónRealiza una disyunción lógica en dos expresiones.
Ejemplo
IF [Season] = "Spring" OR [Season] = "Fall" 
THEN "Sneakers"
END

"Si (Estación = Primavera) o (Estación = Otoño) es true, entonces devolverá Zapatillas".

Notas

A menudo se utiliza con IF y IIF. Consulte también AND y NOT.

Si cualquiera de las expresiones es TRUE, entonces el resultado es TRUE. Si ambas expresiones son FALSE, entonces el resultado es FALSE. Si ambas expresiones son NULL, entonces el resultado es NULL.

Si crea un cálculo en el cual el resultado de una comparación de OR se muestra en una hoja de trabajo, Tableau muestra TRUE y FALSE. Si desea cambiar esto, use el área Formato en el cuadro de diálogo de formato.

Nota: El operador OR usa evaluación de circuito corto. Esto significa que si la primera expresión se evalúa y es TRUE, entonces la segunda expresión no se evalúa en absoluto. Puede ser útil si la segunda expresión tiene como resultado un error cuando la primera expresión es TRUE, porque la segunda expresión, en este caso, nunca se evalúa.

THEN

SintaxisIF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
DefiniciónUna parte requerida de una expresión IF, ELSEIF o CASE, utilizada para definir qué resultado devolver si un valor o prueba específica es true.
Ejemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Si Estación = Verano, devolverá Sandalias. Si no, mire la siguiente expresión. Si Estación = Invierno, devolverá Botas. Si ninguna de las expresiones es true, devolverá Zapatillas".

CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Mire el campo Estación. Si el valor es Verano, devolverá Sandalias. Si el valor es Invierno, devolverá Botas. Si ninguna de las opciones del cálculo coincide con lo que hay en el campo Estación, devolverá Zapatillas".

Notas

Usado con CASE, WHEN, IF, ELSEIF, THEN, ELSE y END

WHEN

SintaxisCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DefiniciónUna parte requerida de una expresión CASE. Encuentra el primer <value> que coincide con la <expression> y devuelve el <then> correspondiente.
Ejemplo
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Mire el campo Estación. Si el valor es Verano, devolverá Sandalias. Si el valor es Invierno, devolverá Botas. Si ninguna de las opciones del cálculo coincide con lo que hay en el campo Estación, devolverá Zapatillas".

Notas

Usado con CASE, THEN, ELSE y END.

CASE también admite construcciones WHEN IN, tales como:

CASE <expression> 
WHEN IN <set1> THEN <then1>
WHEN IN <combinedfield> THEN <then2>
...
ELSE <default>
END

Los valores que compara WHEN IN deben ser un conjunto, una lista de valores literales o un campo combinado. Consulte también IN.

ZN

SintaxisZN(expression)
ResultadoDepende del tipo de datos de la <expression>, o 0.
DefiniciónDevuelve <expression> si no es null, de lo contrario, devuelve cero.
Ejemplo
ZN([Test Grade])

"Si la calificación de la prueba no es null, devolverá su valor. Si la calificación de la prueba es null, devolverá 0".

Notas

ZN es un caso especializado de IFNULL donde la alternativa si la expresión es null es siempre 0 en lugar de especificarse en el cálculo.

ZN es especialmente útil cuando se realizan cálculos adicionales y un valor null haría que todo el cálculo fuera null. Pero tenga cuidado al interpretar estos resultados, null no siempre es sinónimo de 0 y podría representar datos que faltan.

Consulte también ISNULL.


Nota: Algunos de estos son en realidad operadores lógicos y aparecen en negro, no en azul. Para obtener más información, consulte Sintaxis del operador.

Nota sobre CASE, IF y IIF

CASE es, a menudo, más fácil de usar que IF o IIF. En muchos casos, IF, IIF y CASE se pueden utilizar indistintamente. Una instrucción CASE se puede volver a escribir siempre como una instrucción IF, aunque la función CASE será, por lo general, más concisa y puede ser más fácil de entender. Sin embargo, no todas las instrucciones IF se pueden escribir como instrucciones CASE, ya que cada ELSEIF podría hacer referencia a un campo diferente.

Consejo: Comparemos un ejemplo usando la misma lógica en estas tres funciones:

CASEIFIIF
CASE [Region]
WHEN 'West' THEN 1
WHEN 'East' THEN 2
WHEN 'South' THEN 3
WHEN 'North' Then 4
ELSE 5
END
IF [Region] = 'West' THEN 1
ELSEIF [Region] = 'East' THEN 2
ELSEIF [Region] = 'South' THEN 3
ELSEIF [Region] = 'North' THEN 4
ELSE 5
END
IIF([Region] = 'West', 1,
IIF([Region] = 'East', 2,
IIF([Region] = 'South', 3,
IIF([Region] = 'North', 4,
5, 0)
)
)
)

La estructura CASE es muy simple y fácil de escribir y entender. Sin embargo, la expresión (aquí, [Region]) no puede ser una operación lógica, a diferencia de IF o IIF.

Los valores nulos se gestionan de la misma manera para CASE que para IF.

La estructura IF THEN permite múltiples cláusulas ELSEIF, lo que hace que las evaluaciones múltiples sean mucho más fáciles que con IIF.

Gestión de valores nulos: cualquier resultado desconocido (nulo) se gestiona mediante la misma cláusula ELSE que los resultados falsos. Aquí, a cualquier región distinta de las cuatro especificadas (incluido el valor nulo) se le asignará un valor de 5.

La estructura IIF gestiona los resultados desconocidos de manera diferente a los resultados falsos y tiene una sintaxis diferente a la de IF. La compensación por la gestión de valores nulos específica es la anidación, como se indicó anteriormente, que puede resultar complicado de escribir y comprender.

Gestión de valores nulos: a cualquier región sin valores nulos distinta de las cuatro especificadas se le asignará un valor de 5, pero a un valor nulo se le asignará un valor de 0.

Nota: Muchas veces puede usar un grupo para obtener los mismos resultados como una función CASE complicada. Pruebe para ver si una opción tiene mejor rendimiento que la otra.

Ejemplos

Las funciones CASE pueden ser útiles para escenarios como la readaptación:

CASE LEFT(DATENAME('weekday',[Order Date]),3)
WHEN 'Sun' THEN 0
WHEN 'Mon' THEN 1
WHEN 'Tue' THEN 2
WHEN 'Wed' THEN 3
WHEN 'Thu' THEN 4
WHEN 'Fri' THEN 5
WHEN 'Sat' THEN 6
END

o brindar al usuario final la capacidad de seleccionar qué medida ver en un gráfico cuando se usa con un parámetro(El enlace se abre en una ventana nueva):

CASE [Choose a Measure]
WHEN "Sales" THEN SUM([Sales])
WHEN "Profit" THEN AVG([Profit])
WHEN "Quantity" THEN COUNT([Quantity])
WHEN "Shipping Cost" THEN MEDIAN([Shipping Cost])
END

Crear un cálculo lógico

Siga los pasos que se indican a continuación para aprender a crear un cálculo lógico.

  1. En Tableau Desktop, conéctese a la fuente de datos guardada Muestra - Supertienda, que se incluye con Tableau.
  2. Vaya a una hoja de trabajo.
  3. Desde el panel Datos, arrastre Estado al estante Filas.
  4. Desde el panel Datos, arrastre Categoría al estante Filas y colóquelo a la derecha de Estado.
  5. Desde el panel Datos, arrastre Ventas al estante Columnas.
  6. Seleccione Análisis > Crear campo calculado.
  7. En el editor de cálculo que se abre, haga lo siguiente:
    • Asigne el nombre KPI al campo calculado.
    • Escriba la fórmula siguiente:
      SUM([Profit]) > 0

      Este cálculo comprueba rápidamente si un miembro es mayor que cero. Si es así, indica true; en caso contrario, indica false.

    • Cuando haya terminado, haga clic en Aceptar.
  8. El nuevo campo calculado aparece en Medidas del panel Datos. Igual que con el resto de los campos, puede usarlo en una o más visualizaciones.

  9. En el panel Datos, arrastre KPI hasta Color en la tarjeta Marcas.

    Ahora puede ver qué categorías están perdiendo dinero en cada estado.

Consulte también

Visualizar indicadores de progreso clave

Funciones en Tableau

Funciones de Tableau (por categorías)

Funciones de Tableau (alfabéticamente)

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!