如何转换雪花中的数组对象

How to convert array object in snowflake

我想将下面的对象数组转换成另一种形式(varname 被忽略,因为它不是必需的,key 和 value 用于生成输出形式)。任何线索将不胜感激

输入数组: [ { “键”:“string_U6”, “值”:“大马车”, “varname”:“pagenameplate” }, { “键”:“string_U13”, “价值”:“2021”, “变量名”:“年份” } ]

输出

[ { "string_U6": "老爷车" }, { "string_U13": "2021" } ]

您可以尝试使用 map 如下:

var input = [ { "key": "string_U6", "value": "grandwagoneer", "varname": "pagenameplate" }, { "key": "string_U13", "value": "2021", "varname": "year" } ];

var output = input.map(function(entry){
    let obj = {}; 
    obj[entry.key] = entry.value;
    return obj;
});

console.log(output);

由于问题询问如何在 snowflake 中转换数组对象,我想分享 Snowflake 的实现方式:

-- SQL to create a sample table with data

create table sample_table (v variant ) 
as select parse_json(' [ { "key": "string_U6", "value": "grandwagoneer", "varname": "pagenameplate" },
{ "key": "string_U13", "value": "2021", "varname": "year" } ]');
    
-- query to parse the variant and create the array:

select ARRAY_AGG( OBJECT_CONSTRUCT(i.value:key::varchar, i.value:value::varchar) )  
from sample_table,
lateral flatten ( sample_table.v ) i;

它将产生您想要的精确输出。