CASE

Avalia uma lista de condições e retorna a primeira expressão de resultado correspondente.

CASE define uma ou mais condições e retorna um resultado quando uma condição é atendida. Você pode definir um resultado padrão para quando nenhuma das condições é atendida.

Neste artigo:

Exemplo

CASE é normalmente utilizado para criar novas categorias ou agrupamentos de dados. Por exemplo, para agrupar valores de países selecionados na dimensão Região de vendas, você pode criar uma expressão CASE como esta:

CASE 
    WHEN Country IN ("USA","Canada","Mexico") THEN "North America" 
    WHEN Country IN ("England","France") THEN "Europe" 
    ELSE "Other" 
END

Como a expressão CASE pesquisada funciona

Uma expressão CASE começa com a palavra-chave CASE e termina com END. Entre esses termos, você terá um número de seções ou "cláusulas":

  • WHEN: uma condição que você quer avaliar. É possível ter várias cláusulas WHEN em uma única expressão CASE.
  • THEN: o resultado que será retornado se a condição da cláusula WHEN for verdadeira. É preciso ter uma cláusula THEN para cada WHEN na sua expressão CASE.
  • ELSE: opcional. Se nenhuma das condições da cláusula WHEN for verdadeira, CASE retornará o valor na cláusula ELSE. Ou, então, se ELSE não for especificado, NULL será retornado.

CASE avalia cada cláusula WHEN sucessiva e retorna o primeiro resultado quando a condição é verdadeira. As cláusulas WHEN restantes e o resultado ELSE não são avaliadas. Se todas as condições WHEN forem falsas ou NULL, CASE retornará o resultado ELSE. Caso não haja uma cláusula ELSE, retornará NULL.

Sintaxe da CASE pesquisada


CASE
    WHEN condition THEN result
    [WHEN condition THEN result]
    [...]
    [ELSE else_result]
END

Parâmetros

Condição WHEN

A condição WHEN avalia seus dados e retorna verdadeiro se a condição especificada é atendida e falso quando não é. Você pode usar qualquer expressão booleana válida como condição WHEN.

THEN result

Cada condição WHEN precisa ter uma cláusula THEN correspondente que especifica os resultados se essa condição é verdadeira. Se houver várias condições WHEN, a expressão CASE retornará o resultado para a primeira que for verdadeira.

Observações

Todos os resultados possíveis em uma cláusula THEN precisam ser do mesmo tipo.

Por exemplo, se a primeira cláusula THEN retornar um texto, as cláusulas THEN adicionais e a cláusula ELSE também precisarão retornar um texto.

ELSE else_result

A cláusula opcional ELSE especifica um resultado padrão, que será retornado se nenhuma das cláusulas WHEN for verdadeira. Caso uma expressão CASE não tenha uma cláusula ELSE e nenhuma das cláusulas WHEN seja verdadeira, a instrução retornará NULL. Só pode haver uma cláusula ELSE em uma expressão CASE.

Mais exemplos

Verifique a desigualdade:

CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
Para cenários "if/then/else" simples, use a função IF.

Classifique os valores de dimensão numérica em intervalos discretos. Por exemplo, você pode separar os pedidos em Pequeno, Médio e Grande com base no valor deles:

CASE
    WHEN Amount < 20 THEN "Small"
    WHEN Amount >= 20 and Amount < 100 THEN "Medium"
    WHEN Amount >= 100 THEN "Large"
END

 

Avalie uma condição AND lógica:

CASE 
    WHEN Country ISO Code = "US" AND Medium = "cpc" 
    THEN "US - Paid" 
    ELSE "other" 
END

 

Avalie uma condição AND/OR lógica e use uma correspondência de expressão regular:

CASE 
    WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*")
    AND is_livestream = TRUE 
    OR Video Length > 600 
    THEN "GA Livestream or long video" 
END

 

Avalie um parâmetro. Por exemplo, você pode definir um parâmetro de "Sales target" e ajustá-lo para ver quais pedidos atenderam à meta:

CASE WHEN Qty Sold >= Sales target parameter THEN 1 ELSE 0 END

 

Retorne um campo ou valor diferente, dependendo de um valor de parâmetro.

O primeiro exemplo retorna uma dimensão com base no valor do parâmetro selecionado. Você pode usar essa técnica para permitir que os usuários mudem a dimensão de detalhamento usada por um gráfico.

O segundo exemplo mostra como retornar uma métrica diferente com base em um valor de parâmetro.

CASE 
    WHEN Breakdown = "Product Category" THEN Product Category 
    WHEN Breakdown = "Store" THEN Store 
END

Observação: você também pode escrever isso usando a sintaxe CASE simples:

CASE Breakdown 
    WHEN "Product Category" THEN Product Category
    WHEN "Store" THEN Store
END

CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END

Isso foi útil?
Como podemos melhorá-lo?