活动
SWITCH
根据 valuesand 列表计算表达式,返回多个可能的结果表达式之一。 此函数可用于避免有多个嵌套 IFstatements。
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
术语 | 定义 |
---|---|
expression |
返回单个标量 value 的任何 DAX 表达式,其中表达式将多次计算(对于每行/上下文)。 |
value |
要与 expression 结果匹配的常量 value。 |
result |
要计算的任何标量表达式 ifexpression 的结果与相应的 value 匹配。 |
else |
要计算的任何标量表达式 ifexpression 的结果与任何 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。 此示例的结果始终 A
orC
,但从未 B
。
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
以下语句返回 error,因为 result
参数中的数据类型不同。 请记住,allresult
andelse
参数中的数据类型必须相同。
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)