QlikWorld 2020 全球会议。加入我们,探讨如何最大程度利用您的数据。 快速行动。马上注册,享受优惠。

FirstSortedValue - 脚本函数

FirstSortedValue() 将返回来自 value 指定表达式的值,相当于 sort_weight 参数排序的结果,例如,单价最低的产品名称。排序顺序中的第 n 个值,可在 rank 中指定。如果在指定 rank 下多个结果值共享同一 sort_weight,则此函数返回 NULL。 排序的值会迭代于 group by 子句定义的大量记录,或者如果 group by 子句未定义,就会在整个数据集之间聚合。

Syntax:  

FirstSortedValue ([ distinct ] value, sort-weight [, rank ])

Return data type:

Arguments:  

参数 说明
value Expression 此函数用于查找表达式 value 的值,相当于 sort_weight 的排序结果。
sort-weight Expression 该表达式包含要排序的数据。找到 sort_weight 的第一个(最低)值,由 value 表达式的对应值确定。如果在 sort_weight 前面加一个减号,则此函数会返回最后一个(最高)排序值。
rank Expression

通过指定一个大于 1 的 rank “n”,您会获得第 n 个排序值。

distinct

如果在函数参数前出现单词 DISTINCT,则将忽略计算该函数参数生成的副本。

Examples and results:  

将示例脚本添加到应用程序并运行。然后,至少要将结果列中列出的字段添加到应用程序中的表格才能查看结果。

为了获得与下面结果列相同的外观,在属性面板中,在排序下方,从自动切换到自定义,然后取消选择数字和字母排序。

示例 结果

Temp:

LOAD * inline [

Customer|Product|OrderNumber|UnitSales|CustomerID

Astrida|AA|1|10|1

Astrida|AA|7|18|1

Astrida|BB|4|9|1

Astrida|CC|6|2|1

Betacab|AA|5|4|2

Betacab|BB|2|5|2

Betacab|DD|12|25|2

Canutility|AA|3|8|3

Canutility|CC|13|19|3

Divadip|AA|9|16|4

Divadip|AA|10|16|4

Divadip|DD|11|10|4

] (delimiter is '|');

 

FirstSortedValue:

LOAD Customer,FirstSortedValue(Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithSmallestOrderByCustomer

Astrida CC

Betacab AA

Canutility AA

Divadip DD

函数将 UnitSales 按从最小到最大的顺序排列,通过UnitSales 的最小值(最小顺序)寻找 Customer 的值。

因为 CC 与客户 Astrida 的最小顺序( UnitSales 的值 = 2)对应。AA 与客户 Betacab 的最小顺序 (4) 对应,CC 与客户 Canutility 的最小顺序 (8) 对应,而 DD 与客户 Divadip. 的最小顺序 (10) 对应。

前提是 Temp 表格像之前的示例一样加载:

LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

减号位于 sort_weight 参数之首,因此,该函数将最大的排在第一个。

因为 AA 与客户 Astrida 的最大顺序(UnitSales 的值:18)对应,DD 与客户 Betacab 的最大顺序 (12) 对应,而 CC 与客户 Canutility 的最大顺序 (13) 对应。客户 Divadip 的最大顺序 (16) 有两个相同的值,因此,它会生成空结果。

前提是 Temp 表格像之前的示例一样加载:

LOAD Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

这一点与之前的示例相同,使用了 distinct 限定符除外。在该子句中,Divadip 的重复结果会被忽略,从而允许返回非空值。