Condividi tramite


SWITCH

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

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 valuecorrispondente.
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 su TRUE. Vedere gli esempi seguenti.
  • Tutte le espressioni result e l'espressione else devono essere dello stesso tipo di dati.
  • L'ordine delle condizioni è importante. Non appena viene restituita una value, viene restituito il result corrispondente e altre values successive non vengono valutate. Assicurarsi che i values più restrittivi da valutare siano specificati prima di valuesmeno 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
        )