Интеграция данных Pentaho с использованием соответствия вставки / обновления ключа в json - PullRequest
0 голосов
/ 28 августа 2018

Я хотел бы выполнить операцию вставки / обновления в таблице в базе данных postgresql. В таблице есть несколько столбцов, в том числе столбец подробностей типа jsonb, который является целью большинства моих данных.

Все будет хорошо, за исключением того, что идентификатор ключа совпадает с жизнями внутри объекта подробностей. Postgres имеет оператор '- >>' для получения ключей от объекта json. Ergo, я могу запросить это так:

выберите * из клиентов, где детали - >> 'myId' = '1234'

Существует ли это в Пентахо? Когда я открываю интерфейс «Вставить / обновить», я могу выбрать только имена столбцов в «поле таблицы», в идеале я хотел бы написать «детали - >>« myId »».

Возможно ли это, или я должен написать свой собственный класс? Я не уверен, как подойти к этому. Могу ли я получить дамп класса Insert / Update и затем изменить его?

Большое спасибо за любую помощь

1 Ответ

0 голосов
/ 29 августа 2018

Синтаксис SQL-запроса json теперь разрешен всеми SQL-диалектами, так что это то, что вам нужно будет выполнить с помощью простого SQL-запроса. Сначала сделайте свой выбор с помощью оператора json с шага ввода таблицы , который позволяет построить запрос с помощью операторов json sql

select * from customers where details ->> 'myId' = '1234'

и передать строки на следующий шаг, а затем использовать шаг соединения с базой данных

insert into my_table (field1,field2,field3...) values ('?','?','?'...);

и выберите параметр fieldname из предыдущих шагов и используйте? заполнители в вашем запросе.

Если вы хотите сделать upsertion (вставить / обновить), это зависит от используемого вами механизма / диалекта sql, в postgres вы можете создать запрос upsertion следующим образом:

Как сделать UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) в PostgreSQL?

Надеюсь, это поможет. Добро пожаловать в кого-н. : D

...