У меня есть таблица Redshift, содержащая столбцы с объектами json. Я столкнулся с ошибками парсера json при попытке выполнить запросы в этой таблице, которая применяет определенные фильтры к содержимому объекта json. Хотя я могу использовать json_extract_path_text () в операторах выбора, то же самое не работает при использовании в предложении where.
Я вижу следующую ошибку: Недопустимая операция Amazon: ошибка синтаксического анализа JSON.
Когда я смотрю на таблицу STL_ERROR для получения дополнительных сведений, это то, что я вижу в сведениях об ошибке: errcode: 8001 контекст: ошибка синтаксического анализа JSON error strong >: недопустимый объект json null
Ниже приводится пример содержимого одного такого столбца json:
{"att1":"att1_val","att2":"att2_val","att3":[{"att3_sub1_1":"att3_sub1_1_val","att3_sub1_2":"att3_sub1select
json_extract_path_text(col_with_json_obj,'att4') as required_val
from table_with_json_data;
val"},{"att3_sub2_1":"att3_sub2_1_val","att3_sub2_2":"att3_sub2select
json_extract_path_text(col_with_json_obj,'att4') as required_val
from table_with_json_data;
val"}],"att4":"att4_val","att5":"att5_val"}
Теперь, когда я запускаю следующий запрос, он выполняется без проблем:
select
json_extract_path_text(col_with_json_obj,'att4') as required_val
from table_with_json_data;
Теперь, когда я использую json_extract_path_text () в предложении where, он не работает с указанной выше ошибкой:
select
json_extract_path_text(col_with_json_obj,'att4') as required_val
from table_with_json_data
where json_extract_path_text(col_with_json_obj,'att4') = 'att4_val';
Есть ли что-нибудь, что я использую неправильно или отсутствует здесь?
P.S: У меня есть еще одна таблица с аналогичной схемой, и те же запросы отлично справляются с ней. Единственное различие между этими двумя таблицами заключается в способе загрузки данных: одна использует jsonpaths file в параметрах копирования, а другая - json 'auto'.