Rank - 图表函数

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

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

Syntax:  

Rank([TOTAL] expr[, mode[, fmt]])

Return data type:

Arguments:  

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

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

定义聚合范围

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

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

mode

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

说明
0(默认)

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

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

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

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

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

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

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

Examples and results:  

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

示例 结果

示例 1。创建一个表格,维度为 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) 时的结果。

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

示例 1 的结果,按 Customer 对表格排序:

Customer Sales Rank(Sales)
Astrida 12 10
Astrida 13 9
Astrida 20 8
Astrida 22 7
Astrida 45 6
Astrida 46 5
Astrida 60 4
Astrida 65 3
Astrida 70 2
Astrida 78 1
Betcab 12 11

示例 1 的结果,按 Sales 对表格排序:

Customer Sales Rank(Sales)
Astrida 12 1-2
Betacab 12 1-2
Astrida 13 1
Betacab 15 1
Astrida 20 1
Astrida 22 1-2
Betacab 22 1-2
Betacab 24 1-2
Canutility 24 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 '|');