雪花合并对象/json

问题描述 投票:0回答:2

有什么方法可以合并雪花中的2个对象吗?我找到了https://docs.snowflake.net/manuals/sql-reference/functions/object_insert.html,但是一次只能设置/更新一个键。我想合并 2 个对象(类似于 js 中的

Object.assign()
)。 还尝试通过转换为数组、从该数组连接和构造对象来找到解决方法,但未能使其工作。

谢谢!

snowflake-cloud-data-platform
2个回答
11
投票

Snowflake 没有这样的内置函数,但是在 Snowflake 的

JavaScript UDFs
中使用 Object.assign() 是微不足道的:)

create or replace function my_object_assign(o1 VARIANT, o2 VARIANT) 
returns VARIANT 
language javascript 
as 'return Object.assign(O1, O2);';

select my_object_assign(parse_json('{"a":1,"b":2,"c":3}'), parse_json('{"c":4, "d":5}')) as res;
-----------+
    RES    |
-----------+
 {         |
   "a": 1, |
   "b": 2, |
   "c": 4, |
   "d": 5  |
 }         |
-----------+

0
投票

立即在开放预览中尝试 map_cat

select map_cat(
  parse_json('{"a":1,"b":2,"c":3}')::map(varchar,variant),
  parse_json('{"c":4, "d":5}')::map(varchar,variant)
) as res;

退货:

{
  "a": 1,
  "b": 2,
  "c": 4,
  "d": 5
}
© www.soinside.com 2019 - 2024. All rights reserved.