Partilhar via


SWITCH

Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual

Avalia uma expressão em relação a uma lista de valuesand retorna uma das várias expressões de resultado possíveis. Esta função pode ser usada para evitar ter vários IFstatementsaninhados.

Sintaxe

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

Parâmetros

Termo Definição
expression Qualquer expressão DAX que retorna uma única value escalar onde a expressão deve ser avaliada várias vezes (para cada linha/contexto).
value Um value constante a ser correspondido com os resultados de expression.
result Qualquer expressão escalar a ser avaliada if os resultados de expression corresponder ao valuecorrespondente.
else Qualquer expressão escalar a ser avaliada if o resultado de expression não corresponde a nenhum dos argumentos value.

Regresso value

If houver uma correspondência com um value, uma value escalar do result correspondente é retornada. If não houver uma correspondência com um value, uma value de else é devolvida. If none do andelse de correspondência de values não é especificado BLANK é retornado.

Observações

  • O expression a ser avaliado pode ser uma constante valueor uma expressão. Um uso comum dessa função é definir o parâmetro first como TRUE. Veja exemplos abaixo.
  • All result expressões and 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 and 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 de SWITCH é comparar expression com constante values. O exemplo a seguir cria uma coluna calculada de nomes de month:

= 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 é replace vários IFstatementsaninhados. Isso é feito definindo a expressão como TRUE, como mostrado no exemplo a seguir, que compara o ponto de reordem and o nível de estoque de segurança nos produtos para identificar riscos potenciais de falta de 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 secondresult nunca é retornado porque o firstvalue é menos restritivo do que o second. O resultado neste exemplo é sempre AorC, mas nunca B.

= SWITCH (
         TRUE,
         Product[Standard Cost] < 100, "A",
         Product[Standard Cost] < 10, "B",
         "C"
         )

A instrução a seguir retorna um error porque os tipos de dados nos argumentos result são diferentes. Lembre-se de que os tipos de dados em allresultandelse argumentos devem ser os mesmos.

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