Redshift не является гибким с JSON, поэтому я не думаю, что получение ключей из произвольного документа JSON возможно. Вам необходимо знать ключи заранее.
опция 1
Если возможно, измените ваш документ JSON на статическую схему:
{"locale":"en_IN", "foo": "bla bla"}
Или даже
{"locale":"en_IN", "name": "foo", "value": "bla bla"}
Вариант 2
Я вижу, что ваш префикс может быть известен вам как он выглядит как локаль. Что вы можете сделать, это создать статическую таблицу локалей, а затем CROSS JOIN
ее со столбцом JSON.
locales_table
:
Id | locale
----------------
1 | en_US
2 | en_IN
Запрос будет выглядеть следующим образом:
SELECT
JSON_EXTRACT_PATH_TEXT(json_column, locale || '-foo', TRUE) as foo_at_locale
FROM json_table
CROSS JOIN locales_table
WHERE foo_at_locale IS NOT NULL