在HIVE中使用json_tuple返回具有重复键的数据元素

时间:2018-07-13 19:44:05

标签: hive

在一个列中输入数据

v1.segments
{"segmentid":"INS","content":"Y:18:030:XN:A:::FT"},{"segmentid":"REF","content":"0F:999999999"},{"segmentid":"REF","content":"1L:999999999"},{"segmentid":"REF","content":"23:999999999"},{"segmentid":"DTP","content":"356:D8:20180301"}

想知道是否有一种方法可以使用json_tuple引用与“ segmentid”匹配的下一个元素。我可以退还第一个

下面列为v2.segmentid

select  v1.loopid, v1.segments, v2.segmentid
from app_fwa_chc.834_test_CHC_brad_2
     LATERAL VIEW json_tuple(loop_2000,'loopid', 'segments') v1
     as loopid, segments
     LATERAL VIEW json_tuple(regexp_replace(regexp_replace(segments,"\\[",""),"\\]",""),'segmentid', 'content') v2
     as segmentid, content
    WHERE row_id=1


v2.segmentid
INS

我尝试引用,因为我会基于拆分...

select  v1.loopid, v1.segments, v2.segmentid[0], v2.segmentid[1]

我从这里开始的道路是根据逗号进行拆分,这将是有问题的。

A)因为逗号在我的{}

B)如果我基于}进行拆分,{-那么我将不得不重新添加花括号,以便使用json_tuple进一步处理数据。

想知道在我将一个非常复杂的过程变得更复杂之前是否缺少一些简单的东西。

谢谢

0 个答案:

没有答案