Запрашивать массив JSON в Redshift?

#json #amazon-redshift

#json #amazon-redshift

Вопрос:

Можете ли вы запросить поле внутри массива в столбце JSON с красным смещением?

У меня есть следующий JSON:

 {"sort_details":[{"sort_by":"name","order":"asc"}]}
  

Возможно ли запросить что-либо ниже элемента самого высокого уровня в Redshift? Я пробовал использовать

 json_extract_path_text( myjson , 'sort_details' , 'sort_by' ) 
  

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

Ответ №1:

Вы могли бы использовать вложенные функции JSON:

 json_extract_path_text(
    json_extract_array_element_text(
        json_extract_path_text( 
            myjson, 
            'sort_details'
        ), 
        0
    ), 
    'sort_by'
)
  

Ответ №2:

 JSON_EXTRACT_PATH_TEXT(myjson, 'sort_details', 0, 'sort_by')
  

Это также работает, но это не задокументировано в документе AWS