SWITCH

Se aplica a:Columna calculadaTabla calculadaMedidaCálculo visual

Evalúa una expresión en una lista de valores y devuelve una de varias expresiones de resultado posibles. Esta función se puede usar para evitar tener varias instrucciones IF anidadas.

Sintaxis

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

Parámetros

Término Definición
expression Cualquier expresión DAX que devuelve un único valor escalar, donde la expresión se va a evaluar varias veces (para cada fila o contexto).
value Valor constante con el que van a coincidir los resultados de expression.
resultado Cualquier expresión escalar que se evaluará si los resultados de expression coinciden con el argumento value correspondiente.
else Cualquier expresión escalar que se evaluará si el resultado de expression no coincide con ninguno de los argumentos value.

Valor devuelto

Si hay una coincidencia con un valor, se devuelve un valor escalar del resultado correspondiente. Si no hay ninguna coincidencia con un valor, se devuelve un valor de else. Si ninguno de los valores coincide y else no se especifica, se devuelve BLANK.

Observaciones

  • La expresión que se va a evaluar puede ser un valor constante o una expresión. Un uso común de esta función es establecer el primer parámetro en TRUE. Vea los ejemplos siguientes.
  • Todas las expresiones result y la expresión else deben ser del mismo tipo de datos.
  • El orden de las condiciones es importante. En cuanto un valor coincide, se devuelve el resultado correspondiente y no se evalúan otros valores posteriores. Asegúrese de que los valores más restrictivos que se van a evaluar se especifican antes de los valores menos restrictivos. Vea los ejemplos siguientes.

Ejemplos

Un uso común de SWITCH es comparar la expresión con valores constantes. En este ejemplo se crea una columna calculada de nombres de meses:

= 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"
        )

Otro uso común de SWITCH es reemplazar varias instrucciones IF anidadas. Esto se logra estableciendo la expresión en TRUE, como se muestra en el ejemplo siguiente, que compara Punto de nuevo pedido y Nivel de inventario de seguridad en productos para identificar posibles riesgos de quedarse sin existencias:

= 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"
        )


El orden de los valores es importante. En el ejemplo siguiente, el segundo resultado nunca se devuelve porque el primer valor es menos restrictivo que el segundo. El resultado de este ejemplo es siempre "A" o "C", pero nunca "B".

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

La siguiente instrucción devuelve un error porque los tipos de datos de los argumentos de resultado son diferentes. Tenga en cuenta que los tipos de datos de todos los argumentos de resultado y else deben ser los mismos.

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