Funções lógicas

Este artigo apresenta as funções lógicas e seus usos no Tableau. Ele também demonstra como criar um cálculo lógico com um exemplo.

Por que usar cálculos lógicos

Cálculos lógicos permitem determinar se uma certa condição é verdadeira ou falsa (lógica booleana). Por exemplo, você pode querer categorizar valores com base em determinados pontos de corte.

O cálculo lógico pode ficar mais ou menos assim:

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

Funções lógicas e operadores disponíveis no Tableau

AND

Sintaxe<expr1> AND <expr2>
DefiniçãoRealiza uma conjunção lógica em duas expressões. (Se ambos os lados forem true, o teste lógico retornará true.)
SaídaBooleano (true ou false)
Exemplo
IF [Season] = "Spring" AND "[Season] = "Fall" 
THEN "It's the apocalypse and footwear doesn't matter"
END

"Se ambos (Season = Spring) e (Season = Fall) forem true simultaneamente, então retorna It's the apocalypse and footwear doesn't matter."

Observações

Frequentemente usado com IF e IIF. Veja também NOT e OU.

Se ambas as expressões forem TRUE (ou seja, não FALSE ou NULL), então o resultado será TRUE. Se uma das expressões for NULL, o resultado será NULL. Em todos os outros casos, o resultado será FALSE.

Se você criar um cálculo no qual o resultado de uma comparação AND e exibido em uma planilha, o Tableau exibirá TRUE e FALSE. Para alterar isso, use a área Formatar na caixa de diálogo de formatação.

Observação: o operador AND emprega short circuit evaluation. Isso significa que se a primeira expressão for avaliada como FALSE, a segunda expressão não será avaliada. Isso poderá ser útil se a segunda expressão resultar em um erro quando a primeira for FALSE, pois a segunda expressão nesse caso nunca será avaliada.

CASE

SintaxeCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
SaídaDepende do tipo de dados dos valores <then>.
Definição

Avalia expression e compara com as opções especificadas (<value1>, <value2>, etc.). Quando um value que corresponde à expressão é encontrado, CASE retorna o return correspondente. Se nenhuma correspondência for encontrada, a (opcional) padrão será retornada. Se não houver padrão e nenhuma correspondência de valor, Null será retornado.

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

"Olhe para o campo Season. Se o valor for Summer, retorna Sandals. Se o valor for Winter, retorna Boots. Se nenhuma das opções do cálculo corresponder ao que está no campo Season, retorna um Sneakers."

Observações

Veja também IF e IIF.

Usado com WHEN, THEN, ELSE e END.

Dica: muitas vezes você pode usar um grupo para obter os mesmos resultados de uma função CASE complicada ou usar CASE para substituir a funcionalidade de agrupamento nativo, como no exemplo anterior. Você pode querer testar qual é o melhor desempenho para o seu cenário.

ELSE

SintaxeCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DefiniçãoUma parte opcional da expressão IF ou CASE usada para especificar um valor padrão a ser retornado se nenhuma das expressões testadas for true.
Exemplo
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
Observações

Usado com CASE, WHEN, IF, ELSEIF, THEN e END

ELSE é opcional com CASE e IF. Em um cálculo onde ELSE não for especificado, se nenhum dos <test> forem true, o cálculo geral retornará nulo.

ELSE não requer uma condição (como [Season] = "Winter") e pode ser considerado uma forma de tratamento nulo.

ELSEIF

Sintaxe[ELSEIF <test2> THEN <then2>]
DefiniçãoUma parte opcional de uma expressão IF usada para especificar condições adicionais além do IF inicial.
Exemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSEIF [Season] = "Spring" THEN 'Sneakers'
ELSEIF [Season] = "Autumn" THEN 'Sneakers'
ELSE 'Bare feet'
END
Observações

Usado com IF, THEN, ELSE e END

ELSEIF pode ser considerado cláusulas adicionais IF. ELSEIF é opcional e pode ser repetido várias vezes.

Diferente de ELSE, ELSEIF requer uma condição (como [Season] = "Winter").

END

DefiniçãoUsado para fechar uma expressão IF ou CASE.
Exemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Se Season = Summer, então retorna Sandals. Caso contrário, observe a próxima expressão. Se Season = Winter, então retorna Boots. Se nenhuma das expressões for true, retorna Sneakers."

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

"Olhe para o campo Season. Se o valor for Summer, retorna Sandals. Se o valor for Winter, retorna Boots. Se nenhuma das opções do cálculo corresponder ao que está no campo Season, retorna um Sneakers."

Observações

Usado com CASE, WHEN, IF, ELSEIF, THEN e ELSE.

IF

SintaxeIF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
SaídaDepende do tipo de dados dos valores <then>.
Definição

Testa uma série de expressões e retorna o valor <then> para o primeiro <test> true.

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

"Se Season = Summer, então retorna Sandals. Caso contrário, observe a próxima expressão. Se Season = Winter, então retorna Boots. Se nenhuma das expressões for true, retorna Sneakers."

Observações

Veja também IF e IIF.

Usado com ELSEIF, THEN, ELSE e END

IFNULL

SintaxeIFNULL(expr1, expr2)
SaídaDepende do tipo de dados dos valores <expr>.
Definição

Retorna <expr1> se for não nulo, caso contrário, retorna <expr2>.

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

"Se o campo Assigned Room não for nulo, retorna seu valor. Se o campo Assigned Room for nulo, retorna TBD."

Observações

Compare com ISNULL. IFNULL sempre retorna um valor. ISNULL retorna um booleano (true ou false).

Consulte também ZN.

IIF

SintaxeIIF(<test>, <then>, <else>, [<unknown>])
SaídaDepende do tipo de dados dos valores na expressão.
DefiniçãoVerifica se uma condição foi atendida (<test>) e retorna <then> se o teste for true, <else> se o teste for false e um valor opcional para <unknown>, se o teste for nulo. Se o desconhecido opcional não for especificado, IIF retorna nulo.
Exemplo
IIF([Season] = 'Summer', 'Sandals', 'Other footwear')

"Se Season = Summer, então retorna Sandals. Caso contrário, retorna Other footwear"

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

"Se Season = Summer, então retorna Sandals. Caso contrário, observe a próxima expressão. Se Season = Winter, então retorna Boots. Se nenhuma for true, retrona Sneakers."

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

"Se Season = Summer, então retorna Sandals. Caso contrário, observe a próxima expressão. Se Season = Winter, então retorna Boots. Se nenhuma das expressões for true, retorna Sneakers.”

Observações

Consulte também IF e CASE.

IIF não tem equivalente a ELSEIF (como IF) ou cláusulas WHEN repetidas (como CASE). Em vez disso, vários testes podem ser avaliados sequencialmente aninhando as declarações IIF como o elemento <unknown>. O primeiro true (mais externo) é retornado.

Ou seja, no cálculo abaixo o resultado será Red e não Orange, pois a expressão deixa de ser avaliada assim que A=A for avaliada como true:

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

IN

Sintaxe<expr1> IN <expr2>
SaídaBooleano (true ou false)
DefiniçãoRetorna TRUE se qualquer valor em <expr1> corresponde a qualquer valor em <expr2>.
Exemplo
SUM([Cost]) IN (1000, 15, 200)

"O valor do campo Custo é 1000, 15 ou 200?"

[Field] IN [Set]

"O valor do campo está presente no conjunto?"

Observações

Os valores <expr2> podem ser um conjunto, lista de valores literais ou campo combinado.

Consulte também WHEN.

ISDATE

SintaxeISDATE(string)
SaídaBooleano (true ou false)
DefiniçãoRetornará true se uma <string> for uma data válida. A expressão de entrada precisa ser um campo de cadeia de caracteres (texto).
Exemplo
ISDATE("2018-09-22")

"A cadeia de caracteres 2018-09-22 é uma data formatada corretamente?"

Observações

O que é considerado uma data válida depende da localidade(O link abre em nova janela) do sistema que avalia o cálculo. Por exemplo:

Nos Estados Unidos:

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

No Reino Unido:

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

ISNULL

SintaxeISNULL(expression)
SaídaBooleano (true ou false)
Definição

Retorna true se <expression> é NULL (não contém dados válidos).

Exemplo
ISNULL([Assigned Room])

"O campo Sala Atribuída é nulo?"

Observações

Compare com IFNULL. IFNULL sempre retorna um valor. ISNULL retorna um booleano.

Consulte também ZN.

MAX

SintaxeMAX(expression) ou MAX(expr1, expr2)
SaídaMesmo tipo de dados do argumento ou NULL  se alguma parte do argumento for nula.
Definição

Retorna o máximo de dois argumentos, que devem ser do mesmo tipo de dados.

MAX também pode ser aplicada a um único campo em uma agregação.

Exemplo
MAX(4,7) = 7
MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021#
MAX([Name]) = "Zander"
Observações

Para cadeia de caracteres

MAX geralmente é o valor que vem por último em ordem alfabética.

Para fontes de dados de bancos de dados, o valor de cadeia de caracteres MAX é o mais alto na sequência de classificação definida pelo banco de dados para essa coluna.

Para datas

Para datas, MAX é a data mais recente. Se MAX for uma agregação, o resultado não terá uma hierarquia de datas. Se MAX for uma comparação, o resultado manterá a hierarquia de datas.

Como uma agregação

MAX(expression) é uma função agregada e retorna um único resultado agregado. Isso é exibido como AGG(expression) na visualização.

Como comparação

MAX(expr1, expr2) compara os dois valores e retorna um valor em nível de linha.

Consulte também MIN.

MIN

SintaxeMIN(expression) ou MIN(expr1, expr2)
SaídaMesmo tipo de dados do argumento ou NULL  se alguma parte do argumento for nula.
Definição

Retorna, no mínimo, dois argumentos, que devem ser do mesmo tipo de dados.

MIN também pode ser aplicada a um único campo em uma agregação.

Exemplo
MIN(4,7) = 4
MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#
MIN([Name]) = "Abebi"
Observações

Para cadeia de caracteres

MIN geralmente é o valor que vem primeiro em ordem alfabética.

Para fontes de dados de bancos de dados, o valor de cadeia de caracteres MIN é o mais baixo na sequência de classificação definida pelo banco de dados para essa coluna.

Para datas

Para datas, o MIN é a data mais antiga. Se MIN for uma agregação, o resultado não terá uma hierarquia de datas. Se MIN for uma comparação, o resultado manterá a hierarquia de datas.

Como uma agregação

MIN(expression) é uma função agregada e retorna um único resultado agregado. Isso é exibido como AGG(expression) na visualização.

Como comparação

MIN(expr1, expr2) compara os dois valores e retorna um valor em nível de linha.

Consulte também MAX.

NOT

SintaxeNOT <expression>
SaídaBooleano (true ou false)
DefiniçãoRealiza uma negação lógica em uma expressão.
Exemplo
IF NOT [Season] = "Summer" 
THEN 'Don't wear sandals'
ELSE 'Wear sandals' 
END

"Se Season não é igual a Summer, então retorna Don't wear sandals. Caso contrário, retorna Wear sandals"

Observações

Frequentemente usado com IF e IIF. Veja também AND e OU.

OU

Sintaxe<expr1> OR <expr2>
SaídaBooleano (true ou false)
DefiniçãoRealiza uma disjunção lógica em duas expressões.
Exemplo
IF [Season] = "Spring" OR [Season] = "Fall" 
THEN "Sneakers"
END

"Se (Season = Spring) ou (Season = Fall) for true, retorna Sneakers."

Observações

Frequentemente usado com IF e IIF. Veja também AND e NOT.

Se uma das expressões for TRUE, o resultado será TRUE. Se ambas as expressões forem FALSE, o resultado será FALSE. Se ambas as expressões forem NULL, o resultado será NULL.

Se você criar um cálculo que exibe o resultado de uma comparação OR em uma planilha, o Tableau exibirá TRUE e FALSE. Para alterar isso, use a área Formatar na caixa de diálogo de formatação.

Observação: o operador OR emprega short circuit evaluation. Isso significa que se a primeira expressão for avaliada como TRUE, a segunda expressão não será avaliada. Isso poderá ser útil se a segunda expressão resultar em um erro quando a primeira for TRUE, pois a segunda expressão nesse caso nunca será avaliada.

THEN

SintaxeIF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
DefiniçãoUma parte obrigatória de uma expressaõ IF, ELSEIF ou CASE, usada para definir qual resultado retornar se um valor ou teste específico for true.
Exemplo
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Se Season = Summer, então retorna Sandals. Caso contrário, observe a próxima expressão. Se Season = Winter, então retorna Boots. Se nenhuma das expressões for true, retorna Sneakers."

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

"Olhe para o campo Season. Se o valor for Summer, retorna Sandals. Se o valor for Winter, retorna Boots. Se nenhuma das opções do cálculo corresponder ao que está no campo Season, retorna um Sneakers."

Observações

Usado com CASE, WHEN, IF, ELSEIF, THEN, ELSE e END

WHEN

SintaxeCASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
DefiniçãoUma parte obrigatória de uma expressão CASE. Encontra o primeiro <<value>> que corresponde <expression>> e retorna ao <then> correspondente.
Exemplo
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Olhe para o campo Season. Se o valor for Summer, retorna Sandals. Se o valor for Winter, retorna Boots. Se nenhuma das opções do cálculo corresponder ao que está no campo Season, retorna um Sneakers."

Observações

Usado com CASE, THEN, ELSE e END.

CASE também aceita a construção WHEN IN, como:

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

Os valores aos quais WHEN IN se compara precisam ser um conjunto, lista de valores literais ou campo combinado. Consulte também IN.

ZN

SintaxeZN(expression)
SaídaDepende do tipo de dados de <expression>ou 0.
DefiniçãoRetorna <expression> se não for nulo, caso contrário, retorna zero.
Exemplo
ZN([Test Grade])

"Se Test Grade não for nulo, retorne o valor. Se Test Grade for nulo, retorne 0."

Observações

ZN é um caso especializado de IFNULL onde a alternativa é se a expressão for nula é sempre 0, em vez de ser especificada no cálculo.

ZN é especialmente útil ao realizar cálculos adicionais, e um valor nulo tornaria todo o cálculo nulo. No entanto, tenha cuidado ao interpretar esses resultados, pois nulo nem sempre é sinônimo de 0 e pode representar dados ausentes.

Consulte também ISNULL.


Observação: alguns deles são na verdade operadores lógicos e aparecem em preto, não em azul. Para obter mais informações, consulte Sintaxe de operador.

Observação sobre CASE, IF e IIF

CASE é geralmente mais fácil de usar do que IF ou IIF. Em muitos casos, IF, IIF e CASE podem ser usados de forma intercambiável. Uma instrução CASE sempre pode ser reescrita como uma instrução IF, embora a função CASE geralmente seja mais concisa e possa ser mais fácil de entender. Entretanto, nem todas as instruções IF podem ser escritas como instruções CASE, porque cada ELSEIF pode referir-se a um campo diferente.

Dica: vamos comparar um exemplo usando a mesma lógica nessas três funções:

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)
)
)
)

A estrutura CASE é muito simples e fácil de escrever e entender. No entanto, a expressão (aqui, [Region]) não pode ser uma operação lógica, ao contrário de IF ou IIF.

Nulos são tratados da mesma forma para CASE e IF.

A estrutura IF THEN permite múltiplas cláusulas ELSEIF, o que torna as múltiplas avaliações muito mais fáceis do que com IIF.

Tratamento nulo: quaisquer resultados desconhecidos (nulos) são tratados pela mesma cláusula ELSE como resultados falsos. Aqui, qualquer região diferente das quatro especificadas (incluindo nula) receberá o valor 5.

A estrutura IIF lida com resultados desconhecidos de maneira diferente dos resultados falsos e tem uma sintaxe diferente de IF. A desvantagem do tratamento nulo específico é o aninhamento, como acima, que pode ser difícil de escrever e entender.

Tratamento nulo: qualquer região não nula diferente das quatro especificadas receberá um valor 5, mas um valor nulo receberá 0.

Observação: muitas vezes, você pode usar um grupo para obter os mesmos resultados de uma função case complicada. Teste para ver se uma opção tem melhor desempenho que a outra.

Exemplos

As funções CASE podem ser úteis para cenários como realiasing:

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

ou dar ao usuário final a capacidade de selecionar qual medida visualizar em um gráfico quando usado com um parâmetro(O link abre em nova janela):

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

Criar um cálculo lógico

Siga as etapas abaixo para saber como criar um cálculo lógico.

  1. No Tableau Desktop, conecte-se à fonte de dados salva Exemplo - Superloja, incluída no Tableau.
  2. Navegue até uma planilha.
  3. No painel Dados, arraste Estado até a divisória Linhas.
  4. No painel Dados, arraste Categoria até a divisória Linhas e coloque-a à direita de Estado.
  5. No painel Dados, arraste Vendas até a divisória Colunas.
  6. Selecione Análise > Criar campo calculado.
  7. No editor de cálculo aberto, faça o seguinte:
    • Nomeie o campo calculado KPI (indicador-chave de desempenho).
    • Insira a fórmula a seguir:
      SUM([Profit]) > 0

      Este cálculo verifica rapidamente se um membro é maior do que zero. Se for, ele retorna true, caso contrário, ele retorna false.

    • Ao terminar, clique em OK.
  8. O novo campo calculado aparece em Medidas no painel Dados. Assim como os outros campos, é possível usá-lo em uma ou mais visualizações.

  9. No painel Dados, arraste KPI até Color no cartão Marcas.

    Agora é possível visualizar quais categorias estão perdendo dinheiro em cada estado.

Consulte também

Visualizar indicadores-chave de progresso

Funções no Tableau

Funções do Tableau (por categoria)

Funções do Tableau (em ordem alfabética)

Agradecemos seu feedback!Seu feedback foi enviado. Obrigado!