Hive :如何使用数组分解 JSON 列,并嵌入到 CSV 文件中



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

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

我需要的是创建一个返回以下内容的 SELECT Hive 查询:

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

到目前为止,我通过使用"爆炸","get_json_object"等尝试了许多组合,但我仍然没有找到正确的SQL查询。

你有解决方案吗?

非常感谢您的帮助:-)

我也有类似的要求。这个链接的解决方案帮助我解决了它。顺便说一句,下面是针对您要求的查询,假设DB_TABLE中的所有列都属于"字符串"类型。

    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

最新更新