1. Введение
Рынок BI-инструментов, как и любой другой сильно меняется в последние годы. Все чаще фокус компаний смещается в сторону open-source инструментов по понятным причинам. В этом мире высокая конкуренция - DataLens, Superset, Metabase и т.д. Есть хорошая статья с базовыми сравнениями BI-систем. Прекрасно, чтобы вкатится. Но невозможно в рамках одной статьи рассмотреть преимущества и недостатки каждой BI-системы. Поэтому мы пойдем немного другим путем - посмотрим на то, что выбирают топы рынка РФ, а затем кратко раскроем фичи этого инструмента. Без подробного описания и сравнения с конкурентами (это и в книгу не влезет, не то что в статью). Учту не все (это просто невозможно), но постараюсь охватить как можно больше и как можно более кратко. Поехали.
Неоспоримым лидером, как вы уже поняли из названия статьи, является Apache Superset. Давайте просто перечислим компании, которые его внедрили и очень этому рады (куча статей на Хабре, выступлений на конференциях и т.д.):
СБЕР. Внедрили так успешно, что на основе Apache Superset сделали свой продукт - SDP BI
ОККО - статья
МТС - статья
М2 - статья
ОТП-банк - статья
Леру-мерлен (Лемана-про) - статья
Ростелеком - статья
Читать все эти статьи нет нужды, чтобы понять, о чем будет речь в текущей. Это лишь для понимания, что многие топы рынка используют для визуализации именно Apache Superset. На самом деле компаний, внедривших его куда больше (как минимум один желтый банк). Перечислять их все не имеет смысла.
Теперь попытаемся раскрыть, почему же так? Если обобщить, то ответ кроется, на мой субъективный взгляд, в двух ключевых преимуществах Apache Superset:
большое количество базовых возможностей
безграничные возможности кастомизации
Начнем раскрывать по порядку.
2. Большое количество базовых возможностей
Просто перечислим самые важные фичи из коробки. Кратко, лишь для охвата масштаба:
Количество доступных визуализаций свыше 50
Количество доступных соединений с базами данных свыше 50
RBAC - ролевая модель доступов пользователей. Позволяет гибко управлять доступами. Около 70 различных доступов (просматривать дашборд / изменять дашборд / просматривать чарт и т.д.). Как следствие - у каждого объекта (датасет / чарт / дашборд) есть владелец. Доступ к объектам осуществляется на основе ролевой модели (вносить изменения в объект может только владелец)
RBAC на дашборды - ролевая модель отдельно для дашбордов. Позволяет владельцу дашборда разграничивать доступы к дашборду. Полезно, например, чтобы финансовые дашборды были видны только тем пользователям, кто имеет указанную владельцем дашборда роль
RLS - возможность гибко управлять доступом к строкам датасета. Можно запретить доступ к строкам датасета, например, если роль пользователя не равна finance.
Есть возможность гибкой визуальной кастомизации дашбордов/чартов (да и вообще всего, но об этом позже) с помощью HTML/CSS
Jinja Templates - позволяет гибко кастомизировать запросы к БД. Также можно написать собственный макрос на языке python, который является Callable объектом (то, что можно вызвать как функцию, т.е. функция, класс, лямбда-функции и т.д.). Результат работы Callable объекта можно пробросить в sql-запрос к БД. Например, можно написать макрос, который будет парсить курс рубля с сайта ЦБ и пробросить это значение в датасет и далее в дашборд. В таком случае обновление дашборда = получение курса рубля в реальном времени
Handlebars - мощный тип визуализации, позволяющий писать собственный HTML+CSS код. Тут уж на что фантазии хватит. При использовании комбинации Jinja Templates + Handlebars можно делать даже такое
Annotation Layers - дополнительные обозначения на графиках
Celery - позволяет автоматизировать некоторые задачи (хотя на самом деле больше вреда, чем пользы). Например, рассылку отчетов и алертов
Кэширование - позволяет сохранять в кэш запросы к БД, дабы снизить на нее нагрузку. Также используется и для тасок Celery
Наличие инструментов безопасности (помимо встроенной RBAC) - CORS, CSRF, CSP (хотя ее часто просто отключают, избыточна + в базовом варианте блокирует некоторые страницы, надо шаманить)
Наличие логирования всех действий пользователей - позволяет проводить аудит, считать KPI и прочее-прочее, на что фантазии хватит
Система тэгов - позволяет закреплять тэги к сущности (датасеты/чарта/дашборды). Затем по этим тэгам можно получать лишь нужные вам сущности. Крайне важно при масштабировании, ведь искать среди 10 000 дашбордов нужный пользователю - занятие сомнительное
API + Swagger - мощнейшая связка инструментов для работы с приложением. Позволяет делать практически все - от вытягивания чартов до отправки SQL-запроса к БД. Можно писать ботов любой сложности и для любых задач
WSGI-сервер по умолчанию обеспечивает высокий параллелизм - крайне важно при высоких нагрузках
Аутентификация с помощью keycloak/LDAP - придется подшаманить, инструкция из доки не совсем рабочая, но данный момент крайне важен в крупных компаниях, где почти всегда есть сервис аутентификации
Feature Flags - огромный список опций, отключенных (или как-то настроенных) по умолчанию, но которые можно активировать и настроить так, как вам нужно
Возможность перевести Superset на любой язык - тоже придется подшаманить, но такая возможность имеется
Возможность разворачиваться в кубере
Из всего выше перечисленного можно сделать несколько выводов:
Возможности из коробки позволяют масштабировать Superset
Возможности из коробки делают Superset безопасным
Возможности из коробки позволят отрисовать в Superset практически любую визуализацию
Три основных тезиса, к которым можно все свести - масштабирование, безопасность, гибкость. И это просто из коробки (поэтому и не стал их перечислять отдельно в самом начале). А дальше еще интереснее.
3. Безграничные возможности кастомизации
Помимо того, что уже из коробки Superset можно превратить в платформу визуализации, можно еще и кастомить все. И под все имеется в виду именно все.
Superset - приложение, написанное на flask в качестве бэкенда, и js+ts+react в качестве фронта. Весь код в открытом доступе. И вы вольны в этом коде править все, что захотите. Приведу лишь несколько примеров.
Кастомная страница аутентификации
Можно кастомить как годно, например, добавить информацию о команде, ответственной за продукт. Полезно, если пользователь забыл свои креды/его кикнули из кейклок и он не может войти/впервые пытается залогиниться и т.д. В подобной ситуации пользователю хотелось бы знать от системы, к кому идти, а не бегать и узнавать у коллег, что делать.

Можно кастомить страницу как угодно, любые цвета, стили, текст (и значок суперсета в левом верхнем углу тоже можно менять, конечно же)
Перенаправление после аутентификации
После того, как пользователь залогинился, его можно перенаправить на какой-либо из дашбордов. Это удобная фича для контроля продукта. Вы можете создать дашборд, на который внесете всю самую необходимую информацию - какие тэги каким командам принадлежат, какие роли и у кого нужно заправшивать, к кому идти с тем или иным вопросом и т.д. Так как абсолютно лень делать гифку, оставлю код, позволяющий перенаправить пользователя после аутентификации на дашборд с id=1. Изменения вносятся в docker\pythonpath_dev\superset_config.py
# custom welcome page
from flask_appbuilder import expose, IndexView
class SupersetIndexView(IndexView):
@expose("/")
def index(self) -> FlaskResponse:
if not g.user or not get_user_id():
# Do steps for anonymous user e.g.
return redirect("/login")
# Do steps for authenticated user e.g.
return redirect("/superset/dashboard/1")
FAB_INDEX_VIEW = f"{SupersetIndexView.__module__}.{SupersetIndexView.__name__}"
В docker\pythonpath_dev\superset_config.py
можно переопределить любой код бэкенда. А так как в качестве бэкенда flask, по которому очень много документации, то разобраться с бэкендом вполне реально даже на уровне вайб-кодинга (и даже AI со страницы документации Superset порой правильно подсказывает, не говоря про более продвинутые AI).
Также можно делать свои визуализации, но это уже хай-левел - Разработка Custom плагина визуализации для Apache Superset 3.1.2 (2024). Если более 50 визуализаций не достаточно - то можно сделать свою собственную.
4. Заключение
Именно за счет совокупности двух факторов (большое количество базовых возможностей и безграничные возможности кастомизации) Superset и завоевал такую популярность среди топов рынка. Особенно важно то, что уже на уровне базовых возможностей можно превратить Superset в платформу визуализации и отмасштабировать как угодно в зависимости от нагрузки. Для крупных компаний вопрос масштабирования и безопасности самый важный. Ну а глубокая кастомизация исходников позволит добиться еще большего. Также стоит упомянуть и про требуемый уровень компетенций сотрудников - он динамически увеличивается в зависимости от сложности задач. В базовом варианте BI-аналитик может вообще не знать ничего и сможет составить простой дашборд. Ну а если хочется гибкой кастомизации, то придется, конечно, подтянуть знания. Но, не все сразу, а постепенно: захотели пробросить фильтры из дашборды в sql-запрос к СУБД - подтянули Jinja Templates; захотели покастомить внешний вид дашборда - подтянули CSS и т.д. Одним словом - погружение плавное, не нужно сходу становится full-stack разработчиком.
На этом все. Хочу лишь добавить, что в статье были рассмотрены далеко не все возможности Superset, а лишь те, которые критичны (на мой субъективный взгляд) при выборе BI-инструмента. Спасибо за внимание, надеюсь, данный обзор будет полезен!
Комментарии (2)
VitaminND
23.08.2025 06:27А как решали проблему с тем, что Superset открывает много коннектов к БД? PostgreSQL, например, не очень такое любит...
Mazrigosh
Superset - хорошая штука. Хорошо что ещё не все сошли с ума на почве импортозамещения и выбирают качественный функциональный продукт. А не тот, который "надо".