如果满足条件,则在QlikView列上标记累积值

时间:2014-05-29 11:39:34

标签: qlikview

我在Qlikview中有一个包含2列的表:

A B   
a 10 
b 45 
c 30 
d 15 

基于此表,我有一个完整累积的公式定义为: SUM(a)/ SUM(TOTAL a)

结果,

A B   D             
b 45 45/100=0.45 
c 30 75/100=0.75
d 15 90/100=0.90
a 10 100/100=1

我的问题是。如何在A列中标记D列中的值<&lt; = 0.8)? 挑战是D被定义为完全积累,但如果我在公式中引用D,它就不会考虑完全积累!

我试着定义一个公式E = if(D> 0.8,&#39; Y&#39;,&#39; N&#39;)但这个公式没有取可见(累计)值不幸的是,对于D而言,它没有积累。如果这样做,我会试图隐藏(不禁用)E并从表格的维度列,文本颜色选项中引用它。有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

您无法从维度或其属性中获取表达式列的值,因为表达式列依赖于提供的维度。它会创造一个无限循环。您的选择是:

  • 将背景颜色应用于表达式列,而不是尺寸。这实际上更有意义,因为累积值将具有颜色,而不是尺寸。
  • 在加载此特定表时,让QlikView创建一个包含B的累计值的新列。但是,这意味着图表表的顺序需要固定才能使累积有意义。
  • 使用聚合创建临时表并使用RangeSum()累积值。请注意,如果按照列A的升序排序表,则只能正确累积。

    =IF(Aggr(RangeSum(Above(Sum(B),0,10)),A)/100>0.8,
        rgb(0,0,0),
        rgb(255,0,0)
    )