我有一张这样的桌子:
我正在比较所有KPI的CurrentMonth和PreviousMonth的值(基于切片器中选择的月份),并基于此分配特定的结果。
但是,对于每个KPI,比较时都有一个逻辑。逻辑是:
因此,对于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作为参数。
有什么想法吗?希望我在这里已经清楚了,如果没有,请告诉我您需要什么进一步的信息。
答案 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 );
)