SELECTuser_id,collect_set(order_id)[OFFSET(0)]asfirst_order,collect_set(order_id)[OFFSET(1)]assecond_order,collect_set(order_id)[OFFSET(2)]asthird_orderFROM(SELECTuser_id,order_id,row_number()OVER(PARTITIONBYuser_idORDERBYorder_id)asrow_numFROMorders)tGROUPBYuser_id; 1. 2. 3. 4. ...
第二列:该指标下的所有地区名称,按照国标地域代码升序排序,按照";"进行分割,且该字段不为空时,末尾追加";"。 第三列:该指标下所有的年份,按字母顺序排序,按照";"进行分割,且该字段不为空时,末尾追加";"。 3、思路 处理年份很简单collect_set+sort_array就行了 处理地区,难在要按照地区代码的顺序将地区名称...
selectname,regexp_replace(regexp_replace(concat_ws(',',sort_array(collect_set(concat(casewhenlength(rn)=1thenconcat('0',cast(rnasstring))elsecast(rnasstring)end,detail_address_name))),'^[0-9]*',''),',[0-9]*',',')asaddress_changefrom(selectname,detail_address_name,row_number()ov...
,collect_set(concat_ws(':',b.actv_id,b.actv_nm) asactv_usd from tb_cust_actv asb group bycust_uid ) asb left join( -- 2.筛出所有活动清单,即[actv1, actv2, actv3, actv4],这时候再笛卡尔积其实相当于b表中每条客户数据只需要与[actv1,actv2,actv3,actv4]这一条数据笛卡尔积 sel...
注意:collect_set是一个set集合,不允许重复的记录插入 selectgridid,height,collect_set(cell),collect_set(mrcount),collect_set(weakmrcount)from(select*fromtommyduan_testorderbygridid,height,mrcountdesc) t10groupbygridid,height;+---+---+---+---+---+--+|gridid|height|_c2|_c3|_c4|+--...
sort_array(collect_set(column))
需求背景 一个学生对应一个班级号和名称,此时需要统计每个班级的学生 创建数据 造完的数据如图所示: 使用 总结 从上面可以看出collect_list和collect_set...
Hive中的collect_set函数用于返回指定列的唯一值集合。其语法如下: SELECT collect_set(column_name) FROM table_name WHERE conditions; 复制代码 其中,column_name是要收集唯一值的列名,table_name是要查询的表名,conditions是查询条件。 例如,假设有一个表student,包含学生的姓名和年龄字段,我们可以使用collect_set...
顺便看一下Hive源码中collect_list和collect_set函数对应的逻辑吧。 publicclassGenericUDAFMkCollectionEvaluatorextendsGenericUDAFEvaluatorimplementsSerializable{privatestaticfinallongserialVersionUID=1l;enumBufferType{SET,LIST}// For PARTIAL1 and COMPLETE: ObjectInspectors for original dataprivatetransientPrimitiveObjectI...
)Hive的collect_set函数用于去重地将同一分组的不同行数据聚合成一个集合。例如,创建原数据表:CREATE TABLE stud (name string, area string, course string, score int);向原数据表插入数据:INSERT INTO TABLE stud VALUES('zhang3','bj','math',88);查询表中数据:SELECT * FROM stud;将同一...