Qlikview 表达式不受选择的影响,除了两个特定字段

Qlikview expression not affected by selection EXCEPT two specific fields

我有一个 Qlikview 表达式,我希望它不受任何选择的影响,除了两个特定字段:Year & Month.

我的表情是:

Sum(Aggr(IF(Duration = 0.5 , 0.5,
IF(DayName = 'Sat',0,
IF(DayName = 'Sun',0,
RangeSum(
Count({<Key = {"=Len(Trim([Date From])) > 0"}>}DISTINCT Name),
Avg({<Key = {"=Len(Trim([Date From])) = 0"}>}0))))), Name, ADate))

我知道你可以使用类似的东西; {1<Year = $:: Year>} & {1<Month = $:: Month>} 来完成这个,但我不能完全正确。

有几种方法可以做到这一点,但如果您确定希望表达式只考虑您提到的两个字段,我喜欢从所有数据的总集开始,然后过滤到您想要。

你基本上就在那里,这取决于你想要限制的表达你会使用 {1<Year = $:: Year>}{1<Month = $:: Month>} 就像你在任何你想限制的地方所说的那样。 1 集标识符将从应用程序中所有数据的总集开始,然后集修饰符 YearMonth 将根据选择设置$ 设置标识符。

所以我认为这样的事情应该可行:

Sum({1<Year=$::Year, Month=$::Month>}
    Aggr(
        IF( Duration = 0.5 , 0.5,
            IF(DayName = 'Sat', 0,
                IF(DayName = 'Sun', 0,
                    RangeSum({
                        Count({<Key = {"=Len(Trim([Date From])) > 0"}>} DISTINCT Name),
                        Avg({<Key = {"=Len(Trim([Date From])) = 0"}>} 0 )
                    )
                )
            )
        ),
    Name, ADate)
)

您可能还需要将此添加到您的 countavg 表达式中。

我对这个表达式感到困惑:Avg({<Key = {"=Len(Trim([Date From])) = 0"}>} 0 )。平均为 0。对吗?