Bottom - 图表函数

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

语法:  

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

返回数据类型: dual

参数:  

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

指定 offsetn大于 1 后,将表达式评估向上移到底行上面的 n 行。

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

count

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

TOTAL

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

另请: 定义聚合范围

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

限制:  

递归调用将返回 NULL值。

示例和结果:  

示例: 1

Customer Sum(Sales) Bottom(Sum(Sales)) Sum(Sales) + Bottom(Sum(Sales)) Bottom offset 3
  2566 757 3323 3105
Astrida 587 757 1344 1126
Betacab 539 757 1296 1078
Canutility 683 757 1440 1222
Divadip 757 757 1514 1296
示例 1 的表格图表。

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

全部行的Bottom(Sum(Sales))列均返回 757,因为此值是底行值:Divadip

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

示例: 2

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

在第一个表格中,基于 Month评估表达式,在第二个表格中,基于Product 评估表达式。度量 End value包含表达式Bottom(Sum(Sales))Month的底行是 Dec,表格中所示 ProductDec 的值是 22。(有一些行未显示,但保留了空间。)

Customer Product Month Sum(Sales) End value
      2566 -
Astrida AA Jan 46 22
Astrida AA Feb 60 22
Astrida AA Mar 70 22
... ... ... ... ...
Astrida AA Sep 78 22
Astrida AA Oct 12 22
Astrida AA Nov 78 22
Astrida AA Dec 22 22
Astrida BB Jan 46 22
示例 2 的第一个表格。End value度量的 Bottom 值基于 Month (Dec)。
Customer Product Month Sum(Sales) End 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 的第二个表格。End value度量的 Bottom 值基于 ProductAstridaBB)。

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

示例: 3

结果

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

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

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

 
Astrida
Betacab
Canutility
Divadip:
659.67
659.67
659.67
659.67

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

另请参阅: