#sql #snowflake-cloud-data-platform
#sql #snowflake-cloud-data-platform
Вопрос:
Пытаюсь извлечь текстовое значение из столбца с помощью json varchar
, но получаю ошибку недопустимого аргумента в snowflake во время работы в режиме on. Этот json имеет немного другую структуру, чем то, что я привык видеть.
Пробовали это, чтобы извлечь текст:
changes:comment:new_value::varchar
changes:new_value::varchar
changes:comment::varchar
JSON выглядит следующим образом:
{
"comment":
{
"new_value": "Hello there. Welcome to our facility.",
"old_value": ""
}
}
Хотите извлечь данные из этого столбца, чтобы вывод считывался:
Hello there. Welcome to our facility.
Ответ №1:
Вы не можете извлекать поля из VARCHAR
. Если ваша строка имеет формат JSON, вы должны преобразовать ее в VARIANT
тип, например, через PARSE_JSON
функцию.
Пример ниже:
create or replace table x(v varchar) as select * from values('{
"comment":
{
"new_value": "Hello there. Welcome to our facility.",
"old_value": ""
}
}');
select v, parse_json(v):comment.new_value::varchar from x;
-------------------------------------------------------------- ------------------------------------------
V | PARSE_JSON(V):COMMENT.NEW_VALUE::VARCHAR |
-------------------------------------------------------------- ------------------------------------------
{ | Hello there. Welcome to our facility. |
"comment": | |
{ | |
"new_value": "Hello there. Welcome to our facility.", | |
"old_value": "" | |
} | |
} | |
-------------------------------------------------------------- ------------------------------------------