Funções Lógicas
A lista abaixo mostra as funções lógicas que podem ser utilizadas em expressões.
Função | Descrição |
---|---|
Case | A instrução case tem duas formas diferentes. Simples: case Arg1 when Arg2 then Arg3 else Arg4 end A expressão Arg1 é avaliada e, quando Arg1 é igual a Arg2, Arg3 é retornado. Múltiplas expressões quando/então podem ser inseridas e são avaliadas em ordem da esquerda para direita. Pesquisado: case when Arg1 then Arg2 else Arg3 end RetornaArg2 seArg1=true e Arg3 seArg1=false. Múltiplos As expressões quando/então podem ser inseridas e são avaliadas em ordem da esquerda para direita. Consulte abaixo para mais informações. Exemplo: case when 1 < 2 then "a" when 1 < 3 then "b" else "c" end case [Column] when 3 then "a" when 2 then "b" else "c" end Para mais exemplos, veja abaixo e Colunas calculadas com base em condições. |
If(Arg1,Arg2,Arg3) | RetornaArg2 se Arg1=true eArg3 seArg1=false.Arg1 é do tipo booleano, geralmente o resultado de uma comparação. Arg2 e Arg3 podem ser de qualquer tipo, mas devem ser do mesmo tipo ou nulos. O segundo e o terceiro argumento apenas processam os subconjuntos das linhas, o que afeta todos os métodos baseados em colunas e métodos acumulados. Consulte abaixo para mais informações. Exemplos: If([Count] > 3, "many", "few") If(true, null, null) -> (Vazio) If(true, 1, null) -> 1 If(false, null, 2) -> 2 If(null, 1, 2) -> (Vazio) If(1 < 2, "Small", "Big")-> Small If([Column] Is Null,"0","has value") Para mais exemplos, veja abaixo e Colunas calculadas com base em condições. |
Is Not Null | Usado em uma instrução If ou Case para determinar se uma expressão produz ou não um valor vazio (valor nulo). Exemplo: If([Column] Is Not Null, "value was not null", "value was null") Se uma expressão contiver valores vazios (valores nulos), você poderá usar a função SN (consulte Funções de conversão) para substituir os valores nulos pelo valor especificado. |
Is Null |
Usado em uma instrução If ou Case para determinar se uma expressão produz ou não um valor vazio (valor nulo). Exemplo: If([Column] Is Null, "value was null", "value was not null") Se uma expressão contiver valores vazios (valores nulos), você poderá usar a função SN (consulte Funções de conversão) para substituir os valores nulos pelo valor especificado. |
Mais sobre usar "if" em expressões:
Quando você estiver usando uma instrução If em uma expressão, a condição no primeiro argumento limita os valores a serem avaliados no terceiro argumento. Para entender como funciona, primeiro pegue uma coluna de número inteiro simples como exemplo:
Insira uma coluna calculada usando a seguinte expressão:
if(Col1 < 2, Max(Col1), Max(Col1))
Isso resultará em uma nova coluna com dois valores diferentes; um para "case" quando o máximo para todos os valores que são menores que 2 e um mostrando o valor máximo para o resto dos valores (que também é o máximo da coluna inteira):
A função If foi projetada para dividir a coluna em dois grupos e continuar avaliando a expressão nos novos grupos.
Se estiver usando uma expressão Percentile, você obterá resultados diferentes na mesma expressão de percentil, dependendo de como a primeira condição dividiu a coluna:
Insira duas colunas usando as duas expressões seguintes:
if (Col2 < 4, 0, Percentile(Col2, 70))
if (Col2 < 6, 0, Percentile(Col2, 70))
Em seguida, obtém-se o seguinte resultado:
Como você pode ver, o valor do percentil mudará dependendo de como 'If' agrupou os dados.Mais sobre como usar "case" em expressões:
Ao trabalhar com expressões de caso, a condição depois de "when" é calculada na coluna inteira. O argumento depois de "then" é calculado nas linhas definidas pela condição "when". Se vários pares "when- then" estiverem incluídos na expressão, um "then" será limitado por todas as condições anteriores, bem como pela última.
Um exemplo de uso de uma coluna de número inteiro simples:
Inserir duas colunas calculadas, chamadas Case Min e Case Max, utilizando as seguintes expressões:
Case Min:
case when [Col1]<Avg([Col1]) then Min([Col1]) when [Col1]<(Avg([Col1]) + 1) then Min([Col1]) else Min([Col1]) end
Case Max:
case when [Col1] < Avg([Col1]) then Max([Col1]) when [Col1] < (Avg([Col1]) + 1) then Max([Col1]) else Max([Col1]) end
O resultado será: