Ler em inglês

Partilhar via


MUDAR

Aplica-se a:Coluna calculada Tabela calculada MedidaCá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

DAX
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 valuecorrespondente.
else Qualquer expressão escalar a ser avaliada se o resultado de expression não corresponder a nenhum dos argumentos value.

Valor devolvido

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.

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 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 corresponde, o result correspondente é retornado e outros values subsequentes não são avaliados. Certifique-se de que os values mais restritivos a serem avaliados sejam especificados antes de valuesmenos restritivos. Veja exemplos abaixo.

Exemplos

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

DAX
= 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 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:

DAX
= 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.

DAX
= 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.

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