使用Snowflake SQL解析JSON

使用Snowflake SQL解析JSON,sql,json,snowflake-cloud-data-platform,Sql,Json,Snowflake Cloud Data Platform,我有一个JSON对象,它是以一种奇怪的方式编写的 > {"custom": [ { "name": "addressIdNum", "valueNum": 12345678}, { > "name": "cancelledDateAt", "valueAt": "2017-02-30T01:43:04.000Z" }] } 不知道如何解析这样的内容。键为addressIdNum和cancelledDateAt,值分别为12345678和2017-02-30T01:43:04.00

我有一个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

如果您的输入始终是这种形式(数组中的两个元素,同一元素中的相同字段),则可以将函数和

试试这个:

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,以便将这些混乱的数据转换为更简单的数据。

如何编写JavaScript UDF?您在手册中看过了吗?