我有一个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>}
要做到这一点,但我无法做到这一点。
答案 0 :(得分:1)
有几种方法可以实现这一目标,但如果你确定你希望表达式只考虑你提到的两个字段,我想从所有数据的总集开始,过滤到只是那些你想要的。
你基本上就在那里,这取决于你想要限制的表达方式,你可以在你想要限制的任何地方使用{1<Year = $:: Year>}
或{1<Month = $:: Month>}
。 1
集标识符将从应用程序中所有数据的总集开始,然后将根据由指定的默认状态中的选择设置集修饰符Year
和Month
。 $
设置标识符。
所以我认为这样的事情应该有效:
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)
)
您可能还必须将此添加到count
和avg
表达式中。
我对这个表达感到困惑:Avg({<Key = {"=Len(Trim([Date From])) = 0"}>} 0 )
。它平均为0.是吗?