Rank - 图表函数 | Qlik Cloud帮助
跳到主要内容 跳到补充内容

Rank - 图表函数

上次更新日期:2026/9/16

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

video thumbnail

列段数据

显示列段数据的表格

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

语法:  

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

返回数据类型: 双

参数:  

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

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

定义聚合范围

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

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

mode

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

mode 示例
值 描述
0(默认)

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

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

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

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

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

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

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

示例和结果:  

从维度 Product 和 Sales 创建两个可视化,从 Product 和 UnitSales 创建另一个可视化。添加度量,如下表所示。

排名示例
实例 结果

示例 1。创建一个表格,维度为 Customer 和 Sales、度量为 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(对于 Astrida 和 Betacab),因此该列段数据每个 Customer 值的 Rank(Sales) 值都是 1-2。这是因为有两个 Customer 值的 Sales 值都是 12。如果有 4 个值,则所有行的结果都是 1-4。这显示了使用参数 fmt 默认值 (0) 时的结果。

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

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

结果表
Customer Sales Rank(Sales)
Astrida 12 10
Astrida139
Astrida208
Astrida227
Astrida456
Astrida465
Astrida604
Astrida653
Astrida702
Astrida781
Betcab1211

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

结果表
Customer Sales Rank(Sales)
Astrida 12 1-2
Betacab121-2
Astrida131
Betacab151
Astrida201
Astrida221-2
Betacab221-2
Betacab241-2
Canutility241-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 '|');

 

了解详情

 

本页面有帮助吗?

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