Above - 图表函数

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

Syntax:  

Above([TOTAL] expr [ , offset [,count]])

Return data type:

Arguments:  

参数 说明
expr 表达式或字段包含要度量的数据。
offset

指定 offsetn(大于 0)后,将表达式评估从当前行开始向上移动 n 行。

指定 0 偏移量可以计算当前行上的表达式的值。

指定负偏移量数值后,使 Above 函数效果类似于具有相应正偏移量数值的 Below 函数。

count

通过指定第三个参数 count 大于 1,函数将返回一连串 count 值,每个值对应一个从原始单元格开始向上计数的 count 表格行。

此时,可以将该函数用作任何特殊范围函数的参数。 范围函数

TOTAL

如果表格是单维度或如果将 TOTAL 限定符用作参数,则当前列段数据总是与整列相等。

定义聚合范围

在列段数据的第一行中返回 NULL 值,因为其上没有行。

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

Limitations:  

递归调用将返回 NULL 值。

Examples and results:  

Example 1:  

示例 1 的表格可视化。

在此示例中显示的表格的屏幕截图中,表格可视化内容通过维度 Customer 和以下度量进行创建:Sum(Sales)Above(Sum(Sales))

对于包含 Astrida 的行 Customer,列 Above(Sum(Sales)) 返回 NULL,因为其上没有行。Betacab 行的结果显示 AstridaSum(Sales) 值,Canutility 的结果显示 BetacabSum(Sales) 值,以此类推。

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

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

此表格还显示了更复杂的度量:根据 Sum(Sales)+Above(Sum(Sales)) 创建的一个值以及根据 Higher? 创建的一个标有 IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') 的值。

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

Example 2:  

在此示例中显示的表格的屏幕截图中,已将更多维度添加到可视化内容中:MonthProduct。 对于包含多个维度的图表,表达式(包含 AboveBelowTopBottom 函数)的结果取决于 Qlik Sense 对列维度进行排序的顺序。Qlik Sense 根据最后排序的维度得出的列段数据计数函数的值。可以在排序下的属性面板中控制列排序顺序,并且列不一定按顺序显示在表格中。

在以下示例 2 的表格可视化屏幕截图中,最后排序的维度是 Month,因此 Above 函数基于月评估。每个月(JanAug),即一个列段数据的每个 Product 值都有一系列结果。随后是下一个列段数据的一系列结果:下一个 Product 每个 Month 的结果。每个 Product 的每个 Customer 值都将有一个列段数据。

示例 2 的表格可视化。

Example 3:  

在示例 3 的表格可视化屏幕截图中,最后排序的维度是 Product。为此,可在属性面板的“排序”标签中将维度 Product 移到第 3 个位置。每个 Product 都会评估 Above 函数,因为只有两个产品 AABB,并且每个系列只有一个非空结果。在月 JanBB 行中,Above(Sum(Sales)) 的值为 46。对于 AA 行,值为 NULL。对于任何一个月,每个 AA 行的值将始终为 NULL,因为在 AA 行的上方没有任何 Product 值。在月 FebAABB 行中评估第二个系列,对于 CustomerAstrida 以此类推。当为 Astrida 评估完所有月份后,为第二个 CustomerBetacab 值重复此顺序,以此类推。

示例 3 的表格可视化。

Example 4:  

结果

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

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

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

Astrida

Betacab

Canutility

Divadip

-

587

563

603

示例中所使用的数据:

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

要按正确顺序对月份进行排序,在创建可视化后,转到属性面板的Sorting部分,选择Month,然后勾选复窗格Sort by expression。在表达式框中,输入 Monthnumber