使用SWITCH和SELECTEDVALUE进行DAX,用于基于切片器选择的输出

时间:2018-11-12 19:22:43

标签: powerbi dax

我有一列显示“订单”的老化小时数(“ AgingHours”)。我想创建另一个名为“ Aged”的列,如果“ AgingHours”值大于切片器中的选定值,则该列为1,否则为0。用户可以选择“ 1 Hr”,“ 2 Hrs”,或来自切片器的“ 3小时”。

例如:

创建了名为AgingDate [HourDay]的切片器。用户从切片器中选择“ 2小时”(这意味着,“ AgingHours”列中> = 2的任何内容都会在“ Aged”列中输出1。下面的aged列中的输出将是:

Order AgingHours Aged
A          1       0
B          2       1

我尝试根据选择使用IF语句创建计算列,但是每个值都显示为0。

Aged = 
SWITCH (
    SELECTEDVALUE( AgingDate[HourDay] ),
    "1 Hr", IF ( [AgingHours] >= 1, 1, 0 ),
    "2 Hrs", IF ( [AgingHours] >= 2, 1, 0 ),
    "3 Hrs", IF ( [AgingHours] >= 3, 1, 0 ),
     0
    )

1 个答案:

答案 0 :(得分:3)

计算的列仅在加载数据时评估一次。因此,他们无法响应您报告页面上的任何切片器或过滤器。

尤其是SELECTEDVALUE( AgingDate[HourDay] )返回一个空白值(因为它不知道您选择了哪个单一值),这意味着您的SWITCH使用了 else 0

如果您使用相同的代码作为度量,那么只要您在引用[AgingHours]时也使用表名,就可以正常工作。