CASE (con ricerca)

Le istruzioni CASE valutano una o più condizioni e restituiscono un risultato quando la prima condizione è soddisfatta o un risultato predefinito se nessuna delle condizioni è soddisfatta.

Vedi anche: SE.

Esempi di utilizzo

Un uso comune di CASE è la creazione di nuove categorie o raggruppamenti di dati. Ad esempio, per raggruppare valori dei paesi scelti in una dimensione Zona di vendita, puoi creare un'istruzione CASE di questo tipo:


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

Sintassi


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

Parametri

  • condition: un'espressione o un campo logico. Le clausole WHEN valutano condition e restituiscono true se la condizione specificata è soddisfatta o false se la condizione non è soddisfatta.

  • result: un campo o un'espressione di qualsiasi tipo. A ogni clausola WHEN deve corrispondere una clausola THEN, che specifica i risultati se WHEN condition è true. Se sono presenti più clausole WHEN, l'istruzione CASE restituisce il result per il primo condition true.

  • else_result (facoltativo): un campo o un'espressione di qualsiasi tipo. La clausola ELSE else_result specifica un risultato predefinito per l'istruzione CASE. Questa clausola viene restituita nel caso in cui nessuna delle clausole WHEN sia true. Se un'istruzione CASE non ha clausole ELSE e nessuna delle clausole WHEN è vera, l'istruzione CASE restituisce NULL.

Un'istruzione CASE può avere una sola clausola ELSE.

Come funziona CASE con ricerca

Un'istruzione CASE inizia con la parola chiave CASE e termina con la parola chiave END. In mezzo ci saranno varie sezioni o clausole:

  • WHEN: una condizione da valutare. Puoi avere più clausole WHEN in una singola istruzione CASE.
  • THEN: il risultato da restituire se la condizione della clausola WHEN è true. Devi avere una clausola THEN per ogni clausola WHEN nell'istruzione CASE.
  • ELSE: facoltativo. Se nessuna delle condizioni della clausola WHEN è true, CASE restituisce il valore nella clausola ELSE o NULL se non viene specificata alcuna clausola ELSE.

CASE valuta ogni clausola WHEN successiva e restituisce il primo risultato in cui la condizione è true. Eventuali clausole WHEN rimanenti e il risultato ELSE non vengono valutati. Se tutte le condizioni WHEN sono false o NULL, CASE restituisce il risultato ELSE oppure, se non è presente alcuna clausola ELSE, restituisce NULL.

Esempi

Verificare la disuguaglianza

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

Classificare i valori delle dimensioni numeriche in bucket discreti

Ad esempio, puoi separare gli ordini in "Piccoli", "Medi" e "Grandi" in base all'importo:

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

Valutare una condizione AND logica

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

Valutare una condizione logica AND/OR

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

Restituire un campo o un valore diverso a seconda del valore parametro

Esempio 1: restituisce una dimensione in base al valore parametro selezionato. Puoi utilizzare questa tecnica per consentire agli utenti di cambiare la dimensione di suddivisione utilizzata da un grafico.

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

Puoi scrivere questo messaggio anche utilizzando la sintassi CASE semplice:

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

Esempio 2: restituisce una metrica diversa in base a un valore parametro.

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

Istruzioni CASE nidificate

Puoi nidificare le istruzioni CASE per creare una logica di diramazione più complessa:

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