如何将 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))
我有一个 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))