配置单元:如何用数组分解json列,并嵌入到csv文件中?

bz4sfanl  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(380)

从一个csv文件(带有一个头和一个管道分隔符)中,我得到了以下内容,其中包含一个json列(其中包含一个集合),如下所示:

ProductId|IngestTime|ProductOrders
9180|20171025145034|[{"OrderId":"299","Location":"NY"},{"OrderId":"499","Location":"LA"}]
8251|20171026114034|[{"OrderId":"1799","Location":"London"}]

我需要创建一个select配置单元查询,它返回:

ProductId  IngestTime      OrderId        OrderLocation
9180       20171025145034  299            NY
9180       20171025145034  499            LA
8251       20171026114034  1799           London

到目前为止,我尝试了很多组合,使用了'explode'、'get\ujson\uobject'等等,但是仍然没有找到正确的sql查询。
你有解决办法吗?
非常感谢您的帮助:-)

v1uwarro

v1uwarro1#

我也有类似的要求。这个链接的解决方案帮助我解决了这个问题。顺便说一句,下面是对您的要求的查询,假设您的db\u表中的所有列都是'string'类型。

SELECT ProductId,
       IngestTime,
       split(split(results,",")[0],':')[1] AS OrderId,
       regexp_replace(split(split(results,",")[1],':')[1], "[\\]|}]", "") AS OrderLocation
    FROM
       (SELECT ProductId,
             IngestTime,
             split(translate(ProductOrders, '"\\[|]|\""',''), "},") AS r
       FROM DB_TABLE) t1 LATERAL VIEW explode(r) rr AS results

相关问题