Qlikview 到 DAX 表达式转换

问题描述 投票:0回答:1

我们已获悉我们公司的 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")))
)
)
)

这是最好的方法还是有其他更有效的方法?

powerbi dax
1个回答
0
投票

您需要使用 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()
)
© www.soinside.com 2019 - 2024. All rights reserved.