как выбрать определенную пару ключ / значение из поля json внутри таблицы SQL в SNOWFLAKE

В настоящее время я работаю над созданием хранилища данных в стиле снежинки для бизнеса, в котором я работаю, и у меня возникли некоторые проблемы. Я использовал функцию Json_value в TSQL для извлечения определенной пары ключ / значение из поля формата json внутри моей исходной базы данных MSSQL.

Все остальные поля находятся в обычном формате SQL, но есть одно поле, которое мне действительно нужно, и оно сформировано в JSON, и я не могу точно указать пару ключ / значение, которая мне нужна.

Я новичок в SnowSQL, и я не могу найти способ извлечь это в рамках обычного запроса. Кто-нибудь знает способ обойти мою проблему?

* ID /// ТИП /// Имя (JSON_FORMAT) /// Сумма *

  1          5         {En: "lunch, fr: "diner"}        10.00

Я хотел бы извлечь эту строку (например) и иметь возможность извлекать только часть EN: "обед" из своего поля формата JSON.

Спасибо !


person alexis.sylvestre    schedule 09.04.2020    source источник


Ответы (1)


Практически каждый раз, когда вы используете JSON в Snowflake, рекомендуется использовать тип данных VARIANT. Вы можете использовать функцию parse_json для преобразования строки в вариант с JSON.

select 
parse_json('{En: "lunch", fr: "diner"}') as VARIANT_COLUMN,
VARIANT_COLUMN:En::string as ENGLISH_WORD;

В этом примере первый столбец преобразует ваш JSON в вариант с именем VARIANT_COLUMN. Второй столбец использует вариант, извлекая свойство «En» и приводя его к строковому типу данных.

Вы можете определить столбцы как вариант и сохранить JSON изначально. Это повысит производительность и позволит выполнять синтаксический анализ с использованием точечной нотации в SQL.

person Greg Pavlik    schedule 09.04.2020