SWITCH

适用于:计算列计算表Measure视觉计算

根据 valuesand 列表计算表达式,返回多个可能的结果表达式之一。 此函数可用于避免有多个嵌套 IFstatements。

语法

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

parameters

术语 定义
expression 返回单个标量 value 的任何 DAX 表达式,其中表达式将多次计算(对于每行/上下文)。
value 要与 expression结果匹配的常量 value。
result 要计算的任何标量表达式 ifexpression 的结果与相应的 value匹配。
else 要计算的任何标量表达式 ifexpression 的结果与任何 value 参数都不匹配。

返回 value

If 有一个匹配项与 value,则返回相应 result 中的标量 value。 If 与 value不匹配,则返回来自 else 的 value。 未指定 values 匹配 andelse 的 Ifnone,则返回 BLANK。

备注

  • 要计算的 expression 可以是表达式 valueor 常量。 此函数的常见用途是将 first 参数设置为 TRUE。 请参阅以下示例。
  • All result 表达式 andelse 表达式必须具有相同的数据类型。
  • 条件的顺序很重要。 一旦一个 value 匹配,就会返回相应的 result,and 不会评估其他后续 values。 请确保在限制较少的 values之前指定要评估的最严格的 values。 请参阅以下示例。

示例

SWITCH 的常见用途是将 expression 与常量 values进行比较。 以下示例创建 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"
        )

SWITCH 的另一个常见用途是 replace 多个嵌套 IFstatements。 这是通过将表达式设置为 TRUE来实现的,如以下示例所示,它将重新排序点 and 安全库存级别的产品,以确定缺货的潜在风险:

= 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"
        )


values 的顺序很重要。 在下面的示例中,从不返回 secondresult,因为 firstvalue 的限制小于 second。 此示例的结果始终 AorC,但从未 B

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

以下语句返回 error,因为 result 参数中的数据类型不同。 请记住,allresultandelse 参数中的数据类型必须相同。

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