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

Rank - 图表函数

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

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

语法:  

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

返回数据类型:

参数:  

  • 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 的行顺序由图表维度的排序决定。

示例和结果:  

使用维度 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。

 

示例中所使用的数据:

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

 

了解详情

 

本页面有帮助吗?

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

加入分析现代化计划

Remove banner from view

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