VK Video
Настраиваем PostgreSQL для Ubuntu
Смотрим путь расположения конфигурационного файла:
su - postgres -c "psql -c 'SHOW config_file;'"
Открываем файл в nano по полученному пути, например:
nano /etc/postgresql/12/main/postgresql.conf
Ищем секцию CONNECTIONS AND AUTHENTICATION
, убираем комментарий у listen_addresses
и ставим '*'
:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
Открываем по тому же пути файл pg_hba.conf
, например:
nano /etc/postgresql/12/main/pg_hba.conf
Добавляем строку в секцию IPv4 local connections
:
host all all 0.0.0.0/0 md5
Смотрим список служб:
service --status-all
Перезапускаем postrges
— название службы надо проверить по списку из предыдущей команды:
service postgresql restart
Проверяем, что рестартовал корректно:
service postgresql status
Можно проверить подключение с другого сервера на котором установлен psql
, замените ubuntu.totum.online
на хост вашего сервера с бд и totum
на вашего пользователя postgresql
если он отличается:
psql -h ubuntu.totum.online -U totum
Драйвера PostgreSQL для Tableau
https://www.tableau.com/support/drivers
Data Source — PostgreSQL
Operating System — ...
Bit Version — ...
Особенности sql запросов к Totum
Запрос идет к SCHEMA.TABLE
Если в SHEMA-NAME
есть нестандартные символы включая дефис, то ставить в кавычки "SHEMA-NAME".table
Поля в Тотум это jsonb
, поэтому запрос к ним FIELD_NAME->>'v'
Для сравнения по числовым полям (для дробных разделитель .
):
select first_field->>'v' as "field 1", second_field->>'v' as "field 2" from totum.tableau where (second_field->>'v')::NUMERIC > 20
Для сравнения по нечисловым полям (по чекбоксу сравнение идет как по строковому полю с 'true'
и 'false'
):
select first_field->>'v' as "field 1", second_field->>'v' as "field 2" from totum.tableau where first_field->>'v' > 'B'
Если мы хотим выбрать строки по нескольким значениям поля, то можно использовать такую запись:
select first_field->>'v' as "field 1", second_field->>'v' as "field 2" from totum.tableau where first_field->>'v' in ('B','F')
Если мы хотим выбрать строки исключая несколько значений поля, то можно использовать такую запись:
select first_field->>'v' as "field 1", second_field->>'v' as "field 2" from totum.tableau where first_field->>'v' not in ('B','F')
Сортировка по числовым полям:
select first_field->>'v' as "field 1", second_field->>'v' as "field 2" from totum.tableau where first_field->>'v' > 'B' order by (second_field->>'v')::NUMERIC asc
Сортировка по нечисловым полям:
select first_field->>'v' as "field 1", second_field->>'v' as "field 2" from totum.tableau where first_field->>'v' > 'B' order by first_field->>'v' asc
Что бы выбрать where по пустому полю (там может быть null
или пустая строка ""
, для тотума это одно и тоже, но для sql это разные вещи поэтому используйте оператор or
):
select first_field->>'v' as "field 1", second_field->>'v' as "field 2", list_field->>'v' as list from totum.tableau
where (first_field->>'v' is NULL or first_field->>'v' = '') order by (second_field->>'v')::NUMERIC desc
Что бы выбрать из полей типа Список по включению значения этого списка:
select first_field->>'v' as "field 1", second_field->>'v' as "field 2", list_field->>'v' as list from totum.tableau
where list_field->'v' @> '10'::jsonb order by (second_field->>'v')::NUMERIC desc
Строки и числа хранящиеся в тотум в таких списках для бд различаются, что бы гарантировано искать по значению его надо дублировать через or
как число и как строку:
select first_field->>'v' as "field 1", second_field->>'v' as "field 2", list_field->>'v' as list from totum.tableau
where (list_field->'v' @> '10'::jsonb or list_field->'v' @> '"10"'::jsonb) order by (second_field->>'v')::NUMERIC desc
Если мы хотим выбрать значения изнутри json хранящегося в поле по ключам:
select row_field->'v'->>'key_1' as "key 1", row_field->'v'->>'key_2' as "key 2" from totum.tableau where first_field->>'v' in ('B','F')
Для таблиц с режимом удаления Скрывать, что бы выбрать активные строки надо указать where is_del = false