hive:Group by 问题:Expression Not In Group By Key

3 篇文章 0 订阅

hive又遇到了问题:

原来的mysql中sql语句为

SELECT DATEBUF, CITYID, CHANNELID FROM STAT_CVCHNEW WHERE DATEBUF>=20110517 AND DATEBUF<=20110519 GROUP BY DATEBUF, CITYID; 


[sql]  view plain  copy

得到的结果应该是是按DATEBUF和CITYID分组,然后每组对应CHANNELID的第一个值

但在hive中报错

[sql]  view plain  copy
  1. FAILED: SemanticException [Error 10025]: Line 1:20 Expression not in GROUP BY key 'uc'  

然后google到http://stackoverflow.com/questions/5746687/hive-expression-not-in-group-by-key中这样解决

用hive的udaf函数:collect_set()

改为

[sql]  view plain  copy
  1. SELECT DATEBUF, CITYID, collect_set(CHANNELID) FROM PWD_STAT_CVCHNEW WHERE DATEBUF=20130810 and cityid<3 GROUP BY DATEBUF, CITYID;  
返回的是每一组datebuf和cityid相应的channelid的所有的一个集合

改为

[sql]  view plain  copy
  1. SELECT DATEBUF, CITYID, collect_set(CHANNELID)[0] FROM PWD_STAT_CVCHNEW WHERE DATEBUF=20130810 and cityid<3 GROUP BY DATEBUF, CITYID;  
ok

但返回的结果channelid是以hdfs中存储的顺序的第一个,

其实这个在一般情况下好像用不到

转自:http://blog.csdn.net/wenlong237/article/details/10227419

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值