我们已获悉我们公司的 Qlikview 即将终止,因此正在考虑转向 PowerBI。
我正在尝试将此表达式从 Qlikview 迁移到 PowerBI。
我的qlikview表情是:
If(SType = 'AA',
only({\<S_type={'AA'}\>} MeanValue)
,
If(SType = 'BB',
only({\<S_type={'BB'}\>} MeanValue)
,
If(SType = 'CC',
only({\<S_type={'CC'}\>} MeanValue)
,
only({\<S_type={'DD'}\>} MeanValue)
)
)
)
SType见表1 s_type见表2
MeanValue 存储在表 2 中,如下所示:
S_类型 | 平均值 |
---|---|
AA | 2.16 |
BB | 2.30 |
抄送 | 2.19 |
DD | 2.54 |
我想出的最佳代码是:
If( CALCULATE(Count('Table1'[SType]), FILTER('Table1', 'Table1'[Type] = "AA")) = 1,
CALCULATE(SUM('Table2'[MeanValue]), FILTER('Table2', 'Table2'[S_Type] = "AA")),
If( CALCULATE(Count('Table1'[SType]), FILTER('Table1', 'Table1'[Type] = "BB")) = 1,
CALCULATE(SUM('Table2'[MeanValue]), FILTER('Table2', 'Table2'[S_Type] = "BB")),
If( CALCULATE(Count('Table1'[SType]), FILTER('Table1', 'Table1'[SType] = "CC")) = 1,
CALCULATE(SUM('Table2'[MeanValue]), FILTER('Table2', 'Table2'[S_Type] = "CC")),
If( CALCULATE(Count('Table1'[SType]), FILTER('Table1', 'Table1'[SType] = "DD")) = 1,
CALCULATE(SUM('Table2'[MeanValue]), FILTER('Table2', 'Table2'[S_Type] = "DD")))
)
)
)
这是最好的方法还是有其他更有效的方法?
您需要使用 SELECTEDVALUE() 来获取 Table1 中选定的 SType,避免重复 CALCULATE 和 FILTER :
CalculatedMeanValue =
SWITCH(
TRUE,
SELECTEDVALUE('Table1'[SType]) = "AA", CALCULATE(SUM('Table2'[MeanValue]), 'Table2'[S_type] = "AA"),
SELECTEDVALUE('Table1'[SType]) = "BB", CALCULATE(SUM('Table2'[MeanValue]), 'Table2'[S_type] = "BB"),
SELECTEDVALUE('Table1'[SType]) = "CC", CALCULATE(SUM('Table2'[MeanValue]), 'Table2'[S_type] = "CC"),
SELECTEDVALUE('Table1'[SType]) = "DD", CALCULATE(SUM('Table2'[MeanValue]), 'Table2'[S_type] = "DD"),
BLANK()
)