CASE
definisce una o più condizioni e restituisce un risultato quando una condizione è soddisfatta. Puoi definire un risultato predefinito se nessuna delle condizioni è soddisfatta.
Esempio
Un uso comune di CASE
è la creazione di nuove categorie o raggruppamenti di dati. Ad esempio, per raggruppare i valori dei paesi selezionati in una dimensione Zona di vendita, puoi creare un'espressione CASE
di questo tipo:
CASE
WHEN Country IN ("Stati Uniti","Canada","Messico") THEN "Nord America"
WHEN Country IN ("Inghilterra","Francia") THEN "Europa"
ELSE "Altro"
END
Come funziona CASE
con ricerca
Un'espressione 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 che vuoi valutare. Puoi avere più clausoleWHEN
in una singola espressioneCASE
.THEN
: il risultato da restituire se la condizione della clausolaWHEN
è true. Deve esserci una sola clausolaTHEN
per ogni clausolaWHEN
nell'espressioneCASE
.ELSE:
facoltativo. Se nessuna delle condizioni della clausolaWHEN
è true,CASE
restituisce il valore nella clausolaELSE
oppureNULL
se non viene specificata nessuna clausolaELSE
.
CASE
valuta ogni clausola WHEN
successiva e restituisce il primo risultato in cui la condizione è true. Eventuali clausole WHEN
rimanenti e il risultato di ELSE
non vengono valutati. Se tutte le condizioni WHEN
sono false o NULL
, CASE
restituisce il risultato ELSE
. Se invece non è presente nessuna clausola ELSE
, restituisce NULL
.
Sintassi CASE con ricerca
CASE
WHEN condition THEN result
[WHEN condition THEN result]
[...]
[ELSE else_result]
END
Parametri
Condizione WHEN
Le condizioni WHEN
valutano i tuoi dati e restituiscono true se la condizione specificata è soddisfatta o false in caso contrario. Puoi utilizzare come condizione WHEN
qualsiasi espressione booleana valida.
Risultato THEN
A ciascuna condizione WHEN
deve corrispondere una clausola THEN
, che specifica i risultati se la condizione è true. Se sono presenti più condizioni WHEN
, l'espressione CASE
restituisce il risultato per la prima condizione true.
Note
Tutti i possibili risultati in una clausola THEN
devono essere dello stesso tipo.
Ad esempio, se la prima clausola THEN
restituisce testo, anche le clausole THEN
aggiuntive e la clausola ELSE
devono restituire testo.
ELSE else_result
La clausola ELSE
facoltativa specifica un risultato predefinito. Questa clausola viene restituita nel caso in cui nessuna delle clausole WHEN
sia true. Se un'espressione CASE
non ha clausole ELSE
e nessuna delle clausole WHEN è true, l'istruzione restituisce NULL
.
Un'espressione CASE
può avere solo una clausola ELSE
.
Altri esempi
Verificare la disuguaglianza
CASE WHEN Medium != "cpc" THEN "gratis" ELSE "a pagamento" 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 WHENImporto < 20 THEN "Piccoli" WHENImporto >= 20 e Importo < 100 THEN "Medi" WHENImporto >= 100 THEN "Grandi" END
Valutare una condizione AND logica
CASE
WHEN Country ISO Code = "US" AND Medium = "cpc"
THEN "Stati Uniti - A pagamento"
ELSE "altro"
END
Valutare una condizione logica AND/OR
CASE WHEN REGEXP_MATCH(Titolo video, ".*Google Analytics*") AND is_livestream = TRUE OR Durata video > 600 THEN "Live streaming o video lungo GA" END
Valutare un parametro
Ad esempio, puoi impostare un parametro "Target vendite" e modificarlo in modo da visualizzare gli ordini che soddisfano il target:
CASE WHEN Qty Sold >= Sales target parameter THEN 1 ELSE 0 END
Restituire un campo o un valore diverso a seconda del valore parametro
Il primo esempio 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.
Il secondo esempio mostra come restituire una metrica diversa in base a un valore parametro.
CASE WHEN Suddivisione = "Categoria di prodotto" THEN Categoria di prodotto WHEN Suddivisione = "Negozio" THEN Negozio END
## Nota: puoi scrivere questo anche utilizzando la sintassi CASE semplice. Esempio:
CASE Suddivisione WHEN "Categoria di prodotto" THEN Categoria di prodotto WHEN "Negozio" THEN Negozio END
CASE WHEN Mostra costo modificato = TRUE THEN Costo + Modifiche ELSE Costo END
Istruzioni CASE
nidificate
Puoi nidificare le istruzioni CASE
per creare una logica di diramazione più complessa:
CASE WHEN Color = "blu"
ELSE
"NON È UN CAPPELLO"
END