Набор данных

В этом разделе вы создадите соединение с БД и набор данных в Apache Superset.

Соединение с базой данных

После запуска Superset вы можете создать соединение с базой данных, содержащей данные для дэшбордов. В предыдущих шагах, когда вы настроили контейнеры Superset в файле docker-compose-non-dev.yml, вы создали сервис jmix_database, который запускает PostgreSQL. Эта база данных используется в Jmix-приложении, и теперь вы настроите соединение с этой базой данных в Superset.

Нажмите на пункт Database Connections в настройках Superset:

settings databsase connections

Создайте новое соединение с базой данных. В открытом диалоге выберите тип PostgreSQL и введите детали соединения:

new database connection

Нажмите на кнопку CONNECT, а затем на кнопку FINISH. Теперь соединение с сервисом jmix_database создано.

Создание набора данных

В Apache Superset набор данных (dataset) представляет собой коллекцию данных, которые могут быть использованы для создания диаграмм. Набор данных может быть как физическим, представляющим таблицу или представление в базе данных, так и виртуальным, то есть запросом, который может быть сохранен и повторно использован.

В базе данных Onboarding таблица USER_ имеет внешний ключ к DEPARTMENT. Чтобы визуализировать данные пользователей по отделам, вам нужно использовать второй вариант - запрос, который будет использован как набор данных.

В верхнем меню перейдите к SQL и выберите SQL Lab. В открытом экране заполните поля следующим образом:

  • DATABASE: Jmix Onboarding

  • SCHEMA: public

Теперь нужно написать запрос, который будет использоваться как набор данных. Поскольку вам нужно создать дэшборд для визуализации зарплат сотрудников, включая отдел каждого сотрудника, необходимы следующие столбцы:

  • полное имя пользователя

  • отдел

  • зарплата

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

SELECT CONCAT(first_name, ' ', last_name) full_name, dpr.name department_name, usr.salary
FROM public.user_ usr
INNER join department dpr on usr.department_id = dpr.id

Используйте INNER JOIN, чтобы избежать выборки пользователей без отдела (пользователь admin). Если вы запустите этот запрос, то увидите следующий результат:

sql lab

Сохраните запрос и назовите его Employees' salaries.