Compartilhar via


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 vários comandos IF aninhados.

Sintaxe

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

Parâmetros

Termo Definição
expressão Qualquer expressão DAX que retorne um único valor escalar em que a expressão deva ser avaliada várias vezes (para cada linha/contexto).
value Um valor constante a ser correspondido com os resultados da expressão.
result Qualquer expressão escalar a ser avaliada se os resultados da expressão corresponderem ao valor correspondente.
else Qualquer expressão escalar a ser avaliada se os resultados da expressão não corresponderem a nenhum dos argumentos value.

Retornar valor

Se houver uma correspondência com um valor, um valor escalar do result correspondente será retornado. Se não houver uma correspondência com um valor, um valor else será retornado. Se nenhum dos valores corresponder e else não for especificado, BLANK será retornado.

Comentários

  • A expressão a ser avaliada pode ser um valor constante ou uma expressão. Um uso comum dessa função é definir o primeiro parâmetro como TRUE. Veja exemplos abaixo.
  • Todas as expressões result e a expressão else devem ser do mesmo tipo de dados.
  • A ordem das condições é importante. Assim que um valor corresponder, o result correspondente será retornado e outros valores subsequentes não serão avaliados. Certifique-se de que os valores mais restritivos a serem avaliados sejam especificados antes de valores menos restritivos. Veja exemplos abaixo.

Exemplos

Um uso comum do SWITCH é comparar a expressão com valores constantes. 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, conforme mostrado no exemplo a seguir, que compara o Ponto de Recompra e o Nível de Estoque Seguro em produtos para identificar possíveis riscos 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 valores é importante. 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 do result são diferentes. Lembre-se de que os tipos de dados em todos os argumentos result e else devem ser os mesmos.

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