BI
September 24

Apache Superset

Введение

Apache Superset — это платформа с открытым исходным кодом для анализа и визуализации данных. Она позволяет устанавливать соединения с различными источниками данных, создавать наборы данных (datasets), визуализации (графики) и интерактивные панели (дашборды) для представления аналитической информации.


Установка

Установка Apache Superset требует более сложной подготовки, чем просто скачивание архива. Поскольку Superset функционирует как веб-приложение, необходимо развернуть серверную часть. Существуют три основных подхода:

  1. Kubernetes
  2. PyPI
  3. Docker

В данном случае рассматривается установка посредством Docker (на платформе Windows с использованием Docker Desktop и WSL).

Установка WSL и Docker

Для начала вам нужно установить WSL, поскольку Docker Desktop работает с Linux.

  • Сочетание клавиш: Win+R
  • Ввести cmd и нажать Enter
  • wsl --install --web-download
  • подождать установку, ввести название подсистемы, пароль

После успешной установки WSL, скачайте Docker Desktop, и убедитесь что во время загрузки установили опцию Use WSL 2 instead of Hyper-V.

Запускаем приложение Docker Desktop. Переходим в настройки:

В настройках включаем интеграцию с Ubuntu:

Загрузка контейнера (Вариант 1)

В данном примере предложена загрузка подготовленного образа Superset стабильной версии 2.1.0 с возможностью динамической настройки файла конфигурации.

Выгрузите репозиторий:

 git clone https://github.com/yupest/superset-course

Измените файл docker-compose.yml. Сгенерируйте секретный ключ через команду: openssl rand -base64 42.

Перейдите в папку superset-course

cd superset-course

И запустите докер

docker-compose up

Такой способ позволит динамически конфигурировать Superset. Вы можете вносить изменения в superset_config.py без изменения основного config.py. И перезагружать контейнер с суперсетом.

Загрузка контейнера (Вариант 2)

После установки Docker Desktop, запустите его и залогиньтесь/зарегистрируйтесь.

Используйте образ Apache Superset с тегом 4a5d978-dev, загруженный из Docker Hub.

  • После установки образа запустите его, нажав на кнопку RUN, указав наобходимые параметры: название, порт хоста для доступа к приложению и задать переменную окружения SUPERSET_SECRET_KEY. Сгенерируйте секретный ключ через команду: openssl rand -base64 42.

Загрузка контейнера (Вариант 3)

Клонируйте репозиторий:

git clone https://github.com/apache/superset.git

Перейдите в папку superset.

cd superset

Настройте файлы конфигурации или сам docker файл. После чего запустите приложение Docker и введите команду в wls.

sudo docker-compose -f docker-compose-non-dev.yml up

Подробнее о загрузке и настройке Apache Superset:

Настройка

После запуска контейнера нужно создать администратора, инициализировать базу данных Superset и выполнить начальную настройку системы.

Перейдите во вкладку containers и откройте созданный контейнер.

Перейдите во вкладку containers и откройте созданный контейнер.

Перейдите во вкладку Exec.

Перейдите во вкладку Exec

В этой консоли напишите следующие команды, друг за другом

superset db upgrade

Во время выполнения команды ниже укажите username и password админа суперсет, например: admin admin.

superset fab create-admin
superset load_examples
superset init

Следует отметить, что существует множество дополнительных параметров конфигурации, флагов и разрешений, которые можно настраивать в конфигурационных файлах. Они преимущественно актуальны для разработчиков или пользователей, которые используют API, настраиваемую стилизацию (CSS), шаблонизаторы и др. Для большинства базовых задач, связанных с созданием дашбордов и визуализаций, достаточно минимальной конфигурации.

После выполнения всех команд открываем Приложение Apache Superset нажав сюда (https://localhost:8088)

Откроется окно в браузере, где нужно войти под учетной записью админа, которого вы создали.

Вы запустили Apache Superset c базой данных примеров, на которой можно протестировать функционал платформы.


Использование

Подключение к данным

  • Superset позволяет подключаться к реляционным базам данных, таким как MySQL, PostgreSQL, SQLite, а также к альтернативным источникам, например Google Sheets.
  • После настройки соединения необходимо создать dataset (набор данных). Dataset — это сущность, представляющая таблицу данных; в неё можно включать исходные поля, вычисляемые поля и метрики.
  • Интерфейс SQL Lab предоставляется для работы через SQL-запросы — можно писать запросы, сохранять их, формировать новые наборы данных на их основе или использовать их для дальнейшей визуализации.

Чтобы сделать возможной загрузку CSV и Excel файлов потребуется подключить свою локальную пустую БД.

Например:

Вместо root может быть другой пользователь и другой пароль.

Запустите mysql:

mysql -u root -p

Просмотр пользователей:

SELECT user FROM mysql.user;

Получить текущего пользователя:

SELECT USER();

Установить пароль пользователю:

SET PASSWORD FOR 'root'@'localhost' = 'MyNewPass';

ИЛИ так:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Создать БД:

CREATE DATABASE my_db;

По умолчанию БД имеет порт 3306.

Подключите свою БД в Apache Superset.
Для этого перейдите Setting -> Database Connection

Подключите свою БД через кнопку + Database. Выберите подключение:

Выберите URI-формат или заполните информацию в полях.

URI-формат:

mysql://root:root@host.docker.internal:3306/my_db

Включите возможность загрузки CSV Allow file uploads to database.

Теперь загрузка файлов станет возможной.

Создание визуализаций (графиков)

  • Superset поддерживает около 60+ видов визуализаций (графиков).
  • В большинстве визуализаций требуются следующие элементы:
    • X-axis (ось X) — одна колонка данных
    • Metrics — одна или несколько колонок, определяющих метрики (ось Y или аналогичные показатели)
    • Dimensions — поля, определяющие разбивку данных (например, группировка)
    • Filters — фильтры для ограничения или отбора данных
  • В зависимости от типа визуализации могут быть разные требования. Например, круговая диаграмма может требовать меньше обязательных полей, а диаграмма типа «пузырь» (Bubble Chart) может требовать указания осей X и Y, размеров точек и прочего.

Кастомизация визуализаций

  • Встроенный интерфейс позволяет настраивать визуальные аспекты: размер и стиль текста, подписи, маркеры, взаимодействие (например, возможность масштабирования по оси X), а также другие элементы представления.
  • После внесения изменений необходимо запускать действие «обновить график» (update chart), чтобы они вступили в силу.

Создание дашборда

  • После создания визуализаций пользователь может собрать дашборд посредством перетаскивания объектов (графиков) и размещения их на панели.
  • В настройках дашборда можно изменить его название, цветовую схему, права доступа пользователей, а также URL.
  • Для детальной стилизации элементов дашборда часто требуется использование CSS. Это предоставляет гибкость, однако усложняет некоторые задачи, которые в других платформах реализованы более прямо (например, изменение цвета отдельных элементов, рамок и др.).

Дополнительные возможности

  • Superset поддерживает экспорт и импорт объектов (дашбордов, визуализаций). Однако эффективность этих функций ограничена: во многих случаях они работают корректно лишь внутри одной инстанции Superset, поскольку экспорт/импорт строится на идентификаторах (ID), которые могут изменяться в зависимости от конфигурации и других зависимостей.
  • Система ролей и прав доступа позволяет разграничивать возможности пользователей. Для администратора также доступна система логов, фиксирующая действия в системе.
  • Superset - платформа с открытым исходным кодом, благодаря чему разработчики могут добавлять свои виды графиков и диаграмм.

Преимущества и недостатки

Преимущества

  1. Открытый исходный код и бесплатный доступ.
  2. Возможность работы локально / без постоянного подключения к интернету.
  3. Повышенный уровень безопасности при правильной настройке.
  4. Поддержка командной работы: ролей, прав, разграничения доступа.

Недостатки

  1. Установка и первоначальная настройка могут быть сложными для начинающих пользователей.
  2. Настройки кастомизации иногда непросты, особенно для нестандартных визуализаций или дизайнов.
  3. Некоторые функции требовательны к знаниям CSS или другим техническим аспектам, что может быть препятствием.
  4. Ограниченные возможности для распространения результатов (дашбордов) внешним пользователям вне системы — без дополнительных настроек.