如何显示与集合表达式的比较?

时间:2015-05-17 18:42:22

标签: qlikview

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

                 Sales  (other columns...)

First week  :    1,000

Last week   :    1,350

Difference  :      350

Difference %:      35%

我的问题:

a)我可以在一个图表/表格中使用上述内容,还是需要4个不同的图表来显示按集合表达式过滤的列?

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

c)我的set表达式(如下)不起作用 - 它们对整个数据集求和。你能帮我理解为什么吗?

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

感谢您的帮助!

马拉

1 个答案:

答案 0 :(得分:0)

我认为您的设置不起作用的原因是您的WeekEnd日期被格式化为日期,而您的变量被格式化为数字。

Set Analysis的技巧总是要考虑你需要在列表框中输入什么来得到你的答案。因此,即使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%')))))