我有一张table是用pt隔开的。数据:
k v点
100 1 20150101
101 1 20150102
100 1 20150103
我想用wmèconcat得到这样的结果,其中分区中不存在的k用0填充:
k ts公司
100 1,0,1
101 0,1,0
但我只能得到这样的结果:
k ts公司
100 1,1
101 1
Hive脚本如下:
select m1.k, wm_concat(',', m1.v) as ts
from
(
select k, v, pt
from test_table
where pt <= ${date}
order by pt
) m1
group by m1.k
1条答案
按热度按时间xurqigkl1#
实现这一点的一种方法是,首先对不同分区的子查询执行交叉联接,然后计算一个新的“v”列,当pt存在于某个特定的k时,该列的值为1,否则该列的值为0。然后你需要取每个k,v对的最大值。我的意思是:
这将输出以下内容:
然后您应该能够使用上面的方法来获得您想要的结果: