Condividi tramite


SWITCH

Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo

Valuta un'espressione rispetto a un elenco di valuesand restituisce una delle più espressioni di risultato possibili. Questa funzione può essere usata per evitare di avere più IFstatementsannidati.

Sintassi

SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])

Parametri

Termine Definizione
expression Qualsiasi espressione DAX che restituisce un singolo value scalare in cui l'espressione deve essere valutata più volte (per ogni riga/contesto).
value Costante value da associare ai risultati di expression.
result Qualsiasi espressione scalare da valutare if i risultati di expression corrispondono al valuecorrispondente.
else Qualsiasi espressione scalare da valutare if il risultato di expression non corrisponde ad alcuno degli argomenti value.

Restituisce value

If viene restituita una corrispondenza con un value, viene restituita una value scalare del result corrispondente. If non esiste una corrispondenza con un value, viene restituito un value da else. If none della corrispondenza valuesandelse non viene specificata, viene restituito BLANK.

Osservazioni:

  • Il expression da valutare può essere una costante valueor un'espressione. Un uso comune di questa funzione consiste nell'impostare il parametro first su TRUE. Vedere gli esempi seguenti.
  • All result espressioni and l'espressione else deve essere dello stesso tipo di dati.
  • L'ordine delle condizioni è importante. Non appena viene restituita una value, viene restituita la result corrispondente, and 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 di nomi month:

= 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 replace più IFstatementsannidati. 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 secondresult non viene mai restituito perché il firstvalue è meno restrittivo rispetto al second. Il risultato di questo esempio è sempre AorC, ma non Bmai .

= SWITCH (
         TRUE,
         Product[Standard Cost] < 100, "A",
         Product[Standard Cost] < 10, "B",
         "C"
         )

L'istruzione seguente restituisce un error perché i tipi di dati negli argomenti result sono diversi. Tenere presente che i tipi di dati in allresultandelse argomenti devono essere uguali.

= SWITCH (
        [Class],
        "L", "Large",
        "H", 0.1
        )