【问题标题】:Extract nested nested JSON array in Presto在 Presto 中提取嵌套的 JSON 数组
【发布时间】:2019-03-07 02:43:06
【问题描述】:

假设我有一个如下所示的 JSON 对象:

{"attributes":{"blah":"bleh","transactionlist":[{"ids":["a","b","c","d"]}]}}

我尝试将 ID (a,b,c,d) 提取到 Presto 中的行中。从查看其他资源来看,似乎我应该将“ids”元素转换为地图,然后是数组,最终取消嵌套。但是,我在执行此操作时遇到了一些麻烦,因为“ids”元素嵌套在嵌套元素中。有人有任何提示吗?

谢谢!

【问题讨论】:

    标签: arrays json presto


    【解决方案1】:

    由于一个 JSON 数组中的 ids 元素嵌套在另一个 JSON 数组中,所以需要 UNNEST 两次:

    presto> SELECT id
         -> FROM (VALUES (JSON '{"attributes":{"blah":"bleh","transactionlist":[{"ids":["a","b","c","d"]}]}}')) t(x)
         -> CROSS JOIN UNNEST (CAST(json_extract(x, '$.attributes.transactionlist') AS ARRAY<JSON>)) u(transaction)
         -> CROSS JOIN UNNEST (CAST(json_extract(transaction, '$.ids') AS ARRAY<varchar>)) z(id)
         -> ;
     id
    ----
     a
     b
     c
     d
    (4 rows)
    

    【讨论】:

    • 感谢您的回复,我会试试看效果如何。
    • 更新:感谢您的帮助 - 非常有助于查看查询布局和预期结果。
    猜你喜欢
    • 2020-04-18
    • 2020-01-08
    • 2015-07-08
    • 2021-08-29
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2021-12-15
    相关资源
    最近更新 更多