В одном из проектов мне нужно было развивать управленческую аналитику в крупной образовательной организации. Данные уже были: учебные процессы, финансовые показатели, поступления и другие направления хранились во внутренних системах. Руководству требовались не очередные Excel‑файлы, а единый BI‑контур с дашбордами, детализацией и регулярным обновлением.

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

Если смотреть только на этот момент, систему можно считать выбранной успешно.

Но дальше началась обычная жизнь корпоративного ПО. Источники были доступны не напрямую, требования менялись, за сервер отвечала одна команда, за данные другая, а за отчёты третья. После обновления платформы часть дашбордов потребовала восстановления и переработки. Я не могу утверждать, что это универсальная проблема конкретного продукта: ситуация зависела от версии, конфигурации и локального контура. Но для меня это стало хорошим напоминанием, что BI выбирают не на день презентации.

Его выбирают на несколько лет эксплуатации, обновлений, смены сотрудников и споров о том, кто вообще должен чинить отчёт в понедельник утром.

После этого проекта я стал смотреть на BI не как на редактор графиков, а как на организационный продукт. У него есть пользователи, владелец, инфраструктура, SLA, стоимость изменений и накопленный технический долг. И если всё это не учитывать, система с лучшими визуализациями вполне может оказаться худшим выбором для конкретной организации.

Сначала я выбирал инструмент, а нужно было выбирать рабочий контур

Первое сравнение BI‑платформ обычно начинается предсказуемо. Смотрят, какие есть диаграммы, можно ли сделать drill‑down, насколько удобно писать формулы, подключается ли PostgreSQL, есть ли мобильная версия и как выглядит интерфейс.

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

источник -> загрузка -> подготовка данных -> семантическая модель -> отчёт -> права -> публикация -> поддержка

Если хотя бы один участок этого пути не помещается в существующую инфраструктуру и процессы, красивые графики уже мало что решают.

В нашем случае важнейшим ограничением был доступ к данным. Аналитический контур не имел прямого подключения к основной БД. Данные приходили через API, который предоставляла смежная IT‑команда, а извлечение, проверка, очистка, сопоставление и расчёт части показателей выполнялись до загрузки в отчёт.

Из‑за этого пункт «есть коннектор к PostgreSQL» почти ничего не говорил о реальной пригодности платформы. Формально PostgreSQL действительно был источником. Фактически между ним и аналитиком находились API, правила доступа, владельцы систем и отдельный процесс согласования изменений.

Это сильно меняет архитектуру. Нельзя просто включить DirectQuery и считать вопрос закрытым. Сначала нужно решить, где будут жить staging, ETL или ELT, витрины, история загрузок и проверки качества. BI‑платформа может взять часть этой работы на себя, но тогда она становится ещё и средством подготовки данных. Если же организация уже строит DWH, логичнее не дублировать тот же pipeline внутри каждого отчёта.

Поэтому сейчас я начинаю выбор не со списка функций. Сначала рисую фактический контур данных и отмечаю владельца каждого участка. Кто отдаёт API? Кто отвечает за схему? Где выполняются преобразования? Кто перезапускает загрузку? Где хранится бизнес‑логика показателя? Что произойдёт, если источник изменит поле или перестанет отвечать?

После такой схемы часть вариантов обычно отпадает сама. И это полезнее, чем неделями сравнивать количество визуальных компонентов.

Ограничения лучше разделить на блокирующие и обсуждаемые

У организации почти всегда есть требования, которые звучат одинаково важными. Нужны безопасность, скорость, красивый интерфейс, низкая стоимость, self‑service, импортозамещение, мобильный доступ и интеграция со всем сразу. Если сложить их в одну таблицу и поставить оценки от одного до пяти, можно получить очень точный рейтинг, который ничего не решает.

Я бы сначала отделил блокирующие ограничения. Это условия, без которых продукт нельзя запустить в целевом контуре вообще.

Например, данные запрещено передавать во внешнее облако, а платформа работает только как SaaS. Или для входа обязателен существующий корпоративный IdP, но нужный способ SSO не поддерживается. Или серверная ОС и СУБД уже зафиксированы внутренними стандартами, а продукт с ними не работает. Или BI умеет подключаться к источнику, но только из сети, в которую ему не дадут маршрут.

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

После этого остаются обсуждаемые ограничения. Здесь уже можно сравнивать удобство разработки, скорость обучения, возможности RLS и OLS, управление версиями, embedding, расписания обновлений, экспорт, мобильный клиент и другие функции.

В моём проекте на решение сильно влияли уже существующая серверная инфраструктура и доступный организации программный контур. Я не раскрываю условия лицензирования и внутренние договорённости, но в реальном TCO они имели больший вес, чем разница между двумя похожими видами диаграмм.

На бумаге это кажется очевидным. На практике команды всё равно иногда выбирают платформу по демонстрации аналитика, а через несколько месяцев выясняют, что для production нужны отдельный сервер, новая СУБД, системный администратор, резервное копирование, мониторинг и ещё один процесс закупки.

On‑prem не означает, что вопрос с инфраструктурой решён

Для организаций с закрытым контуром слово on‑prem часто выглядит как готовый ответ. Поставим систему на свои серверы, данные останутся внутри, дальше можно заниматься аналитикой.

Но on‑prem — это не одна функция продукта. Это обязательство организации самостоятельно эксплуатировать ещё одну информационную систему.

Нужны ресурсы для application server и служебной БД, TLS‑сертификаты, DNS, резервное копирование, мониторинг, журналирование, обновления, тестовый контур и понятный способ восстановления. Если BI строит extracts или собственные in‑memory модели, нужно отдельно оценивать объём диска и RAM. Если работает в DirectQuery, нагрузка уйдёт в DWH или даже в операционную систему. В обоих вариантах платить придётся, просто разными ресурсами.

С Power BI это особенно хорошо видно. Power BI Desktop сам по себе является инструментом разработки, а не корпоративным порталом публикации. Для on‑prem‑сценария у Microsoft существует Power BI Report Server, который разворачивается внутри инфраструктуры и имеет собственную модель лицензирования и отдельную версию Desktop для подготовки совместимых отчётов. Это прямо указано в документации Power BI Report Server. То есть фраза «аналитики уже умеют Power BI» ещё не отвечает на вопрос, как отчёты будут публиковаться и обслуживаться в закрытом контуре.

С open‑source похожая история. Возможность скачать Docker image не превращает платформу в бесплатный production. Например, Metabase действительно предоставляет официальный образ и open‑source‑версию, но для нормальной эксплуатации сама документация предлагает вынести внутренние данные приложения из встроенной H2 в production‑ready СУБД, настроить сохранность данных и отдельно продумать обновление контейнеров. Это видно уже в инструкции по развёртыванию Metabase.

То есть self‑hosted снимает лицензионную зависимость только в одном месте. Взамен организация получает ответственность за DevOps, backup, observability, security patching и upgrade path. Для команды, в которой уже есть такие компетенции, это может быть отличным вариантом. Для организации, где сервер «как‑то работает» и никто не считается владельцем приложения, это прямой путь к системе, которую будут бояться обновлять.

В нашем кейсе серверная версия Visiology позволила быстро показать рабочий результат в существующем контуре. Официально платформа позиционируется как корпоративная BI‑система с подключением к PostgreSQL, Excel, CSV и другим источникам, а также с ролевой моделью, RLS/OLS и интеграцией с Active Directory. Эти возможности перечислены на сайте Visiology, но я бы всё равно не принимал их по описанию. Конкретные источники, роли и схему авторизации нужно проверять в своём PoC.

Маркетинговая формулировка «поддерживает PostgreSQL» не гарантирует, что система нормально отработает на вашей версии драйвера, через ваш сетевой маршрут, с вашим объёмом данных и вашей моделью прав.

BI должен совпасть не только с инфраструктурой, но и с командой

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

Если аналитики уверенно работают с DAX и Power Query, переход на платформу с другой моделью вычислений будет иметь стоимость, даже если лицензия дешевле. Если вся подготовка данных выполняется SQL‑разработчиками в DWH, мощный встроенный ETL может оказаться не преимуществом, а ещё одним местом, где начнут дублировать бизнес‑логику.

Self‑service тоже нужно понимать аккуратно. Сам по себе доступ пользователей к конструктору не создаёт self‑service BI. Без общих витрин, определений метрик, прав и правил публикации он создаёт десятки похожих отчётов, которые нельзя сопоставить.

В организации должен быть хотя бы минимальный operating model:

  • кто владеет BI‑платформой как сервисом;

  • кто администрирует пользователей и роли;

  • кто отвечает за источники и DQ;

  • кто подтверждает бизнес‑логику показателей;

  • кто публикует отчёты в production;

  • кто принимает инцидент, если утром не обновились данные;

  • кто решает, можно ли пользователю выгружать детализацию.

Эти роли могут выполнять три человека, а не семь разных отделов. Важно, чтобы ответственность была обозначена, а не растворена между аналитиками и IT.

В моём случае данные предоставляла смежная команда, а значительная часть подготовки и проверки оставалась на стороне аналитики. Любое изменение API поэтому было не просто техническим обновлением. Оно влияло на сроки отчётности, расчёты и возможность объяснить результат пользователю.

Если выбрать BI с расчётом на полностью автономный self‑service, но каждый новый источник всё равно требует отдельного согласования и доработки API, продуктовая модель не сойдётся. Аналитик сможет самостоятельно поменять цвет графика, но не сможет получить нужное поле.

Поэтому при выборе я смотрю не только на time‑to‑dashboard, но и на time‑to‑change. Сколько займёт добавление нового показателя, если для него нужно изменить источник, обновить витрину, пересобрать модель, проверить RLS и опубликовать новую версию? Чем больше команд участвует в этой цепочке, тем важнее прозрачный workflow и меньше пользы от рекордной скорости работы конструктора.

Права доступа нужно проверять на данных, а не на слайдах

В корпоративном BI почти всегда звучит требование RBAC или RLS. На презентации всё просто: руководитель видит всю организацию, подразделение только себя, аналитик получает детализацию, а остальные смотрят агрегаты.

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

Здесь недостаточно поставить галочку напротив RLS. Нужно проверить весь путь идентичности:

IdP -> учётная запись BI -> группа или роль -> правило доступа -> строки и столбцы витрины -> визуализация -> экспорт

Если система ограничивает просмотр страницы, но разрешает выгрузить детальные данные из underlying dataset, требование не выполнено. Если права назначаются вручную каждому пользователю, администрирование может сломаться уже на первой массовой смене структуры. Если роль зависит от справочника подразделений, нужно понять, кто и как обновляет этот справочник.

В PoC я бы обязательно включил несколько неидеальных сценариев: пользователь с двумя ролями, перевод между подразделениями, отсутствие сопоставления с записью в справочнике и попытку выгрузки. Happy path с одним администратором почти ничего не проверяет.

Отдельно нужен аудит. Организация должна понимать, кто открыл отчёт, кто изменил источник, кто опубликовал новую версию и почему показатель после обновления стал другим. Набор доступных audit events отличается между продуктами и редакциями, поэтому это тоже нужно подтверждать на конкретной поставке, а не по общему описанию бренда.

Производительность зависит от архитектуры больше, чем от логотипа BI

На демонстрации любая платформа работает на небольшом подготовленном dataset. В production появляются история за несколько лет, десятки пользователей, сложные фильтры, RLS и одновременное обновление нескольких моделей.

Если отчёт медленный, виноватым обычно назначают BI. Иногда справедливо. Но часто проблема начинается раньше: витрина имеет неправильную гранулярность, JOIN размножает строки, модель тянет лишние столбцы, фильтр не попадает в индекс, а мера каждый раз пересчитывает то, что можно было подготовить в ETL.

Поэтому сравнивать системы на одном CSV‑файле бессмысленно. В PoC должен участвовать реальный маршрут данных и объём, близкий к рабочему. Если production получает данные через API, именно API должен входить в тест. Если отчёт будет работать с DWH, нужно использовать фактическую СУБД и похожую модель. Если ожидается RLS, нагрузочный сценарий должен учитывать его.

Я бы проверял не абстрактную скорость открытия дашборда, а несколько отдельных задержек:

  • время поступления данных из источника;

  • длительность ETL или обновления dataset;

  • время первого открытия отчёта;

  • реакцию на фильтр и drill‑down;

  • поведение при одновременной работе пользователей;

  • восстановление после неуспешной загрузки.

Это разные проблемы. Ускорение визуализации не поможет, если API отдаёт данные несколько часов. Оптимизация ETL не исправит меру, которая плохо работает в конкретном filter context. А кеш может сделать отчёт быстрым и одновременно скрыть, что пользователь смотрит вчерашнее состояние.

В своих BI‑проектах я старался выносить общую бизнес‑логику в подготовленный слой и витрины, а в BI оставлять интерактивные расчёты, зависящие от выбранного контекста. Такой подход не привязан к конкретному продукту и упрощает миграцию. Если основные определения живут в SQL, ETL и документации, смена фронтенда остаётся сложной, но хотя бы не требует восстанавливать смысл каждого показателя по формулам внутри файлов отчёта.

PoC должен проверять плохой день, а не идеальную демонстрацию

Обычный PoC заканчивается, когда команда подключила источник и повторила несколько экранов будущего дашборда. Для оценки интерфейса этого достаточно. Для выбора организационной платформы — нет.

Я бы строил PoC вокруг одного сквозного кейса, но доводил его до эксплуатации. Не просто открыть график, а пройти весь цикл: получить данные разрешённым способом, подготовить витрину, настроить роли, опубликовать отчёт, обновить источник, изменить расчёт и выпустить новую версию.

После этого стоит специально испортить спокойную картину. Остановить загрузку. Изменить тестовое поле в источнике. Добавить неизвестное значение справочника. Проверить, что увидит пользователь при неполных данных. Восстановить отчёт из резервной копии. Обновить тестовый экземпляр платформы и убедиться, что артефакты совместимы.

Именно последнее я бы сейчас проверял гораздо внимательнее. В описываемом проекте после обновления BI‑платформы часть сделанного пришлось восстанавливать и перерабатывать. Это не отменило ценность прототипа, но показало, что у нас недостаточно рано появился ответ на вопросы про upgrade и rollback.

Теперь до production я бы хотел знать:

  • где хранится исходное определение отчёта;

  • можно ли версионировать его вне самой платформы;

  • как переносить объекты между dev, test и prod;

  • что входит в backup и как проверяется restore;

  • какая совместимость у отчётов между версиями;

  • можно ли откатить обновление;

  • кто принимает решение об upgrade;

  • сколько времени допустим простой BI.

Если поставщик или внутренняя команда не могут показать восстановление на тестовом контуре, надпись «резервное копирование настроено» меня уже не успокаивает.

Стоимость лицензии и TCO — не одно и то же

Ещё одна ловушка — сравнить прайсы и назвать более дешёвый продукт экономически выгодным. Лицензия действительно важна, особенно если модель оплаты зависит от количества viewers, authors, CPU cores или capacity. Но это только часть расходов.

Для себя я рассматриваю TCO примерно так:

TCO = лицензии + инфраструктура + внедрение + сопровождение + обучение + развитие + стоимость миграции

Это не бухгалтерская формула и не готовая методика расчёта. Скорее напоминание, какие расходы обычно теряются в начале.

Например, более дешёвая платформа может требовать отдельного администратора и большого объёма доработок. Более дорогая может совпасть с уже существующим стеком, IdP, процессом поддержки и компетенциями аналитиков. Open‑source может убрать лицензионный платёж, но добавить DevOps и ответственность за обновления. SaaS может снять часть инфраструктурной нагрузки, но не пройти требования по размещению данных.

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

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

Решение нужно фиксировать как архитектурное, а не вкусовое

После PoC я бы не оставлял выбор на уровне «команде больше понравилась система X». Через год состав команды изменится, ограничения забудутся, а организация будет продолжать жить с решением.

Для этого подходит короткий ADR, Architecture Decision Record. В нём не нужен отчёт на пятьдесят страниц. Достаточно зафиксировать контекст, блокирующие ограничения, рассмотренные варианты, выбранный deployment model, причины решения, принятые риски и условия пересмотра.

В такой записи по нашему кейсу обязательно появились бы ограничения доступа к источникам, роль API, существующая серверная инфраструктура, распределение ответственности между аналитиками и IT, требования к управленческим дашбордам и риск обновления платформы.

Особенно полезен раздел «что должно произойти, чтобы мы пересмотрели выбор». Например, BI выходит за пределы одного подразделения, резко растёт количество viewers, появляется требование внешнего embedding, меняется политика размещения данных или стоимость сопровождения становится выше допустимой.

Так выбор перестаёт быть вечной клятвой верности одному вендору. Это решение, принятое при известных условиях. Если условия изменились, его можно честно открыть и пересмотреть.

Здесь же нужен минимальный exit plan. Как выгрузить определения показателей? Где лежат SQL и ETL? Можно ли получить перечень источников, ролей и зависимостей? Какие отчёты критичны? Сколько их придётся собирать заново при миграции?

Я не считаю, что BI нужно выбирать с постоянной мыслью о скором отказе. Но если вся логика существует только внутри закрытого формата платформы, организация в итоге владеет картинками, а не собственной аналитикой.

Что получилось в моём случае

Рабочая версия управленческой аналитики была развёрнута на сервере, показана руководству и согласована для дальнейшего развития. Это был важный результат: BI перестал быть абстрактной инициативой и превратился в продукт, который можно обсуждать на реальных данных.

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

Поэтому я не могу назвать одну BI‑систему, которая будет лучшей для любой организации. Power BI, DataLens, Visiology, Metabase, Superset и другие инструменты могут хорошо решать свои задачи. Но сравнивать их нужно не вообще, а внутри конкретного operating model.

Для одной организации критичен on‑prem и интеграция с AD. Для другой важнее быстрый self‑service в облаке. Третьей нужен embedded BI внутри продукта. Четвёртая уже имеет сильную data engineering‑команду и готова сопровождать open‑source. Пятая выберет более ограниченный инструмент, потому что его можно реально закупить, развернуть и поддерживать.

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

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

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