⟵ сюдатуда ⟶
  • Мастерклассы
  • Внешние подключения
  • Tableau и PowerBI
  • Подключение Tableau к PostgreSQL
  • Подключение Let's Encrypt сертификата к PostgreSQL для подключения PowerBI
  • amoCRM
  • Битрикс 24
  • База знаний
  • Подключение Tableau к PostgreSQL

    VK Video

    Смотреть на 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