#json #postgresql #hive
Вопрос:
У меня есть две таблицы в postgresql.
- первый (продукт) имеет строку json артикула ([149461190])
- второй (товар) имеет обычный столбец артикула
Как я могу присоединиться к ним по артикулу? Я попробовал это сделать, но ничего не вышло.
select * from product ps , jsonb_to_recordset(ps.sku -gt; 'ps_sku') as (sku text) join item v using sku
Исключение, которое я получаю
org.apache.hadoop.hive.ql.разбор.Исключение синтаксического анализа:строка 5:39 не может распознать ввод рядом с ‘jsonb_array_elements_text’ ‘ (‘ ‘p’ в разделе joinSourcePart
Комментарии:
1. Пожалуйста, приведите конкретный и репрезентативный пример данных ps.sku json в таблице product и укажите тип данных столбца sku в элементе таблицы.
Ответ №1:
Я понял, что product
это таблица, и в этой таблице есть поле по имени sku
и по типу JSON, а в JSON есть ключ по имени ps_sku
Если значение ps_sku
ключа является целочисленным типом, то:
select * from product pr inner join item itm on itm.sku = (pr.sku-gt;'ps_sku')::integer
Если значение ps_sku
ключа является типом текста, то:
select * from product pr inner join item itm on itm.sku = (pr.sku-gt;'ps_sku')::text
pr.sku-gt;'ps_sku'
эта команда извлекает значение ps_sku
ключа из строки JSON (из sku
поля)