Tengo que escribir una función UDF de JavaScript en Snowflake que reciba una variante como argumento y haga algunos cambios de valor para algunas claves. Todo está bien, pero hay un atributo en particular (PROPIEDAD) que parece un JSON anidado pero tiene algunos escapes (barra invertida) que agregan cierta complejidad porque uno de los requisitos es transformar el valor de "PROPIEDAD_3" (atributo anidado dentro de PROPIEDAD) . Ver captura de pantalla. ¿Alguna idea de cómo abordar esta solicitud tomando la captura de pantalla como entrada para el UDF?
Tiendo a evitar las UDF cuando hay disponibles enfoques directos de SQL. En raras ocasiones, el código de procedimiento puede superar a SQL directo haciendo menos trabajo, pero eso es poco común.
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; Si necesita volver a convertir PROP3 en una propiedad de cadena, puede crear una UDF de JavaScript muy simple que aplique el método JSON.stringify() .