SWITCH
Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual
Avalia uma expressão em relação a uma lista de valores e retorna uma das várias expressões de resultado possíveis. Essa função pode ser usada para evitar ter várias instruções IF aninhadas.
Sintaxe
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Parâmetros
Termo | Definição |
---|---|
expression |
Qualquer expressão DAX que retorna um único valor escalar onde a expressão deve ser avaliada várias vezes (para cada linha/contexto). |
value |
Um valor constante a ser correspondido com os resultados de expression . |
result |
Qualquer expressão escalar a ser avaliada se os resultados de expression corresponderem ao value correspondente. |
else |
Qualquer expressão escalar a ser avaliada se o resultado de expression não corresponder a nenhum dos argumentos value . |
Valor de retorno
Se houver uma correspondência com um value
, um valor escalar do result
correspondente será retornado. Se não houver uma correspondência com um value
, um valor de else
será retornado. Se nenhum dos values
corresponder e else
não for especificado, BLANK será retornado.
Observações
- A
expression
a ser avaliada pode ser um valor constante ou uma expressão. Um uso comum desta função é definir o primeiro parâmetro comoTRUE
. Veja exemplos abaixo. - Todas as expressões
result
e a expressãoelse
devem ser do mesmo tipo de dados. - A ordem das condições é importante. Assim que um
value
corresponde, oresult
correspondente é retornado e 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 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"
)
Outro uso comum do SWITCH é substituir várias instruções IF aninhadas. Isso é feito definindo a expressão como TRUE
, como mostrado no exemplo a seguir, que compara o Ponto de Repedido e o Nível de Estoque de Segurança nos produtos para identificar riscos potenciais de esgotamento do 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 segundo result
nunca é retornado porque o primeiro valor é menos restritivo do que o segundo. O resultado neste exemplo é sempre A
ou C
, mas nunca B
.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
A instrução a seguir retorna um erro porque os tipos de dados nos argumentos result
são diferentes. Lembre-se de que os tipos de dados em todos os result
e else
argumentos devem ser os mesmos.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)