WRank - 脚本函数
WRank() 评估加载脚本中表的行,并针对每一行显示加载脚本中评估的字段值的相对位置。在评估表时,函数将结果与包含当前分区的其他行的结果进行比较,并返回当前行在段内的排名。
表中的分区

WRank 只能在 Window 函数中使用。Window 函数必须包含排序类型和排序表达式。排序将应用于排序表达式。
语法:
WRank ([mode[, fmt]])
返回数据类型: 双
参数:
参数 | 描述 |
---|---|
mode | 也指定函数结果的数字表示形式。 |
fmt | 也指定函数结果的文本表示形式。 |
排名作为一个双值返回,在每一行都有唯一排名的情况下,该值是当前分区中 1 和行数之间的整数。
当多行共享同一个排名时,文本和数字呈现形式可使用 mode 和 fmt 参数进行控制。
mode
第一个参数 mode 可获取以下值:
值 | 描述 |
---|---|
0(默认) |
如果共享组中的全部排行处在整个排行中间值的下半部分,全部行都获得共享组的最低排行。 如果共享组中的全部排行处在整个排行中间值的上半部分,全部行都获得共享组的最高排行。 如果共享组内的排名跨越整个排名的中间值,则所有行都会获得与整个分区中最高排名和最低排名的平均值相对应的值。 |
1 | 全部行的最低排行。 |
2 | 全部行的平均排行。 |
3 | 全部行的最高排行。 |
4 | 第一行的最低排行,然后每一行都提高一位。 |
fmt
第二个参数 fmt 可获取以下值:
值 | 描述 |
---|---|
0(默认) | 全部行中的低值 - 高值(如 3 - 4)。 |
1 | 全部行的高值。 |
2 | 第一行的低值,以后各行都为空白。 |
mode 4 和 fmt 2 的行顺序由表字段的加载顺序决定。
示例 - 添加排序字段
加载脚本
在数据加载编辑器中创建一个新选项卡,然后将以下数据作为内联加载加载。在 Qlik Sense 中创建下面的表格以查看结果。
Transactions:
Load
*,
Window(WRank(0),customer_id, 'Desc', transaction_amount) as TransactionRanking;
Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, M, Orange
3752, 20180916, 5.75, 1, 5646471, S, Blue
3753, 20180922, 125.00, 7, 3036491, L, Black
3754, 20180922, 484.21, 13, 049681, XS, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
3758, 20180924, 153.42, 14, 2038593, L, Red
3759, 20180925, 7.42, 5, 203521, M, Orange
3760, 20180925, 80.12, 18, 5646471, M, Blue
3761, 20180926, 3.42, 7, 3036491, XS, Black
3763, 20180926, 63.55, 12, 049681, S, Red
3763, 20180927, 177.56, 10, 2038593, L, Blue
3764, 20180927, 325.95, 8, 203521, XL, Black
];
结果
transaction_id | transaction_date | transaction_amount | transaction_quantity | CustomerID | 大小 | color_code | TransactionRanking |
---|---|---|---|---|---|---|---|
3750 | 20180830 | 23.56 | 2 | 2038593 | L | 红色 | 4-4 |
3751 | 20180907 | 556.31 | 6 | 203521 | M | 橙色 | 1-1 |
3752 | 20180916 | 5.75 | 1 | 5646471 | S | 蓝色 | 2-2 |
3754 | 20180922 | 484.21 | 13 | 049681 | XS | 红色 | 1-1 |
3756 | 20180922 | 59.18 | 2 | 2038593 | M | 蓝色 | 3-3 |
3753 | 20180922 | 125.00 | 7 | 3036491 | L | 黑色 | 1-1 |
3757 | 20180923 | 177.42 | 21 | 203521 | XL | 黑色 | 3-3 |
3758 | 20180924 | 153.42 | 14 | 2038593 | L | 红色 | 2-2 |
3759 | 20180925 | 7.42 | 5 | 203521 | M | 橙色 | 4-4 |
3760 | 20180925 | 80.12 | 18 | 5646471 | M | 蓝色 | 1-1 |
3763 | 20180926 | 63.55 | 12 | 049681 | S | 红色 | 2-2 |
3761 | 20180926 | 3.42 | 7 | 3036491 | XS | 黑色 | 2-2 |
3764 | 20180927 | 325.95 | 8 | 203521 | XL | 黑色 | 2-2 |
3763 | 20180927 | 177.56 | 10 | 2038593 | L | 蓝色 | 1-1 |
示例 - 使用 fmt 添加排名字段以获得单个位数的结果
加载脚本
在数据加载编辑器中创建一个新选项卡,然后将以下数据作为内联加载加载。在 Qlik Sense 中创建下面的表格以查看结果。
Transactions:
Load
*,Window(WRank(0,1),customer_id, 'Desc', transaction_amount) as TransactionRanking;
Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, M, Orange
3752, 20180916, 5.75, 1, 5646471, S, Blue
3753, 20180922, 125.00, 7, 3036491, L, Black
3754, 20180922, 484.21, 13, 049681, XS, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
3758, 20180924, 153.42, 14, 2038593, L, Red
3759, 20180925, 7.42, 5, 203521, M, Orange
3760, 20180925, 80.12, 18, 5646471, M, Blue
3761, 20180926, 3.42, 7, 3036491, XS, Black
3763, 20180926, 63.55, 12, 049681, S, Red
3763, 20180927, 177.56, 10, 2038593, L, Blue
3764, 20180927, 325.95, 8, 203521, XL, Black
];
结果
transaction_id | transaction_date | transaction_amount | transaction_quantity | CustomerID | 大小 | color_code | TransactionRanking |
---|---|---|---|---|---|---|---|
3750 | 20180830 | 23.56 | 2 | 2038593 | L | 红色 | 4 |
3751 | 20180907 | 556.31 | 6 | 203521 | M | 橙色 | 1 |
3752 | 20180916 | 5.75 | 1 | 5646471 | S | 蓝色 | 2 |
3754 | 20180922 | 484.21 | 13 | 049681 | XS | 红色 | 1 |
3756 | 20180922 | 59.18 | 2 | 2038593 | M | 蓝色 | 3 |
3753 | 20180922 | 125.00 | 7 | 3036491 | L | 黑色 | 1 |
3757 | 20180923 | 177.42 | 21 | 203521 | XL | 黑色 | 3 |
3758 | 20180924 | 153.42 | 14 | 2038593 | L | 红色 | 2 |
3759 | 20180925 | 7.42 | 5 | 203521 | M | 橙色 | 4 |
3760 | 20180925 | 80.12 | 18 | 5646471 | M | 蓝色 | 1 |
3763 | 20180926 | 63.55 | 12 | 049681 | S | 红色 | 2 |
3761 | 20180926 | 3.42 | 7 | 3036491 | XS | 黑色 | 2 |
3764 | 20180927 | 325.95 | 8 | 203521 | XL | 黑色 | 2 |
3763 | 20180927 | 177.56 | 10 | 2038593 | L | 蓝色 | 1 |
示例 - 添加具有多个分区的已排序字段
加载脚本
在数据加载编辑器中创建一个新选项卡,然后将以下数据作为内联加载加载。在 Qlik Sense 中创建下面的表格以查看结果。
Transactions:
Load
*,Window(WRank(0,1),customer_id, size, color_code, 'Desc', transaction_amount) as TransactionRanking;
Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, M, Orange
3752, 20180916, 5.75, 1, 5646471, S, Blue
3753, 20180922, 125.00, 7, 3036491, L, Black
3754, 20180922, 484.21, 13, 049681, XS, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
3758, 20180924, 153.42, 14, 2038593, L, Red
3759, 20180925, 7.42, 5, 203521, M, Orange
3760, 20180925, 80.12, 18, 5646471, M, Blue
3761, 20180926, 3.42, 7, 3036491, XS, Black
3763, 20180926, 63.55, 12, 049681, S, Red
3763, 20180927, 177.56, 10, 2038593, L, Blue
3764, 20180927, 325.95, 8, 203521, XL, Black
];
结果
transaction_id | transaction_date | transaction_amount | transaction_quantity | CustomerID | 大小 | color_code | TransactionRanking |
---|---|---|---|---|---|---|---|
3750 | 20180830 | 23.56 | 2 | 2038593 | L | 红色 | 2 |
3751 | 20180907 | 556.31 | 6 | 203521 | M | 橙色 | 1 |
3752 | 20180916 | 5.75 | 1 | 5646471 | S | 蓝色 | 1 |
3754 | 20180922 | 484.21 | 13 | 049681 | XS | 红色 | 1 |
3756 | 20180922 | 59.18 | 2 | 2038593 | M | 蓝色 | 1 |
3753 | 20180922 | 125.00 | 7 | 3036491 | L | 黑色 | 1 |
3757 | 20180923 | 177.42 | 21 | 203521 | XL | 黑色 | 2 |
3758 | 20180924 | 153.42 | 14 | 2038593 | L | 红色 | 1 |
3759 | 20180925 | 7.42 | 5 | 203521 | M | 橙色 | 2 |
3760 | 20180925 | 80.12 | 18 | 5646471 | M | 蓝色 | 1 |
3763 | 20180926 | 63.55 | 12 | 049681 | S | 红色 | 1 |
3761 | 20180926 | 3.42 | 7 | 3036491 | XS | 黑色 | 1 |
3764 | 20180927 | 325.95 | 8 | 203521 | XL | 黑色 | 1 |
3763 | 20180927 | 177.56 | 10 | 2038593 | L | 蓝色 | 1 |
限制
WRank 存在以下限制:
-
如果您的 fmt 值为 0,并且希望使用 WRank 偶结果的文本部分于,则必须将 Text() 与 Window(WRank) 一起使用。例如:Text(Window(WRank(0), Unit, 'DESC', Age)) as UnitWRankedByAgeText。