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

Top

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

语法:  

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

返回数据类型:

参数:  

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

    定义聚合范围

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

限制:  

递归调用将返回 NULL 值。

示例和结果:  

示例 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 的值。

示例 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
示例第二表格输出
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

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

示例 3:  

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

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

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

示例表格输出
Customer RangeAvg (Top(Sum(Sales),1,3))
Astrida 603
Betacab 603
Canutility 603
Divadip 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

本页面有帮助吗?

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

加入分析现代化计划

Remove banner from view

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