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ção | Realiza uma conjunção lógica em duas expressões. (Se ambos os lados forem true, o teste lógico retornará true.) | 
| Saída | Booleano (true ou false) | 
| Exemplo | IF [Season] = "Spring" AND "[Season] = "Fall" "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  Se você criar um cálculo no qual o resultado de uma comparação  Observação: o operador  | 
CASE
| Sintaxe | CASE <expression> 
                         | 
| Saída | Depende do tipo de dados dos valores <then>. | 
| Definição | Avalia  | 
| Exemplo | "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 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
| Sintaxe | CASE <expression> 
							 | 
| Definição | Uma parte opcional da expressão IFouCASEusada para especificar um valor padrão a ser retornado se nenhuma das expressões testadas for true. | 
| Exemplo | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] | 
| Observações | Usado com CASE, WHEN, IF, ELSEIF, THEN e END 
 
 | 
ELSEIF
| Sintaxe | [ELSEIF <test2> THEN <then2>] | 
| Definição | Uma parte opcional de uma expressão IFusada para especificar condições adicionais além do IF inicial. | 
| Exemplo | IF [Season] = "Summer" THEN 'Sandals' | 
| Observações | Usado com IF, THEN, ELSE e END 
 Diferente de  | 
END
| Definição | Usado para fechar uma expressão IFouCASE. | 
| Exemplo | IF [Season] = "Summer" THEN 'Sandals' "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] "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 | 
IF
| Sintaxe | IF <test1> THEN <then1>  | 
| Saída | Depende do tipo de dados dos valores <then>. | 
| Definição | Testa uma série de expressões e retorna o valor  | 
| Exemplo | IF [Season] = "Summer" THEN 'Sandals' "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 | 
IFNULL
| Sintaxe | IFNULL(expr1, expr2) | 
| Saída | Depende do tipo de dados dos valores <expr>. | 
| Definição | Retorna  | 
| 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.  Consulte também ZN. | 
IIF
| Sintaxe | IIF(<test>, <then>, <else>, [<unknown>]) | 
| Saída | Depende do tipo de dados dos valores na expressão. | 
| Definição | Verifica 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,IIFretorna 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', "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', "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 | 
 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: 
 | 
IN
| Sintaxe | <expr1> IN <expr2> | 
| Saída | Booleano (true ou false) | 
| Definição | Retorna TRUEse 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  Consulte também WHEN. | 
ISDATE
| Sintaxe | ISDATE(string) | 
| Saída | Booleano (true ou false) | 
| Definição | Retornará 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: 
 No Reino Unido: 
 | 
ISNULL
| Sintaxe | ISNULL(expression) | 
| Saída | Booleano (true ou false) | 
| Definição | Retorna true se  | 
| Exemplo | ISNULL([Assigned Room]) "O campo Sala Atribuída é nulo?" | 
| Observações | Compare com IFNULL.  Consulte também ZN. | 
MAX
| Sintaxe | MAX(expression)ouMAX(expr1, expr2) | 
| Saída | Mesmo 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. 
 | 
| Exemplo | MAX(4,7) = 7 | 
| Observações | Para cadeia de caracteres 
 Para fontes de dados de bancos de dados, o valor de cadeia de caracteres  Para datas Para datas,  Como uma agregação 
 Como comparação 
 Consulte também  | 
MIN
| Sintaxe | MIN(expression)ouMIN(expr1, expr2) | 
| Saída | Mesmo 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. 
 | 
| Exemplo | MIN(4,7) = 4 | 
| Observações | Para cadeia de caracteres 
 Para fontes de dados de bancos de dados, o valor de cadeia de caracteres  Para datas Para datas, o  Como uma agregação 
 Como comparação 
 Consulte também  | 
NOT
| Sintaxe | NOT <expression> | 
| Saída | Booleano (true ou false) | 
| Definição | Realiza uma negação lógica em uma expressão. | 
| Exemplo | IF NOT [Season] = "Summer" "Se Season não é igual a Summer, então retorna Don't wear sandals. Caso contrário, retorna Wear sandals" | 
| Observações | 
OU
| Sintaxe | <expr1> OR <expr2> | 
| Saída | Booleano (true ou false) | 
| Definição | Realiza uma disjunção lógica em duas expressões. | 
| Exemplo | IF [Season] = "Spring" OR [Season] = "Fall" "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  Se você criar um cálculo que exibe o resultado de uma comparação  Observação: o operador  | 
THEN
| Sintaxe | IF <test1> THEN <then1> 
							 | 
| Definição | Uma parte obrigatória de uma expressaõ IF,ELSEIFouCASE, usada para definir qual resultado retornar se um valor ou teste específico for true. | 
| Exemplo | IF [Season] = "Summer" THEN 'Sandals' "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] "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 | 
WHEN
| Sintaxe | CASE <expression> 
							 | 
| Definição | Uma parte obrigatória de uma expressão CASE. Encontra o primeiro <<value>> que corresponde<expression>> e retorna ao<then>correspondente. | 
| Exemplo | CASE [Season] "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 <expression> Os valores aos quais  | 
ZN
| Sintaxe | ZN(expression) | 
| Saída | Depende do tipo de dados de <expression>ou 0. | 
| Definição | Retorna <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 | 
 
 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.
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:
| CASE | IF | IIF | 
| CASE [Region] | IF [Region] = 'West' THEN 1 | IIF([Region] = 'West', 1, | 
| 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
ENDou 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.
- No Tableau Desktop, conecte-se à fonte de dados salva Exemplo - Superloja, incluída no Tableau.
- Navegue até uma planilha.
- No painel Dados, arraste Estado até a divisória Linhas.
- No painel Dados, arraste Categoria até a divisória Linhas e coloque-a à direita de Estado.
- No painel Dados, arraste Vendas até a divisória Colunas.
- Selecione Análise > Criar campo calculado.
- 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.
 
- No painel Dados, arraste KPI até Color no cartão Marcas.Agora é possível visualizar quais categorias estão perdendo dinheiro em cada estado.  
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.
Consulte também
Visualizar indicadores-chave de progresso
