SWITCH
Valuta un'espressione rispetto a un elenco di valori e restituisce una delle più espressioni di risultato possibili. Questa funzione può essere usata per evitare di avere più istruzioni IF annidate.
Sintassi
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Parametri
Termine | Definizione |
---|---|
expression |
Qualsiasi espressione DAX che restituisce un singolo valore scalare in cui l'espressione deve essere valutata più volte (per ogni riga/contesto). |
value |
Valore costante da associare ai risultati di expression . |
result |
Qualsiasi espressione scalare da valutare se i risultati di expression corrispondono al value corrispondente. |
else |
Qualsiasi espressione scalare da valutare se il risultato di expression non corrisponde ad alcuno degli argomenti value . |
Valore restituito
Se esiste una corrispondenza con un value
, viene restituito un valore scalare del result
corrispondente. Se non esiste una corrispondenza con un value
, viene restituito un valore di else
. Se nessuno dei values
corrisponde e else
non viene specificato, viene restituito BLANK.
Osservazioni:
- Il
expression
da valutare può essere un valore costante o un'espressione. Un uso comune di questa funzione consiste nell'impostare il primo parametro suTRUE
. Vedere gli esempi seguenti. - Tutte le espressioni
result
e l'espressioneelse
devono essere dello stesso tipo di dati. - L'ordine delle condizioni è importante. Non appena viene restituita una
value
, viene restituito ilresult
corrispondente e altrevalues
successive non vengono valutate. Assicurarsi che ivalues
più restrittivi da valutare siano specificati prima divalues
meno restrittivi. Vedere gli esempi seguenti.
Esempi
Un uso comune di SWITCH consiste nel confrontare expression
con la costante values
. Nell'esempio seguente viene creata una colonna calcolata con nomi di mese:
= SWITCH (
[Month Number Of Year],
1, "January",
2, "February",
3, "March",
4, "April",
5, "May",
6, "June",
7, "July",
8, "August",
9, "September",
10, "October",
11, "November",
12, "December",
"Unknown month number"
)
Un altro uso comune di SWITCH consiste nel sostituire più istruzioni IF annidate. Questa operazione viene eseguita impostando l'espressione su TRUE
, come illustrato nell'esempio seguente, che confronta Reorder Point and Safety Stock Level sui prodotti per identificare i potenziali rischi di esaurimento delle scorte:
= SWITCH (
TRUE,
[Reorder Point] > [Safety Stock Level], "Good: Safety stock level exceeded",
[Reorder Point] = [Safety Stock Level], "Minimal: Safety stock level met",
[Reorder Point] < [Safety Stock Level], "At risk: Safety stock level not met",
ISBLANK ( [Reorder Point] ), "Incomplete: Reorder point not set",
ISBLANK ( [Safety Stock Level] ), "Incomplete: Safety stock level not set",
"Unknown"
)
L'ordine dei values
è importante. Nell'esempio seguente il secondo result
non viene mai restituito perché il primo valore è meno restrittivo del secondo. Il risultato di questo esempio è sempre A
o C
, ma mai B
.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
L'istruzione seguente restituisce un errore perché i tipi di dati negli argomenti result
sono diversi. Tenere presente che i tipi di dati in tutti gli argomenti result
e else
devono essere gli stessi.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)