#snowflake-cloud-data-platform
Вопрос:
Как я могу изменить ключи на другие имена? От country
до COUNTRY
ID RECORD 2 { "country": "England", "id": "100200", "status": "morestatus" } 3 { "country": "AMERICA", "id": "100300", "status": "morestatus" } 1 { "country": "UK", "id": "100100", "status": "somestatus" } ID RECORD 2 { "COUNTRY": "England", "id": "100200", "status": "morestatus" } 3 { "COUNTRY": "AMERICA", "id": "100300", "status": "morestatus" } 1 { "COUNTRY": "UK", "id": "100100", "status": "somestatus" }
Я пробовал это, но, похоже, это работает для ценностей «страны» и не может изменить страну на СТРАНУ
UPDATE "KAFKA_DB"."KAFKA_SCHEMA"."TARGET" T SET T.RECORD =OBJECT_INSERT(T.RECORD:'country','COUNTRY', TRUE) WHERE RECORD:"country" = 'country';
Комментарии:
1. Я хочу переименовать страну во всех трех строках в СТРАНУ
2. Не могли бы вы, пожалуйста, объяснить желаемый результат и то, что вы пробовали до сих пор? Также предпочтительнее обмениваться входными данными в виде текста. Изображения имеют тенденцию исчезать, и люди, ищущие ответы на подобные вопросы, не смогут извлечь выгоду из индексации.
Ответ №1:
Вы можете вложить OBJECT_DELETE и OBJECT_INSERT, чтобы добавить ключ со старым значением и удалить ключ.
create temp table t1 as select parse_json('{ "country": "England", "id": "100200", "status": "morestatus" }') as V;
select * from t1;
select object_delete(object_insert(v, 'COUNTRY', v:country), 'country') from t1;
Чтобы сохранить изменения, просто выполните ОБНОВЛЕНИЕ:
update t1 set v = object_delete(object_insert(v, 'COUNTRY', v:country), 'country');
Комментарии:
1. Но как я могу сделать постоянное изменение от страны к СТРАНЕ в записях
2. Вы можете просто использовать ОБНОВЛЕНИЕ с показанным синтаксисом. Я думаю, что обновил ответ в тот день, когда Stackoverflow выполнял техническое обслуживание, поэтому я обновлю ответ.
Ответ №2:
Переданные аргументы object_insert
нуждаются в исправлении. Флаг обновления здесь не будет иметь никакого эффекта, так как в JSON есть ключи, чувствительные к регистру.
Попробуй
UPDATE "KAFKA_DB"."KAFKA_SCHEMA"."TARGET" T SET T.RECORD = OBJECT_INSERT(T.RECORD,'COUNTRY', T.RECORD:country);
WHERE RECORD:"country" = 'country';
также ограничивает ваши обновления строками, в которых country
ключ имеет значение country
, которое, вероятно, не то, что вы хотите.