Apache Superset - это активно набирающий популярность open source продукт для построения бизнес-аналитики.

Уже много написано о его развертывании и о его технических особенностях, поэтому мне бы хотелось поговорить об опыте внедрения Superset с организационной точки зрения, а также я постараюсь описать техническое окружение и важные отличия от Power BI. Отдельно остановлюсь на системе прав доступа, т.к. в нашей компании этот вопрос важен.

Сначала расскажу о распределении обязанностей с сфере BI, которое мы используем.

В процессе участвуют 3 основных роли:

  1. ИТ - основная функция ИТ - это поддержка аналитического хранилища данных, построенного на основе распределенной базы Postgres. ИТ решает поступающие от бизнеса задачи (запросы) по загрузке новых данных в хранилище. Основной фокус - это качество данных и надежность решения, а также создание архитектуры, обеспечивающей максимальное быстродействие. Также на ИТ ложится соблюдение конвенции имен и использование точных терминов при именовании полей и таблиц.

  2. Аналитики - сотрудники из бизнес-подразделений. Собственно те люди, которые делают дашборды. Они хорошо понимают задачи и потребности их конечных пользователей и имеют навыки презентации и донесения информации, основанной на цифрах. При использовании Superset становится необходимо, чтобы аналитики знали SQL на базовом или среднем уровне. Если аналитикам нужны какие-то новые данные в хранилище, то они запрашивают интеграцию этих данных в ИТ.

  3. Конечные бизнес-пользователи - их задача просто войти в систему и использовать дашборды в своих процессах. Они контактируют с аналитиками при возникновении новых запросов.

Далее опишу, что пришлось сделать, чтобы реализовать описанную схему взаимодействия с использованием Superset:

  1. Сделать хранилище данных быстрым. Аналитическое хранилище должно быть быстрым, иначе пользоваться Superset практически не получится. Думаю, кэширование дашбородов, предусмотренное в superset, это не самый лучший путь по причине вариативности запросов с различными фильтрами.
    В нашем случае из этого следует, что данные должны быть предобработаны на "мастер-нодах" таким образом, чтобы минимизировать нагрузку в основном хранилище. Для передачи данных в основное хранилище используется стандартная логическая репликация в Postgres.

    У нас данные обладают не столько большими объемами, сколько большим разнообразием и при этом часто обновляются. По этой причине мы используем традиционную базу данных, а не колоночную. (Замечу также, что в Postgres есть расширение Citus, которое можно использовать для колоночного или смешанного хранения для того, чтобы ускорить агрегированные запросы по большим таблицам.)

  2. Настроить систему прав доступа в хранилище данных. Как мы понимаем, данные могут быть конфиденциальными, поэтому для аналитиков создаем группы доступа и определяем их права в базе.

    Нам потребовалось настроить ldap в Postgres, чтобы не думать о паролях, об удалении уволившихся сотрудников и т.д.

    Для каждой группы аналитиков (отдела) создаем схему, в которой даем полные права для создания собственных представлений (view).

    Последнее необходимо сделать, т.к. если писать запрос в самом Superet (virtual), то работает это с Postgres намного медленнее, чем обращение к view (как physical). В этом несложно убедиться, например, проверив запросы в pg_stat_statements. В режиме "physical" система Superset строит вполне "адекватные" запросы к базе данных.

  3. Обучить аналитиков. Проблема в том, что не все аналитики знают SQL, хотя многие из них учили SQL в институте или на разных дополнительных курсах. Чтобы подтянуть знания, нам пришлось записать небольшой курс включающий: немного теории СУБД, структуру нашего хранилища, тренинги на тему того, как писать SELECT и создавать VIEW, а также как строить дашборды в суперсете. (Конечно, при этом ИТ поддерживает аналитиков при написании сложных запросов и при оптимизации медленных запросов.) В целом, для аналитиков "прокачка" таких знаний интересна, т.к. у них есть желание быть востребованными специалистами.

  4. Организовать систему прав доступа в самом Superset

    • Сначала поговорим об аутентификации пользователей. Чтобы "логинить" пользователей, мы используем сервер Keycloak, интегрированный с Superset. Keycloak пробрасывает запросы в Active Directory (AD) и сообщает данные пользователя в Superset, включая группы доступа из AD. Далее Superset, через настроенный мэппинг, автоматически присваивает пользователю его роли. Пользователь может быть авторизован как редактор дашбордов (аналитик) или как конечный пользователь с определенными ролями для просмотра дашбордов.

    • Для того, чтобы разграничить доступы редакторов (аналитиков), нужно дать права на подключение к базе (database connection). Т.е. по сути это подключение к базе данных с определенным системным логином, для которого заданы нужные права. (Как альтернативный вариант, можно разграничить доступ на уровне схем.)

    • Для того, чтобы разграничить доступы конечных пользователей, нужно включить в их роли нужные датасеты (это делает ИТ). Необычной особенностью Superset является то, что назначение прав к дашбордам происходит через датасеты. Т.е. пользователь видит список дашбордов в соответствии с доступностью использованных в них датасетов. (К такому подходу нужно привыкнуть).

Общая архитектура системы прав доступа
Общая архитектура системы прав доступа
  1. Сделать в superset разные мелкие дополнительные настройки

    • Коды валют, форматы чисел, часовой пояс по умолчанию.

    • Настроить почтовый ящик и систему для рассылки дашбородов. Некоторые пользователи любят получать графики на email. Этот функционал в Superset вполне работоспособен, но требуется повозиться с конфигурированием.

Небольшое сравнение с Power BI

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

  1. Системе Superset необходимо быстродействие БД. Power BI может делать модель данных "офлайн" и обновлять конкретный дашборд по расписанию. В Superset, можно сказать, что такой возможности нет (кэширование отчасти помогает, но быстродействие БД все равно требуется).

  2. Superset не может использовать Excel в качестве источника данных. Конечно, Excel это очевидное зло, но до пользователей эту идею донести непросто. При использовании Superset придется сначала загрузить Excel в БД или найти нужные данные в более надежном источнике.

  3. Дизайн дашборда в Superset происходит в браузере (он-лайн). Power BI требует установки клиентского приложения и зачастую требует выгрузку данных на клиента. На мой взгляд, подход Superset выглядит более современным и позволяет работать с большими объемами непосредственно на сервере.

  4. В Superset нет системы папок для упорядочивания дашбордов. Нужно отметить, что на момент написания этой статьи в Superset уже разрабатывается система тэгов, как некоторый аналог папок. Сейчас пока убираем лишние для пользователя дашборды, используя права доступа.

  5. В Superset нет мобильного приложения. Как утешение, можно предложить только отправку дашбордов на почтовый ящик.

Дополнительно отмечу, что пользователям нравится эргономика и дизайн Superset. Думаю этот фактор немало помогает во внедрении.

Надеюсь, мне удалось рассказать о том, что находится вокруг системы Superset и поделиться полезным опытом.

Статья скорее получилась обзорная. Если кому-то интересны технические нюансы, то постараюсь ответить в чате или в личных сообщениях. Буду рад, если члены сообщества поделятся парой интересных идей или альтернативных мнений по этой теме.

Комментарии (12)


  1. tmplts
    24.03.2024 15:17

    К слову, с ноября Битрикс24 стал использовать Superset для внутреннего инструмента - своей BI-аналитики как альтернативы ранее использовавшимся интеграциям с Power BI и средствами от Google и Яндекс. С учетом относительно широкого распространения Битрикс24 среди (в частности) малого и среднего бизнеса - идет популяризация этого инструмента)


  1. Kryptonets
    24.03.2024 15:17

    Я не очень понял в Apache нет привычной модели данных? Измерения?Атрибуты? ETL? Поддержка нескольких источников данных? Всё грузится одним датасетом через SQL-запрос и потом на этом датасете вычисляются определённые агрегаты, так?


    1. SobolevP Автор
      24.03.2024 15:17

      В Superset, можно сказать, что нет модели данных. ETL в нем тоже нет. Несколько источников данных есть, но не вижу особого смысла, если есть общее хранилище данных.

      Датасет не один, а под каждым графиком или таблицей свой датасет. Далее все это компонуется в дашборд. Таким образом, один дашборд может быть по нескольким датасетам.

      P.S. SQL запрос внутри Superset лучше не делать, а подсовывать ему готовое представление (view), тогда запросы в базу при применении фильтров будут оптимальны.


    1. ssmaslov
      24.03.2024 15:17

      Да. Именно поэтому это НЕ bi инструмент а просто рисовалка


      1. SobolevP Автор
        24.03.2024 15:17

        Разработчики пишут, что это "Data Visualization Platform", а не "BI Platform", что вполне соответствует истине.


  1. YAKOROLEVAZAMKA
    24.03.2024 15:17

    Есть информация что при количестве пользователей больше 100 суперсет начинает работать из-под палки и его надо дорабатывать (чем сейчас разрабы в компании и заняты)

    FYI


    1. kirik
      24.03.2024 15:17

      Суперсет - питон, бэкенд у него достаточно прост, свою базу использует только для хранения чартов, дэшбордов и юзеров - там нечему особо тупить. Если тупит какой-то определённый датасурс, значит проблема в нём (или в запросах к нему), а не в суперсете. Если правда тупит сам суперсет, можно только посоветовать апнуть машину с питоном/базой, или масштабировать - делается это как с любым приложением на питоне.


      1. YAKOROLEVAZAMKA
        24.03.2024 15:17

        К сожалению лично я не знаю что там тупит, но в банке уже 3 месяца как экстренно собралась команда питон-разрабов с разных проектов и перепиливает весь бэкенд походу


        1. kirik
          24.03.2024 15:17

          Уверен, что это было обдуманное решение :)


        1. SobolevP Автор
          24.03.2024 15:17

          Если проблемой является сам суперсет, то вроде бы для него предусмотрена схема работы в кластере Installing on Kubernetes | Superset (apache.org) c балансировщиком нагрузки. Думаю все-таки проблема в источнике данных, хотя информации мало.


  1. anokru
    24.03.2024 15:17

    У SuperSet коробочные графики не полноценные (а другие попробуй найди или уговори владельца платформы затащить их к вам). Разнообразие присутствует, которое по факту очень ситуативное, а вот базовые представления хромают. Только 1 график с колонками позволяет задать по оси x что-то отличное от датавремени. Визуально (шрифты итп) графики разного типа стилистически не однородны. Если у тебя ограничения в настройке стиля ждешь что он хотя бы сделан с умом. Если кто знает где есть библиотека графиков оставьте плз ссылки, попробую уговорить наше IT их к нам протащить.