SWITCH
Se aplica a:columna CalculadaTabla calculadaMeasurecálculo visual
Evalúa una expresión en una lista de valuesand devuelve una de varias expresiones de resultado posibles. Esta función se puede usar para evitar tener varios IFstatementsanidados.
Sintaxis
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Parámetros
Término | Definición |
---|---|
expression |
Cualquier expresión DAX que devuelva un solo value escalar donde la expresión se va a evaluar varias veces (para cada fila o contexto). |
value |
Constante value que se va a comparar con los resultados de expression . |
result |
Cualquier expresión escalar que se va a evaluar if los resultados de expression coinciden con el value correspondiente. |
else |
Cualquier expresión escalar que se va a evaluar if el resultado de expression no coincide con ninguno de los argumentos de value . |
Devolver value
If hay una coincidencia con un value
, se devuelve un value escalar del result
correspondiente.
If no hay ninguna coincidencia con un value
, se devuelve un value de else
. no se especifica Ifnone de la coincidencia de values
andelse
, BLANK se devuelve.
Observaciones
- El
expression
que se va a evaluar puede ser una constante valueor una expresión. Un uso común de esta función es establecer el parámetro first enTRUE
. Vea los ejemplos siguientes. -
All
result
expresiones and la expresiónelse
debe ser del mismo tipo de datos. - El orden de las condiciones es importante. En cuanto una
value
coincide, se devuelve elresult
correspondiente, and no se evalúan otrasvalues
posteriores. Asegúrese de que losvalues
más restrictivos que se van a evaluar se especifican antes devalues
menos restrictivo. Vea los ejemplos siguientes.
Ejemplos
Un uso común de SWITCH es comparar expression
con values
constantes . En el ejemplo siguiente se crea una columna calculada de nombres de 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"
)
Otro uso común de SWITCH es replace varios IFstatementsanidados. Esto se logra estableciendo la expresión en TRUE
, como se muestra en el ejemplo siguiente, que compara Reorder Point and Safety Stock Level 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 values
importa. En el ejemplo siguiente, nunca se devuelve el secondresult
porque el firstvalue es menos restrictivo que el second. El resultado de este ejemplo siempre es A
orC
, 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 result
son diferentes. Tenga en cuenta que los tipos de datos de allresult
andelse
argumentos deben ser los mismos.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)