如何在 Snowflake 的 JavaScript UDF 中操作 Json 嵌套属性

How to manipulate Json nested attributes in a JavaScript UDF in Snowflake

我必须在 Snowflake 中编写一个 JavaScript UDF 函数,它接收一个变体作为参数,并对一些键进行一些值更改。一切都很好,但是有一个特定的属性 (属性) 看起来像一个嵌套的 JSON,但它有一些具有转义符(反斜杠),这增加了一些复杂性,因为其中一个要求是转换“的值PROP_3”(属性 中的嵌套属性)。请参见屏幕截图。 有什么想法可以处理此请求,将屏幕截图作为 UDF 的输入吗?

input format for the UDF argument 谢谢

当直接 SQL 方法可用时,我倾向于避免使用 UDF。在极少数情况下,程序代码可以通过减少工作量直接 SQL,但这种情况并不常见。

create or replace temp table t1 as select 
parse_json($$ {"KEY":"ABCD","PROPERTY":"{\"PROP1\":\"VALUE1\",\"PROP2\":\"VALUE2\",\"PROP3\":\"VALUE3\",\"PROP4\":null}","ATTR_1":0,"ATTR_2":"customer"} $$) as V;

select 
     object_insert(V, 'PROPERTY', object_insert(parse_json(V:PROPERTY), 'PROP3', 'NEW_VALUE', true), true) as JSON
from t1;

如果您需要将 PROP3 转换回字符串 属性,您可以创建一个应用 JSON.stringify() 方法的非常简单的 JavaScript UDF。