如何将 json 对象转换为 prestodb/athena 中的数组

How to convert json object into array in prestodb/athena

我有一个 JSON 这种格式的对象 data = {"1": {"col1":"a", "col2":"b"}, "2": {"col1":"c", "col2":"d"}....,"99":{"col1":"asd", "col2":"exm"}}. 我想使用 athena 获取 col_1 和 col_2 的所有值。我如何使用雅典娜实现这一目标?

忽略它是 JSON 格式(因为它不够简单)并使用正则表达式函数:

SELECT regexp_extract_all(column_data, '"col1":"([a-z]+)",'); -- [a, c, ... asd]

我能够通过将其转换为 Map 然后取消嵌套来解决它​​

select 键,值来自 table 其中 unnest(cast(json_parse(data) as Map(varchar,JSON)) as t(key,value))