雪花合并对象/json

Posted

技术标签:

【中文标题】雪花合并对象/json【英文标题】:Snowflake merge object / json 【发布时间】:2019-04-05 21:56:06 【问题描述】:

有什么方法可以合并雪花中的 2 个对象吗?我找到了https://docs.snowflake.net/manuals/sql-reference/functions/object_insert.html,但它一次只能设置/更新一个键。我想合并 2 个对象(类似于 js 中的 Object.assign())。 还试图通过从该数组转换为数组、连接和构造对象来找到解决方法,但没有设法使其工作。

谢谢!

【问题讨论】:

【参考方案1】:

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  |
          |
-----------+

【讨论】:

漂亮,非常感谢!希望它的性能足够好:) 嗯,它不会像原生函数那样快,这是真的 :( 但希望它足够快!

以上是关于雪花合并对象/json的主要内容,如果未能解决你的问题,请参考以下文章

如何从雪花中的json对象数组中选择数据

雪花表中json数据的解析字段将多行插入到新的雪花表中

外部表的雪花外部阶段文件推荐

带有 ORDER BY 的雪花 JSON 扁平化

在雪花中展平可变长度 JSON

当查询从文件中合并时,row_produced 计数在雪花 query_history 视图中代表啥