[Hive]用concat_w实现将多行记录合并成一行

14771人阅读 评论(1) 收藏 举报
分类:

建表如下:

# 创建商品与促销活动的映射表
hive -e "set mapred.job.queue.name=pms;
set hive.exec.reducers.max=32;
set mapred.reduce.tasks=32;

drop table if exists product_promotion;
create table product_promotion(product_id bigint, promotion_id String);

insert into table product_promotion 
select p2.product_id, p2.promotion_id 
from pms.promotionv2 p1 inner join pms.promotionv2_main_product_sku p2 
on (p1.id=p2.promotion_id)
where from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') between p1.start_date and p1.end_date;"

数据表的记录如下:

5112 960024
5112 960025
5112 960026
5112 960027
5112 960028
5113 960043
5113 960044
5113 960045
5113 960046

对promotion_id进行合并:

select product_id, concat_ws('_',collect_set(promotion_id)) as promotion_ids from product_promotion group by product_id

执行结果:

hive > select product_id, concat_ws('_',collect_set(promotion_id)) as promotion_ids from product_promotion group by product_id;
OK
5112 960024_960025_960026_960027_960028
5113 960043_960044_960045_960046
Time taken: 3.116 seconds


这里的collect_set的作用是对promotion_id去重,值得注意的是,必须保证promotion_id的类型是string类型

查看评论

hive_CONCAT_WS合并的用法

从数据库里取N个字段,然后组合到一起用“,”分割显示,起初想到用CONCAT()来处理,好是麻烦,没想到在手册里居然有提到CONCAT_WS(),非常好用。 CONCAT_WS(separator, ...
  • qq_34941023
  • qq_34941023
  • 2016-05-18 00:14:47
  • 20474

hive中的concat,concat_ws,collect_set用法

需求:对用户的订单进行分析,将不同订单类型分别多少单展示出来,每个用户一行 原数据: user order_type order_number user1 de...
  • waiwai3
  • waiwai3
  • 2018-01-16 10:12:31
  • 750

Hive 连接函数 concat

. 字符串连接函数:concat 语法: concat(string A, string B…) 返回值: string 说明:返回输入字符串连接后的结果,支持任意个输入字符串 举例: hi...
  • qiezikuaichuan
  • qiezikuaichuan
  • 2015-03-09 11:28:28
  • 17095

CONCAT_WS的用法

近来工作需要,从数据库里取N个字段,然后组合到一起用“,”分割显示,起初想到用CONCAT()来处理,好是麻烦,没想到在手册里居然有提到CONCAT_WS(),非常好用。 CONCAT_WS(s...
  • linxingywei
  • linxingywei
  • 2016-10-05 17:31:38
  • 2992

**[Hive]用concat_w实现将多行记录合并成一行**

[Hive]用concat_w实现将多行记录合并成一行建表如下:创建商品与促销活动的映射表1建表语句create table a( id String, price String);数据表的记录如下:...
  • sdauzyh
  • sdauzyh
  • 2015-11-04 22:07:29
  • 3891

Hive中实现group concat功能(不用udf)

Sql代码   hive> desc t;  OK  id      string  str     string  Time taken: 0.249 seconds  hive> s...
  • tswisdom
  • tswisdom
  • 2014-11-20 14:40:12
  • 9215

concat,concat_ws.group_concat的使用方法

concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,...
  • csliuruidongdn
  • csliuruidongdn
  • 2013-07-11 07:00:53
  • 2151

hive---group_concat()函数总结

group_concat()函数总结 group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。 比较抽象,难以理解。 通俗点理解,...
  • gdp5211314
  • gdp5211314
  • 2013-04-12 17:15:41
  • 6764

hive concat_w实现将多行记录合并成一行

建表如下: # 创建商品与促销活动的映射表 hive -e "set mapred.job.queue.name=pms; set hive.exec.reducers.max=32; set ma...
  • bbaiggey
  • bbaiggey
  • 2016-08-31 18:18:14
  • 2228

Hive通用型自定义聚合函数(UDAF)

在使用hive进行数据处理时,经常会用到group by语法,但对分组的操作,hive没有mysql支持得好: group_concat([DISTINCT] 要连接的字段 [Order BY AS...
  • Desilting
  • Desilting
  • 2015-05-05 17:26:31
  • 12333
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 45万+
    积分: 6174
    排名: 5026
    第三方账号
    博客专栏