Ler em inglês

Compartilhar 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. Essa 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 em que a expressão deve ser avaliada várias vezes (para cada linha/contexto).
value Uma constante value a ser correspondida com os resultados de expression.
result Qualquer expressão escalar a ser avaliada if os resultados de expression correspondem ao valuecorrespondente.
else Qualquer expressão escalar a ser avaliada if o resultado de expression não corresponde a nenhum dos argumentos value.

Retornar value

If há uma correspondência com um value, uma value escalar da result correspondente é retornada. If não há uma correspondência com um value, um value de else é retornado. If none da correspondência valuesandelse não é especificada, BLANK é retornado.

Comentários

  • 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 a expressão else deve ser do mesmo tipo de dados.
  • A ordem das condições é importante. Assim que um value corresponder, o result correspondente será retornado, and 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 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 de SWITCH é replace vários IFstatementsaninhados. Isso é feito definindo a expressão como TRUE, conforme mostrado no exemplo a seguir, que compara o Nível de Estoque de Segurança and 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 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. Tenha em mente que os tipos de dados em argumentos allresultandelse devem ser os mesmos.

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