跳到主要内容 跳到补充内容

Below

Below() 用于评估表格中列段数据内当前行下面的行的表达式。要计算的行取决于 offset 值,如果存在,则默认计算直接下面的行。对于除表格以外的图表,Below() 用于计算图表的等效垂直表中当前列下面的行的值。

语法:  

Below([TOTAL] expression [ , offset [,count ]])

返回数据类型:

参数:  

  • expr: 表达式或字段包含要度量的数据。
  • offset: 指定 offset n(大于 0)后,将表达式评估从当前行开始向上移动 n 行。指定 0 偏移量可以计算当前行上的表达式的值。 指定负偏移量数值后,使 Above 函数效果类似于具有相应正偏移量数值的 Below 函数。
  • count: 通过指定第三个参数 count 大于 1,函数将返回一连串 count 值,每个值对应一个从原始单元格开始向上计数的 count 表格行。 此时,可以将该函数用作任何特殊范围函数的参数。 范围函数
  • TOTAL: 如果表格是单维度或如果将 TOTAL 限定符用作参数,则当前列段数据总是与整列相等。

    定义聚合范围

在列段数据的最后一行中返回 NULL 值,因为该行下面没有其他行。

信息注释列段数据是指按当前排序顺序拥有与维度相同的值的连续单元格子集。内部记录图表函数在列段数据中进行计算,不包括等效垂直表图表中的最右侧维度。如果图表中只有一个维度,或者如果已指定 TOTAL 限定符,则计算整个表格中的表达式。
信息注释如果表格或表格等同物有多个垂直维度,当前列段数据将只包括值与所有维度列的当前行相同的行,但按内部字段排序显示最后维度的列除外。

限制:  

  • 递归调用将返回 NULL 值。

  • 当在图表的任何表达式中使用此图表函数时,不允许对图表中的 y 值进行排序或按表中的表达式列进行排序。因此,这些排序替代项会自动禁用。当您在可视化或表格中使用此图表函数时,可视化的排序将返回到此函数的排序输入。

示例和结果:  

示例 1:  

示例表格输出
Customer Sum(Sales) Below(Sum(Sales)) Sum(Sales) + Below(Sum(Sales)) Below offset 3 Higher?
- 2566 - - 1344 -
Astrida 587 539 1126 - Higher
Betacab 539 683 1222 - -
Canutility 683 757 1440 - -
Divadip 757 - - - -

在示例 1 中显示的表格图表的界面中,表格通过维度 Customer 和以下度量进行创建:Sum(Sales)Below(Sum(Sales))

对于包含 DivadipCustomer 行,列 Below(Sum(Sales)) 列返回 NULL,因为其下没有行。Canutility 行的结果显示 DivadipSum(Sales) 值,Betacab 的结果显示 CanutilitySum(Sales) 值,以此类推。

此表格还显示了更复杂的度量,您可在标记以下内容的列中看到:Sum(Sales)+Below(Sum(Sales))Below +Offset 3Higher?。这些表达式的工作方式如以下段落所述。

对于标有 Sum(Sales)+Below(Sum(Sales)) 的列,Astrida 的行将显示行 Betacab + Astrida (539+587) 的 Sum(Sales) 值的相加结果。Betacab 行的结果将显示 Canutility + Betacab (539+683) 的 Sum(Sales) 值的相加结果。

使用表达式 Sum(Sales)+Below(Sum(Sales), 3) 创建的标有 Below +Offset 3 的度量具有参数 offset(已设置为 3),并且能够获取当前行下面三行中的值。它将当前 CustomerSum(Sales) 值添加到下面三行 Customer 的值中。后三个 Customer 行的值是 NULL 值。

标记 Higher? 的度量通过以下表达式创建:IF(Sum(Sales)>Below(Sum(Sales)), 'Higher')。此表达式将度量 Sum(Sales) 当前行的值与其下一行进行比较。如果当前行的值较大,则输出文本“Higher”。

提示注释此函数也可以用于图表(如条形图),但不能用于表格。
提示注释对于其他图表类型,应将图表转换成等效垂直表,这样您就可以轻松解释该函数涉及到的行。

对于包含多个维度的图表,表达式(包含 AboveBelowTopBottom 函数)的结果取决于 QlikView 对列维度进行排序的顺序。QlikView 根据最后排序的维度得出的列段数据计算函数的值。可以在排序下控制列排序顺序,并且不一定采用在表格中显示的顺序。请参考 Above 函数中的示例 2,了解更多信息。

示例 2:  

Below 函数可用作范围函数的输入。例如:RangeAvg (Below(Sum(Sales),1,3))

在函数 Below() 的参数中,offset 设置为 1,count 设置为 3。在列段数据(其中有一行)的当前行正下方的三行上查找表达式 Sum(Sales) 的结果。这三个值用作 RangeAvg() 函数的输入,用于查找所提供的数字范围中的平均值。

Customer 为维度的表格为表达式提供了以下结果。

示例表格输出
Customer RangeAvg (Below(Sum(Sales),1,3))
Astrida 659.67
Betacab 720
Canutility 757
Divadip -

示例中所使用的数据:

Monthnames:

LOAD * INLINE [

Month, Monthnumber

Jan, 1

Feb, 2

Mar, 3

Apr, 4

May, 5

Jun, 6

Jul, 7

Aug, 8

Sep, 9

Oct, 10

Nov, 11

Dec, 12

];

Sales2013:

crosstable (Month, Sales) LOAD * inline [

Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec

Astrida|46|60|70|13|78|20|45|65|78|12|78|22

Betacab|65|56|22|79|12|56|45|24|32|78|55|15

Canutility|77|68|34|91|24|68|57|36|44|90|67|27

Divadip|57|36|44|90|67|27|57|68|47|90|80|94

] (delimiter is '|');

要按正确顺序对月份进行排序,在创建图表后,请转到图表属性的Sort标签,然后选中Sort by下的Expression复选框。在表达式框中,输入 Monthnumber

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!

加入分析现代化计划

Remove banner from view

使用分析现代化计划实现现代化,同时不损害您宝贵的 QlikView 应用程序。 单击此处 了解更多信息或联系: ampquestions@qlik.com