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

How to display comparisons with set expression?

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

                 Sales  (other columns...)

First week  :    1,000

Last week   :    1,350

Difference  :      350

Difference %:      35%

我的问题:

a) 我能否将以上内容合二为一 chart/table,或者我需要 4 个不同的图表来显示按集合表达式过滤的列?

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

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

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

感谢您的帮助!

马拉

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

集合分析的诀窍是始终考虑您必须在列表框中键入什么才能得到答案。因此,即使 QlikView 将 WeekEnd 2014/08/18 存储为 41869,您也无法在 WeekEnd 列表框中键入 41869 并取回该日期。所以我会让你的变量成为 =date(min(WeekEnd)).

你问题的第二部分;得到你想要的table。我会这样做。我对维度值进行了宽松的 table,对偶是为了在我们要构建的图表中正确排序。

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))';`

然后在构建直线 table 时,我们将尺寸用作 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%')))))