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 ter várias instruções aninhadas IF.

Sintaxe

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

Parâmetros

Termo Definição
expression Qualquer expressão DAX que retorna um único valor escalar em que 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 valuecorrespondente.
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 nenhuma das values corresponder e else não for especificada, BLANK será retornado.

Comentários

  • O expression a ser avaliado 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 value corresponder, o result correspondente será retornado e outros values subsequentes não serão avaliados. Verifique se os values mais restritivos a serem avaliados são especificados antes de valuesmenos restritivos. Veja exemplos abaixo.

Exemplos

Um uso comum de SWITCH é comparar expression com valuesconstantes. O exemplo a seguir cria uma coluna calculada de nomes de mês:

= 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 de SWITCH é substituir várias instruções de IF aninhadas. Isso é feito definindo a expressão como TRUE, conforme mostrado no exemplo a seguir, que compara o Nível de Estoque de Segurança e Ponto de Reordenação em produtos para identificar possíveis riscos de ficar sem 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 de values importa. No exemplo a seguir, o segundo result nunca é retornado porque o primeiro valor é menos restritivo 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. Tenha em mente que os tipos de dados em todos os argumentos result e else devem ser os mesmos.

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