Извлечение данных из поля JSON в Redshift

#json #amazon-redshift

#json #амазонка-красное смещение #amazon-redshift

Вопрос:

Я пытаюсь извлечь некоторые данные из поля JSON.

 [{"id": 10001, "person1": {"name": "Kevin", "role": "junior"},
               "person2": {"name": "Scott", "role": "senior"}}] 
  

Я пытаюсь извлечь имя и роль под каждым идентификатором.

Я попробовал ниже, но он вернул пустую запись.

 SELECT json_extract_path(column_name::json,'person1','name') FROM table
  

Комментарии:

1. Содержит ли поле точный текст, который вы показали выше (включая квадратные скобки)? Рассматривали ли вы возможность загрузки этих данных в таблицу в виде обычных столбцов, а не сохранения их в формате JSON? Это было бы намного эффективнее.

Ответ №1:

JSON, который вы показали, является:

  • Список (как указано [] )
  • Которое содержит словарь
  • Которое содержит словарь

Сначала вам нужно будет извлечь первый элемент списка, а затем использовать предоставленную вами команду.

Попробуйте что-то вроде:

 SELECT 
  json_extract_path(
    json_extract_array_element_text(column_name::json, 0),
    'person1',
    'name'
  ) 
FROM table
  

Комментарии:

1. Спасибо. Я смог получить необходимую информацию, используя следующее : ` выберите json_extract_path( jsonb_extract_array_element_text(column_name)::json, ‘person1’, ‘name»