SWITCH
Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual
Avalia uma expressão em relação a uma lista de valuesand retorna uma das várias expressões de resultado possíveis. Esta função pode ser usada para evitar ter vários IFstatementsaninhados.
Sintaxe
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Parâmetros
Termo | Definição |
---|---|
expression |
Qualquer expressão DAX que retorna uma única value escalar onde a expressão deve ser avaliada várias vezes (para cada linha/contexto). |
value |
Um value constante a ser correspondido com os resultados de expression . |
result |
Qualquer expressão escalar a ser avaliada if os resultados de expression corresponder ao value correspondente. |
else |
Qualquer expressão escalar a ser avaliada if o resultado de expression não corresponde a nenhum dos argumentos value . |
Regresso value
If houver uma correspondência com um value
, uma value escalar do result
correspondente é retornada.
If não houver uma correspondência com um value
, uma value de else
é devolvida.
If
none do andelse
de correspondência de values
não é especificado BLANK é retornado.
Observações
- O
expression
a ser avaliado pode ser uma constante valueor uma expressão. Um uso comum dessa função é definir o parâmetro first comoTRUE
. Veja exemplos abaixo. -
All
result
expressões and expressãoelse
devem ser do mesmo tipo de dados. - A ordem das condições é importante. Assim que um
value
corresponde, oresult
correspondente é retornado and outrosvalues
subsequentes não são avaliados. Certifique-se de que osvalues
mais restritivos a serem avaliados sejam especificados antes devalues
menos restritivos. Veja exemplos abaixo.
Exemplos
Um uso comum de SWITCH é comparar expression
com constante values
. O exemplo a seguir cria uma coluna calculada de nomes 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"
)
Outro uso comum do SWITCH é replace vários IFstatementsaninhados. Isso é feito definindo a expressão como TRUE
, como mostrado no exemplo a seguir, que compara o ponto de reordem and o nível de estoque de segurança nos produtos para identificar riscos potenciais de falta de estoque:
= 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"
)
A ordem dos values
importa. No exemplo a seguir, o secondresult
nunca é retornado porque o firstvalue é menos restritivo do que o second. O resultado neste exemplo é sempre A
orC
, mas nunca B
.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
A instrução a seguir retorna um error porque os tipos de dados nos argumentos result
são diferentes. Lembre-se de que os tipos de dados em allresult
andelse
argumentos devem ser os mesmos.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)