QlikView中的方差列

时间:2015-06-30 15:15:32

标签: qlikview

我需要在qlikview中创建一个“Variance”列:

             2013         2014       Variance
Measure 1    100          110        10%
Measure 2    105          100        -4.8%
...

这可以在Qlikview中完成,只需一个“计算维度”列,其中包含:

[Value for Column2]/[Value for Column 1] - 1

那么它适用于我在表格中添加的任何新措施,无论第1列和第2列是什么?

编辑: 样本数据:

 Year     Measure1    Measure2
 2012     9750        197
 2013     10000       200
 2014     11000       210
 2015     11500       215

我需要将输出结构如下所示,并使用Variance列作为2个选定年份维度值之间的计算。

3 个答案:

答案 0 :(得分:3)

您可以使用Column()函数执行此操作。

Column(2) / Column(1)

数字指的是表达式列 - 第一个表达式是#1,等等。不计算维度列。

对列位置不敏感的替代方法,您可以在表达式中使用列标签。假设标签为“Sales”&amp ;; “余量”。方差表达式可写为:

[Margin] / [Sales]

答案 1 :(得分:0)

我99%确定没有内置功能。

我玩了一些我认为可行的选项,但只有这个证明有用。

我已将2个计算尺寸定义为变量Year1和Year2,我通过输入框更改。然后,简单计算的维度=[$(Year2)]-[$(Year1)]为我提供了方差的新维度。

Variable Dimensions

这假设Measure是来自数据的东西,就像这样,现在你只想在不同年份显示它。如果措施都是表达式,我没有考虑该怎么做。

Table of Results

答案 2 :(得分:0)

以下是使用变量和表达式的方法。这将创建2个新列,它们看起来像一个新维度,但实际上将通过使用if()语句来定义。

脚本中的第一步我们需要创建一个包含Measures的维度。这不应该与数据中已有的任何列相关联。 (UDR代表用户定义的报告)。双重只允许我们定义一个不按字母顺序排列的排序顺序。

UDR:
load dual(UDR,Sort) as Rows inline [
UDR, Sort
Measure1, 1
Measure2, 2];

结果应该是这样的。

Ctrl+T

下一步是创建多年的2个变量。

我在脚本中执行此操作,但您可以使用任何变量创建方法。

set vMaxYear="=max(Year)";
set vMinYear="=min(Year)";

现在我们使用字段Rows作为维度。

我们需要为最大选定年份创建一个表达式。请注意,第一个if()正在测试表达式所在的UDR的哪些行,然后提供该行的表达式的定义。第二个if()正在针对变量vMaxYear测试年份维度,该变量将随着选择而变化。最小年份与使用vMinYear替换vMaxYear相同。

if(Rows='Measure1',sum(if(Year=vMaxYear,Measure1)),
if(Rows='Measure2',sum(if(Year=vMaxYear,Measure2))))

最后,我们使用column()函数计算第三个表达式中的方差。

column(1)/column(2)

要使表达式标签动态化,我只需将=vMinYear添加到标签中即可。

结果是这个表,它将响应我在年份列表框中的选择。

2013 vs 2014

2013 vs 2014

2014 vs 2015

2014 vs 2015