赞
踩
Spark 1.5.x版本以后,在Spark SQL和DataFrame中引入了开窗函数,其中比较常用的开窗函数就是row_number 该函数的作用是根据表中字段进行分组,然后根据表中的字段排序;其实就是根据其排序顺序,给组中的每条记录添 加一个序号;且每组的序号都是从1开始,可利用它的这个特性进行分组取top-n。
比如,A表关联B表,2个表关联的字段是PO_NO,现在发现B表数据重复,只能随机取一笔,就可以这样做:
select ph.*, pl.responsible_department_code
from table_a ph
left join (select * from (select po_no,responsible_department_code,row_number() over(partition by po_no order by po_no) row_num
from table_b) t
where t.row_num = 1) pl
on ph.po_no = pl.po_no
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。