Оригинал на GitHub
Вопрос
После подключения базы данных PostgreSQL к сторонней BI-системе обнаружилась проблема. Например, данные типа строка в таблице имеют формат {"v": "some text"}. А в BI-системе эти поля определяются как "Неподдерживаемый тип". Подскажите, как можно решить эту проблему с форматом данных?
Ответ
Тотум использует тип jsonb
, который является структурой. Поэтому, при запросе надо использовать обращение внутрь поля к ключу v
:
select first_field->>'v' as "field 1", second_field->>'v' as "field 2" from totum.tableau where (second_field->>'v')::NUMERIC > 20
Если подключаемая BI-система не может выполнить такой запрос, или это неудобно, то вам нужно сделать view в PostgreSQL, который будет преобразовывать данные в нужные форматы.
Создание view в БД:
create view users__v(id, login, fio, boss_id, roles, add_users, all_connected_users, interface, favorite, is_del) as
SELECT users.id,
(users.login ->> 'v'::text) AS login,
(users.fio ->> 'v'::text) AS fio,
((users.boss_id ->> 'v'::text))::integer AS boss_id,
(users.roles ->> 'v'::text) AS roles,
(users.add_users ->> 'v'::text) AS add_users,
(users.all_connected_users ->> 'v'::text) AS all_connected_users,
(users.interface ->> 'v'::text) AS interface,
(users.favorite ->> 'v'::text) AS favorite,
users.is_del
FROM users;