Top

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

Syntax:  

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

Return data type: dual

Arguments:  

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

指定 offset n 大于 1 后,将表达式评估向下移到顶行下面的 n 行。

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

count 通过指定第三个参数 count 大于 1,函数将返回一连串 count 值,每个值对应当前列段数据的最后一个 count 行中的一行。 此时,可以将该函数用作任何特殊范围函数的参数。 范围函数
TOTAL

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

定义聚合范围

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

Limitations:  

递归调用将返回 NULL 值。

Examples and results:  

Example: 1

Customer Sum(Sales) Top(Sum(Sales)) Sum(Sales) + Top(Sum(Sales)) Top offset 3
  2566 587 3153 3249
Astrida 587 587 1174 1270
Betacab 539 587 1126 1222
Canutility 683 587 1270 1366
Divadip 757 587 1344 1440

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

全部行的列 Top(Sum(Sales)) 均返回 587,因为此值是顶行值:Astrida

此表格还显示了更复杂的度量:根据 Sum(Sales)+Top(Sum(Sales)) 创建的一个值以及标有 Top offset 3 的一个值,后者使用表达式 Sum(Sales)+Top(Sum(Sales), 3) 创建,且具有设置为 offset 的参数 3。它将当前行的 Sum(Sales) 值添加到从顶行开始第三行中的值中,即,当前行加上 Canutility 的值。

Example: 2

在此示例中显示的表格图表的界面中,已将更多维度添加到图表中:MonthProduct。对于包含多个维度的图表,表达式(包含 AboveBelowTopBottom 函数)的结果取决于 QlikView 对列维度进行排序的顺序。QlikView 根据最后排序的维度得出的列段数据计算函数的值。可以在排序下控制列排序顺序,并且不一定采用在表格中显示的顺序。 (有一些行未显示,但保留了空间。)

Customer Product Month Sum(Sales) First value
      2566 -
Astrida AA Jan 46 46
Astrida AA Feb 60 46
Astrida AA Mar 70 46
... ... ... ... ...
Astrida AA Sep 78 46
Astrida AA Oct 12 46
Astrida AA Nov 78 46
Astrida AA Dec 22 46
Astrida BB Jan 46 46
示例 2 的第一个表格。First value 度量的 Top 值基于 Month (Jan)。
Customer Product Month Sum(Sales) First value
      2566 -
Astrida AA Jan 46 46
Astrida BB Jan 46 46
Astrida AA Feb 60 60
Astrida BB Feb 60 60
Astrida AA Mar 70 70
Astrida BB Mar 70 70
Astrida AA Apr 13 13
Astrida BB Apr 13 13
示例 2 的第二个表格。First value 度量的 Top 值基于 ProductAstridaAA)。

请参考 Above 函数中的示例 2,了解更多信息。

Example: 3

结果

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

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

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

 
Astrida
Betacab
Canutility
Divadip:
603
603
603
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 '|');

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