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

时间:2016-08-04 08:12:57

标签: qlikview

我有一个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>}&amp; {1<Month = $:: Month>}要做到这一点,但我无法做到这一点。

1 个答案:

答案 0 :(得分:1)

有几种方法可以实现这一目标,但如果你确定你希望表达式只考虑你提到的两个字段,我想从所有数据的总集开始,过滤到只是那些你想要的。

你基本上就在那里,这取决于你想要限制的表达方式,你可以在你想要限制的任何地方使用{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.是吗?