Muitas vezes a função IF atende bem este cenário, mas a medida que muitas condições começam a ser aninhadas, a leitura fica prejudicada, deixando a fórmula extensa e suscetível a erros.
Exemplo usando IF para criara a regra de negócio que representa o tipo de cargo:
=IF([Salario]<=3000, “Junior”,
IF([Salario]>3000, “Pleno”,
IF([Salario]>5000, “Senior I”,
IF(AND([Salario]>8000,[Salario]<=10000), “Senior II”, "Outros"))))
Veja, que devemos respeitar o encadeamento.
Trabalhando com SWITCH
Existem basicamente duas formas de usar switch1-Condição Única:
Estabelece uma expressão e avalia os possíveis resultados.
SWITCH(expression,
value1, result1,
value2, result2,
:
:
else
)
expression: retorna um valor escalar que são comparados nas constantes value1 com result1.
Exemplo:
=SWITCH([MonthNum],
1,”January”,
2,”February”,
3,”March”,
4,”April”,
5,”May”,
6,”June”,
7,”July”,
8,”August”,
9,”September”,
10,”October”,
11,”November”,
12,”December”,
“Invalid Month Number”
)
O problema desta implementação é que ficamos restritos a avaliação de igualdade de um único valor. Já na alternativa a seguir, vamos que podemos avaliar ranges de valores.
2-Condições Múltiplas
Estabelece o resultado da expressão como TRUE() e avalia as expressões em busca daquela que possui o valor verdadeiro.SWITCH(TRUE(),
booleanexpression1, result1,
booleanexpression2, result2,
:
:
else
)
Retorna um valor para cada expressão que é avaliada como TRUE()
SWITCH(TRUE(),
AND([salario]>=0, [salario]<=3000), “Junior”,
AND([salario]>=3001, [salario]<=5000), “Pleno”,
AND([salario]>=5001, [salario]<=8000), “Senior I”,
AND([salario]>=8001, [salario]<=10000), “Senior II”,
“Outros”
)
Desta maneira, cada resultado pode ter uma expressão complexa, que represente adequadamente a regra de negócio estabelecida.
Apesar de ser possível chegar ao mesmo resultado usando IF, a função SWITCH é bem mais fácil de ser construída e lida, sendo assim menos suscetível a erros e mais simples de ser debugada.
Fonte: https://powerpivotpro.com/2012/06/dax-making-the-case-for-switch/
Nenhum comentário:
Postar um comentário