PostgreSQL: вытащить в отдельные строки значения из списка, который является значением для ключа JSON
Надеюсь, что понятно объяснил проблему.
У меня есть JSON в RedShift:
{"desc":"Select the setting that you will do the recordings under","name":"ambient","values":["","Indoors + High + Loud","Indoors + High + Normal","Indoors + Low + Normal","Indoors + Low + LowVolume","Outdoors + High + Normal","Outdoors + Low + Loud","Outdoors + Low + Normal","Outdoors + Low + LowVolume"]}
Мне надо сделать так, чтобы для каждой записи из списка в значении к values была отдельная строчка.
Сейчас я делаю такой запрос:
WITH all_values AS (
SELECT
json_extract_path_text(json_extract_array_element_text(inputs, 0, True), 'name') AS name,
json_extract_path_text(json_extract_array_element_text(inputs, 0, True), 'desc') AS description,
json_extract_path_text(json_extract_array_element_text(inputs, 0, True), 'values') AS value
FROM source.table
WHERE
prompttype = 'input'
GROUP BY name, description, value
LIMIT 10
)
SELECT * FROM all_values;
Но получаю такой результат:
CREATE TABLE t1 (name, description, value);
INSERT INTO t1 VALUES ('Select the setting that you will do the recordings under','ambient','["","Indoors + High + Loud","Indoors + High + Normal","Indoors + Low + Normal","Indoors + Low + LowVolume","Outdoors + High + Normal","Outdoors + Low + Loud","Outdoors + Low + Normal","Outdoors + Low + LowVolume"]');
То есть список просто кладется, а не вытаскивается каждый элемент списка в отдельную строчку (при этом name и descriptions для всех должны быть одинаковыми).
Я в принципе понимаю, что это нормальный результат для моего запроса. Но не знаю как сделать правильный запрос, чтобы решить задачу. (