PowerBI-基于另一个列值和时间函数的列输出

时间:2018-11-27 09:03:44

标签: switch-statement powerbi calculated-columns powerbi-desktop

我有一张这样的桌子:

enter image description here

我正在比较所有KPI的CurrentMonth和PreviousMonth的值(基于切片器中选择的月份),并基于此分配特定的结果。

但是,对于每个KPI,比较时都有一个逻辑。逻辑是:

enter image description here

因此,对于KPI A,CurrentMonth值必须比PreviousMonth高10%。如果是,则分配1。如果不是,则分配0。对于KPI B,它必须高3%。对于KPI C,只需要更高即可。

要提取CurrentMonth和PreviousMonth值,我创建了两个度量,其中一个具有时间函数:

CurrentMonth = SUM( [KPIValue] )

PreviousMonth = CALCULATE (
SUM( [KPIValue] );
PREVIOUSMONTH( [Date] )
)

我试图在表中创建一列以分配输出(结果),并使用了如下的Switch函数:

Result = SWITCH (
[KPIName];
"KPI A"; IF( [CurrentMonth] >= [PreviousMonth]*1.10;1;0 );
"KPI B"; IF( [CurrentMonth] >= [PreviousMonth]*1.03;1;0 );
"KPI C"; IF( [CurrentMonth] >= [PreviousMonth];1;0 );
)

我的问题是,当我尝试使用此 Switch 时,它不起作用,因为PreviousMonth变为空白(它无法为表的每一行计算时间函数-仅适用于措施)。

我现在迷路了,我应该如何从这里继续。我尝试创建一个 Measure 而不是一个 Column ,但是Switch函数不接受KPIName作为参数。

有什么想法吗?希望我在这里已经清楚了,如果没有,请告诉我您需要什么进一步的信息。

1 个答案:

答案 0 :(得分:0)

找到了解决方案。作为度量(不是列),请包含 SELECTEDVALUE 以能够检索KPIName。

Result = SWITCH (
SELECTEDVALUE([KPIName]);
"KPI A"; IF( [CurrentMonth] >= [PreviousMonth]*1.10;1;0 );
"KPI B"; IF( [CurrentMonth] >= [PreviousMonth]*1.03;1;0 );
"KPI C"; IF( [CurrentMonth] >= [PreviousMonth];1;0 );
)