CASE (Searched)

As declarações CASE avaliam uma ou mais condições e devolvem um resultado quando a primeira condição é cumprida ou um resultado predefinido se nenhuma das condições for cumprida.

Veja também: SE.

Exemplos de utilização

Uma utilização comum das CASE é criar novas categorias ou agrupamentos de dados. Por exemplo, para agrupar valores de países selecionados numa dimensão de região de vendas, pode criar uma declaração CASE semelhante a esta:


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

Sintaxe


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

Parâmetros

  • condition - Um campo ou uma expressão lógica. As cláusulas WHEN avaliam condition e devolvem true se a condição especificada for cumprida ou false se a condição não for cumprida.

  • result – Um campo ou uma expressão de qualquer tipo. Cada cláusula WHEN tem de ter uma cláusula THEN correspondente, que especifica os resultados se esse WHEN condition for verdadeiro. Se existirem várias cláusulas WHEN, a declaração CASE devolve o valor result para o primeiro valor condition verdadeiro.

  • else_result (opcional) – Um campo ou uma expressão de qualquer tipo. A cláusula ELSE else_result especifica um resultado predefinido para a declaração CASE. Esta cláusula é devolvida se nenhuma das cláusulas WHEN for verdadeira. Se uma declaração CASE não tiver uma cláusula ELSE e nenhuma das cláusulas WHEN for verdadeira, a declaração CASE devolve NULL.

Uma declaração CASE só pode ter uma cláusula ELSE.

Como funciona a funcionalidade CASE pesquisado

Uma declaração CASE pesquisada começa com a palavra-chave CASE e termina com a palavra-chave END. Entre estas, tem várias secções ou cláusulas:

  • WHEN: uma condição que quer avaliar. Pode ter várias cláusulas WHEN numa única declaração CASE.
  • THEN: o resultado a devolver se a condição da cláusula WHEN for verdadeira. Tem de ter uma cláusula THEN para cada cláusula WHEN na sua declaração CASE.
  • ELSE: opcional. Se nenhuma das condições da cláusula WHEN for verdadeira, CASE devolve o valor na cláusula ELSE ou NULL se não for especificada nenhuma cláusula ELSE.

CASE avalia cada cláusula WHEN sucessiva e devolve o primeiro resultado em que a condição é verdadeira. Quaisquer cláusulas WHEN restantes e o resultado ELSE não são avaliados. Se todas as condições WHEN forem falsas ou NULL, CASE devolve o resultado ELSE ou, se não estiver presente nenhuma cláusula ELSE, devolve NULL.

Exemplos

Verifique se existem desigualdades

    CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END

Classifique os valores de dimensões numéricas em grupos discretos

Por exemplo, pode separar as encomendas em "Pequena", "Média" ou "Grande" com base no valor da encomenda:

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

Classifique os valores da dimensão de data em intervalos discretos

Por exemplo, pode separar um ano em semestres com base em datas específicas:

    CASE
        WHEN Date >= DATE(2018, 9, 23) and Date < DATE(2018, 12, 13) THEN "Fall Semester 2018"
        WHEN Date >= DATE(2018, 1, 3) and Date < DATE(2019, 3, 21) THEN "Winter Semester 2019"
        WHEN Date >= DATE(2019, 3, 27) and Date < DATE(2019, 6, 12) THEN "Spring Semester 2019"
        ELSE "Uncategorized"
    END

Avalie uma condição lógica E

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

Avalie uma condição lógica E/OU

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

Devolva um campo ou um valor diferente consoante o valor de um parâmetro

Exemplo 1: devolve uma dimensão com base no valor do parâmetro selecionado. Pode usar esta técnica para permitir que os utilizadores alterem a dimensão de discriminação usada por um gráfico.

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

Também pode escrever isto usando a sintaxe CASE simples:

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

Exemplo 2: devolva uma métrica diferente com base num valor de parâmetro.

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

Declarações CASE aninhadas

Pode aninhar declarações CASE para criar uma lógica de ramificação mais complexa:

    CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN
        CASE WHEN Color = "blue"
            THEN "BLUE HAT" ELSE "JUST A HAT"
        END
        ELSE "NOT A HAT"
    END