如何使用集合表达式显示比较



我的数据集有WeekEndingDate和Sales。我正在显示一个包含所有选定数据的直表,但我需要另一个表显示以下内容:

                 Sales  (other columns...)
First week  :    1,000
Last week   :    1,350
Difference  :      350
Difference %:      35%

我的问题:

a)我可以在一个图表/表中有上述,或者我需要4个不同的图表显示列由集合表达式过滤?

b)我的策略是有2个变量(vMinWeek和vMaxWeek),并在集合表达式中使用它们。这是最好的路线吗?

c)我的集合表达式(下面)不起作用-它们对整个数据集求和。你能告诉我为什么吗?

=max ({$<WeekEndingDate={'$(vMinWeek)'}>}  Sales) 

谢谢你的帮助!

马拉

我认为你的集合不工作的原因是你的WeekEnd日期被格式化为日期,而你的变量被格式化为数字。

集合分析的诀窍在于,总是要考虑在列表框中输入什么才能得到答案。所以即使QlikView将WeekEnd 2014/08/18存储为41869,你也不能在WeekEnd列表框中键入41869并返回该日期。我将变量的形式设为=date(min(WeekEnd))

你问题的第二部分;拿到你想要的桌子。我会这样做。我用维度值制作了一个松散的表,这样它就可以在我们将要构建的图表中正确排序。

load dual(D,N) as DIM inline [
D,N
First Week,1
Last Week,2
Difference,3
Dif %,4
];

我也喜欢在脚本中定义变量,所以我会这样做。

set vFirstWeek='=date(min(WeekEnd))';
set vLastWeek='=date(max(WeekEnd))';`

然后,当构建直表时,我们使用DIM作为维度,但由于DIM没有连接到任何东西,我们必须做一些工作才能使它显示适合这些维度值的值。num(,'# ##0')只是将%的格式与总和的格式不同。为此,图表的"数字"选项卡中的数字格式必须设置为"默认表达式"。

if(DIM='First Week',num(sum({<WeekEnd={'$(vFirstWeek)'}>} Sales),'# ##0'),
    if(DIM='Last Week',num(sum({<WeekEnd={'$(vLastWeek)'}>} Sales),'# ##0'),
        if(DIM='Difference',num(sum({<WeekEnd={'$(vFirstWeek)'}>} Sales)-sum({<WeekEnd={'$(vLastWeek)'}>} Sales),'# ##0'),
            if(DIM='Dif %',num((sum({<WeekEnd={'$(vFirstWeek)'}>} Sales)-sum({<WeekEnd={'$(vLastWeek)'}>} Sales))/sum({<WeekEnd={'$(vLastWeek)'}>} Sales),'0.00%')))))

最新更新