Snowflake:将键数组与值数组转换为OBJECT对象
将两个数组合并为Snowflake OBJECT类型数据
需求:把测试表中每行的keys数组与vals数组按对应位置合并,生成由键值对组成的OBJECT类型数据。
测试表创建语句
CREATE TABLE tab(keys ARRAY, vals ARRAY) AS SELECT ['key1', 'key2', 'key3'], [1,2,3] UNION ALL SELECT ['keyA', 'keyB'], ['a','b'];
期望结果
| KEYS数组 | VALS数组 | 期望输出OBJECT |
|---|---|---|
| ["key1", "key2", "key3"] | [1, 2, 3] | {"key1": 1, "key2": 2, "key3": 3} |
| ["keyA", "keyB"] | ["a", "b"] | {"keyA": "a", "keyB": "b"} |
解决方案SQL
SELECT keys, vals, ARRAY_TO_OBJECT(ARRAY_ZIP(keys, vals)) AS result_object FROM tab;
说明
ARRAY_ZIP(keys, vals):将两个数组对应位置的元素配对成二维数组,例如把['key1','key2']和[1,2]转换为[['key1',1], ['key2',2]]。ARRAY_TO_OBJECT():将上述二维数组直接转换为OBJECT类型,子数组的第一个元素作为键,第二个作为对应的值。
内容的提问来源于stack exchange,提问作者Lukasz Szozda
相关产品推荐
相关产品推荐

