Rank - 图表函数

Rank()用于在表达式中计算图表的行数,并且对于每一行显示在表达式中计算的维度值的相对位置。当计算表达式的值时,该函数将结果与包含当前列片段的其他行的结果比较,然后返回片段中当前行的排名。

对于非表格图表,将定义当前列段数据,就像显示在图表的垂直表等同物中一样。

语法:  

Rank([TOTAL [<fld {, fld}>]] expr[, mode[, fmt]])

返回数据类型: dual

参数:  

参数 说明
expr 表达式或字段包含要度量的数据。
mode 指定函数结果的数字呈现形式。
fmt 指定函数结果的文本呈现形式。
TOTAL

如果图表是一维或如果表达式前面有 TOTAL限定符,则该函数用于评估整列。 如果表格或表格等同物有多个垂直维度,当前列段数据将只包括值与所有维度列的当前行相同的行,但按内部字段排序显示最后维度的列除外。

TOTAL限定符后可能紧跟着一系列由尖括号括起来的一个或多个字段名<fld>。这些字段名应该是图表维度变量的子集。

另请: 定义聚合范围

排行以对偶值形式返回,在每一行拥有一个唯一排行的情况下,排行是一个介于 1 和当前列段数据行数之间的整数。

当多行共享同一个排名时,文本和数字呈现形式可使用 modefmt 参数进行控制。

mode

第二个参数 mode可获取以下值:

说明
0(默认)

如果共享组中的全部排行处在整个排行中间值的下半部分,全部行都获得共享组的最低排行。

如果共享组中的全部排行处在整个排行中间值的上半部分,全部行都获得共享组的最高排行。

如果共享组中的排行跨越整个排行的中间值,全部行都获得整个列片断中最高和最低排行的平均值。

1 全部行的最低排行。
2 全部行的平均排行。
3 全部行的最高排行。
4 第一行的最低排行,然后每一行都提高一位。
fmt

第三个参数 fmt可获取以下值:

说明
0(默认) 全部行中的低值 - 高值(如 3 - 4)。
1 全部行的高值。
2 第一行的低值,以后各行都为空白。

mode4 和 fmt 2 的行顺序由图表维度的排序决定。

示例和结果:  

使用维度 ProductSales 创建两个图表,使用 ProductUnitSales 创建其他可视化。添加度量,如下表所示。

示例 结果

使用维度 CustomerSales 以及度量 Rank(Sales) 创建表格

结果取决于维度的排序顺序。如果按 Customer对表格排序,表格会列出 Astrida 的所有 Sales 值,然后列出Betacab 的所有同类型值,以此类推。 Sales值为 12 的 Rank(Sales) 结果将显示 10,Sales 值为 13 的相同字段结果将显示 9,以此类推,并且对 Sales 只为 78 的排行值返回 1。下一个列段数据从 Betacab 开始,其中Sales 的第一个值是 12。此字段的排行值 Rank(Sales)显示为 11。

如果此表格按 Sales排序,则列段数据包含 Sales 值以及相应的Customer。因为有两个 Sales值是 12(对于 AstridaBetacab),因此该列段数据每个 Customer 值的Rank(Sales) 值都是 1-2。这是因为有两个 Customer值的Sales 值都是 12。如果有 4 个值,则所有行的结果都是 1-4。这显示了使用参数 fmt默认值 (0) 时的结果。

将维度 Customer 替换为 Product,并添加度量 Rank(Sales,1,2) 这样将在每个列段数据的第一行中返回 1,并将所有其他行留空,因为参数 modefmt 分别设置为 1 和 2。

 

示例中所使用的数据:

ProductData:

Load * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD|0|25

Canutility|AA|8|15

Canutility|CC|0|19

] (delimiter is '|');

 

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

 

另请参阅: