目前在使用Qlik进行数据分析,这个软件感觉国内普及程度不高,相应资料也比较少,日常工作中遇到的一些问题和疑问,以及后续的解决方案会定期记录下来,方便自己回顾,也希望能够和大家一起交流提升。
回归正题,今天主要说一下在Qlik中实现分组排序。首先举个场景,比如我想要获取每一个客户最早的一笔订单号。那需要按照start_date进行升序排序,取第一条。
在MySQL中可以通过开窗函数实现,语法为:
row_number() over (partation by customer order by start_date asc),取结果为1的记录。
在Qlik中,可以通过FirstSortedValue函数:
load
Customer,
FirstSortedValue(order_id,start_date)
resident [table_name]
group by Customer;
如果想要降序排列,需要在start_date前加上负号。例如:FirstSortedValue(order_id,-start_date)。
具体的函数参数定义可以参考官方文档:
FirstSortedValue - 图表函数 | Windows 版 Qlik Sense帮助
Customer | order_id | start_date | end_date |
---|---|---|---|
Astrida | A001 | 2020-10-01 | 2021-12-21 |
Astrida | A002 | 2008-12-21 | 2013-02-23 |
Astrida | A003 | 2015-07-15 | 2017-12-12 |
Betacab | A004 | 2016-09-11 | 2018-09-08 |
Betacab | A005 | 2023-12-11 | 2024-12-21 |
Betacab | A006 | 2018-09-30 | 2023-06-11 |
Canutility | A007 | 2017-06-19 | 2019-08-08 |
Canutility | A008 | 2016-09-19 | 2019-01-01 |