我有一个以怪异方式编写的JSON对象。
> {"custom": [ { "name": "addressIdNum", "valueNum": 12345678}, {
> "name": "cancelledDateAt", "valueAt": "2017-02-30T01:43:04.000Z" }] }
不确定如何解析这样的内容。密钥是addressIdNum和cancelledDateAt,值分别是12345678和2017-02-30T01:43:04.000Z。
如何使用Snowflake SQL对此进行解析?
感谢您的所有帮助!
最好, Preet Rajdeo
答案 0 :(得分:1)
如果您的输入始终是这种形式(数组中的两个元素,同一元素中的相同字段),则可以结合使用PARSE_JSON函数和path access。
只需尝试一下:
with input as (
select parse_json(
'{"custom": [ { "name": "addressIdNum", "valueNum": 12345678}, {"name": "cancelledDateAt", "valueAt": "2017-02-30T01:43:04.000Z" }] }')
as json)
select json:custom[0].valueNum::integer, json:custom[1].valueAt::timestamp from input;
----------------------------------+-----------------------------------+
JSON:CUSTOM[0].VALUENUM::INTEGER | JSON:CUSTOM[1].VALUEAT::TIMESTAMP |
----------------------------------+-----------------------------------+
12345678 | 2017-03-01 17:43:04 |
----------------------------------+-----------------------------------+
但是,如果您的数据结构可能不同(例如,数组中的元素可能具有不同的顺序),则最好在Snowflake中编写JavaScript UDF,以将此类混乱的数据转换为更简单的数据。