我需要在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个选定年份维度值之间的计算。
答案 0 :(得分:3)
您可以使用Column()函数执行此操作。
Column(2) / Column(1)
数字指的是表达式列 - 第一个表达式是#1,等等。不计算维度列。
对列位置不敏感的替代方法,您可以在表达式中使用列标签。假设标签为“Sales”&amp ;; “余量”。方差表达式可写为:
[Margin] / [Sales]
答案 1 :(得分:0)
我99%确定没有内置功能。
我玩了一些我认为可行的选项,但只有这个证明有用。
我已将2个计算尺寸定义为变量Year1和Year2,我通过输入框更改。然后,简单计算的维度=[$(Year2)]-[$(Year1)]
为我提供了方差的新维度。
这假设Measure是来自数据的东西,就像这样,现在你只想在不同年份显示它。如果措施都是表达式,我没有考虑该怎么做。
答案 2 :(得分:0)
以下是使用变量和表达式的方法。这将创建2个新列,它们看起来像一个新维度,但实际上将通过使用if()语句来定义。
脚本中的第一步我们需要创建一个包含Measures的维度。这不应该与数据中已有的任何列相关联。 (UDR代表用户定义的报告)。双重只允许我们定义一个不按字母顺序排列的排序顺序。
UDR:
load dual(UDR,Sort) as Rows inline [
UDR, Sort
Measure1, 1
Measure2, 2];
结果应该是这样的。
下一步是创建多年的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
2014 vs 2015