Привет. Меня зовут Евгений, и я продуктовый менеджер направления отчетности и визуализации данных в компании «Форсайт».
Хотя корпоративная «Форсайт. Аналитической платформа» (далее просто Платформа) имеет в своем арсенале большое число различного инструментария, на мой взгляд, именно инструменты отчетности фактически являются ключевым блоком и «лицом» Платформы и BI-приложений, реализованных на ее основе. Ведь это первое, c чем сталкивается конечный пользователь и на что обращает внимание при работе: наличие необходимых функций, удобство построения пользовательского интерфейса, скорость работы — все это пользователи часто записывают именно на счет компонентов отчетности.
Хочу поделиться с вами нашей «вендорской» историей от том, как развивался инструментарий отчетности в составе нашей Платформы, какие интересные компоненты появились у нас относительно недавно, и над чем новым «Форсайт» работает прямо сейчас. Итак, начинаем!
Краткая предыстория
История платформы начинается с 1992 года. Старожилы могут еще помнить версии Платформы под MS-DOS, в которых уже появился конструктор отчетов со встроенным макроязыком. В начале 2000-ых актуальной версией Платформы был «Аналитический Комплекс версия 3.2» - последняя мажорная версия в линейке 3.х. В качестве инструментария разработки Платформы тогда использовался Borland Delphi.
Уже тогда существовало 2 ключевых инструмента отчетности, использующихся и по сей день. С одной стороны, к вашим услугам был удобный Excel-подобный инструмент отчетности «отчет» (иногда его называли «регламентный отчет»). Инструмент мог работать и с многомерными кубами (ROLAP-модель), и с реляционными запросами, поддерживал иерархические измерения, диаграммы и графики, картографию, ну и в целом позволял создавать, что называется «pixel-perfect» отчеты для просмотра, экспорта и печати. Поддерживался встроенный макроязык, обработка событий отчета. С другой стороны, был инструмент многомерного анализа «OLAP-навигатор», позволявший «покрутить» многомерные кубы в режиме ad hoc, прародитель современных self-service инструментов.
Следующим этапом развития стало полное обновление технологического стека в новой линейке Платформы, первая версия которой называлась «Аналитический Комплекс Прогноз 5» (позднее переименованная в Prognoz Platform). Версия «4» была пропущена по «восточной» традиции, поскольку компания готовилась работать на международных рынках, в том числе в Азии. Фактически, продукт был переписан «с нуля», стек разработки перешел с Delphi на «плюсы», архитектура начала трансформироваться из клиент-серверной в трехзвенную, с выделенным сервером приложений, для работы с СУБД отказались от устаревшей библиотеки BDE, начал внедрятся веб.
«Регламентный отчет» получил возможность работать с новым системным API благодаря появлению объектно-ориентированного встроенного языка Fore. Расширился набор событий отчета, благодаря которым существенно возросли возможности кастомизации. Были внедрены новые виды графиков и диаграмм, расширены возможности визуального оформления данных и работы с измерениями. Если раньше при реализации отчетов часто приходилось оформлять данные из срезов прямо на листе, а часто также дооформлять их с использованием макроязыка уже после вычисления листа, то теперь все необходимые настройки оформления можно было задать непосредственно у среза данных. Немаловажным событием для «пятерки» было и появление блока ведения нормативно-справочной информации (НСИ). Инструмент для быстрого анализа данных «OLAP-навигатор» трансформировался в экспресс-отчет, в нем добавились функции интерактивного анализа «80/20» и функции расширенной аналитики (анализ временных рядов, моделирование и прогнозирование). Также был представлен отдельный инструмент для создания дашбордов – «аналитические панели». Таким образом, внутри Платформы начала складываться своя экосистема инструментов отчетности, каждый из которых функционально дополнял друг друга.
По мере выхода новых версий Платформы (7.х, 8.х, 9.х) у пользователей появлялись все новые возможности для формирования отчетности, перечислить все из них вряд ли представляется возможным. Из ключевых функций стоит отметить существенное расширение опций размещения и оформления иерархических измерений, опции нумерации строк и граф, пользовательские, альтернативные и атрибутивные иерархии в измерениях, перевод процесса создания экспресс-отчетов и аналитических панелей полностью в веб.
В виде отдельного компонента была реализована надстройка над регламентным отчетом «Интерактивная форма ввода». Этот компонент позволяет создавать большие формы просм��тра и редактирования данных (включая «реестровые» формы ввода и «карточки»), позволяя объединять множество многомерных источников «под одной крышей». При этом компонент интегрируется со смежными компонентами – алгоритмами расчета и BPM, что позволило легко реализовывать расчеты «на лету» при вводе данных, внутриформенный и межформенный контроль, функции принятия/отклонения документа при реализации бизнес-процессов.
Начиная с линейки версий 10.х весь функционал, все шаги по разработке прикладных систем и весь инструментарий платформы стали доступны в веб-браузере.
FlyBI
Хотя к концу 2010-х годов Платформа уже обладала мощным арсеналом инструментов отчетности под любые задачи (регламетные отчеты, ad-hoc анализ, дашбординг, формы ввода с интегрированным BPM), все же было ощущение, что чего-то не хватает. Чего именно? Да, нам не хватало возможностей self-service, когда бы рядовой пользователь Excel мог бы провести весь цикл анализа и визуализации данных полностью самостоятельно, начиная от загрузки файлового источника до построения готового дашборда, буквально в несколько кликов.
Камнем преткновения здесь стал классический многомерный куб, ведь все инструменты отчетности, даже такие инструменты ad hoc анализа как «Экспресс-отчет» и инструмент дашбординга «Аналитическая панель» требовали на вход уже готовые преднастроенные кубы. Хотя создание многомерного куба не является такой уж сложной задачей для опытного пользователя Платформы, все же для рядового бизнес-пользователя это задача не совсем тривиальна и требует знаний основ хранилищ данных (справочники, фактовые таблицы и т.д.). К тому же, даже уже имея набор преднастроенных многомерных кубов, построенных на корпоративном хранилище данных, не было легкого способа «из коробки» обогатить эти данные пользовательскими. Не все пользователи понимали саму парадигму построения многомерных кубов, в частности отделение справочников (измерений) в отдельные, не зависимые от данных сущности. Пользователи хотели строить измерения непосредственно из «широких» плоских таблиц. Какой же выход? Да, нам нужен новый продукт!
Этим новым продуктом стал уже по-настоящему полноценный self-serviceинструмент для легкой бизнес-аналитики – FlyBI. Инструмент был выпущен в начале 2022 года в виде отдельного продукта, при этом «под капотом» у него по-прежнему использовалось ядро Платформы, адаптированное под новые нужды. Итак, что-же нового смог предложить новый продукт?
Модель данных
Инструмент «Модель данных» предназначен для моделирования данных с использованием «табличного» подхода, который в целом воспринимается пользователями как интуитивно более понятный по сравнению с «многомерным» (multidimensional) подходом. Он создаёт единую плоскую структуру, объединяя информацию из различных источников - как СУБД, так и файлы - по заданным правилам. Такая плоская структура содержит набор атрибутов, которые в дальнейшем могут рассматриваться как измерения или как факты (метрики).
Фактически, модель данных стала для инструментов отчетности Платформы новым типом источника – табличным (tabular) источником (наряду с ROLAP-многомерными кубами и MOLAP-данными в in-memory кэше).
Особенность инструмента - наличие удобного визуального конструктора, который упрощает построение связей между отдельными таблицами. Работает в двух режимах: прямого подключения к источникам данных и в режиме извлечения данных.
В режиме извлечения инструмент автоматически материализует данные модели в аналитической витрине, используя колоночную СУБД ClickHouse. Это позволяет эффективно учесть все взаимосвязи между данными, даже если они находятся в совершенно разных источниках (разные СУБД, файловые источники и т.п.). Также режимом экстракции можно воспользоваться, если ваши источники достаточно медленные, в этом случае кэширование их в колоночных структурах может существенно увеличить скорость обработки аналитических запросов. Пользователю достаточно сформировать модель, перевести ее в режим экстракции, и дальше он может даже выйти из системы и закрыть браузер – извлечение данных и материализация модели будет осуществляться в фоновом режиме.
Кроме того, «Модель данных» даёт возможность настраивать фильтрацию данных и создавать вычисляемые показатели, предусмотрено и регламентное обновление данных (перегрузка данных по расписанию).
Новый конструктор дашбордов
Исторически так сложилось, что для ad hoc анализа (быстро «покрутить» данные) и для создания дашбордов были созданы разные инструменты. Этими инструментами в Платформе изначально были соответственно «Экспресс-��тчеты» и «Аналитические панели». Думая над созданием инструмента следующего поколения, мы, безусловно, смотрели на решения конкурентов и анализировали обратную связь от наших заказчиков. Часто эти две задачи (ad hoc анализ и построение дашбордов) пересекались, комбинировались, а пользователям было сложно сориентироваться в выборе целевого инструмента. В итоге мы решили совместить функции создания дашбордов и проведения анализа «на лету» в едином инструменте - «Информационной панели».
По умолчанию дашборд открывается в режиме просмотра. Если пользователю необходимо поменять оформление визуализаторов, либо просто поисследовать данные – он всегда может перейти в режим редактирования слайда, в котором доступны все необходимые опции для манипуляции метриками и срезами, настройки оформления визуализаторов и рабочая область построения дашборда с интерактивной сеткой, позволяющая быстро формировать и модифицировать структуру визуализаций.
Интеграция новых решений в Платформу
Обкатав новые подходы к табличному моделированию данных и более гибкому конструированию дашбордов в рамках продукта FlyBI, мы задумались о включении новых инструментов в состав «большой» Платформы. Пользователям оказалось не очень удобно для решений задач визуализации и исследования данных постоянно переключаться между двумя разными продуктами. К тому же, существующие прикладные системы на базе Платформы уже содержали большое число преднастроенных источников данных (многомерных кубов), которые также хотелось задействовать в новом инструменте, не прибегая к тотальному переводу всего и вся в плоский табличный вид.
Результатом этой работы стало включение инструментов FlyBI в состав инструментария Платформы, в существенно переработанном виде. В чем же заключались эти доработки?
Если в FlyBI пользователь работал с единым проектом, состоявшим из одной модели данных и одной большой области размещения визуализаций (а-ля Miro), то внутри Платформы «Форсайт» FlyBI-проект разделился на 2 составляющие части: «Модель данных» и «Информационная панель». Эти два компонента стали отдельными объектами репозитория Платформы, с которыми стало возможно работать независимо. Это органичным образом легло на практику работы с Платформой – ведь пользователю для проведения анализа не всегда нужно было создавать источник данных «с нуля». Часто такие источники либо уже созданы и используются в других инструментах отчетности (например, в регламентных отчетах), либо существовала практика, когда готовые преднастроенные источники (кубы и модели данных) специально создаются более опытными пользователями для использования их уже широким кругом пользователей инструмента.
«Информационная панель» получила возможность одновременно работать как табличными источниками (моделями данных), так и с традиционными многомерными кубами, причем в одной панели таких источников теперь может быть несколько, в том числе разных типов.
Появились также возможности создания стандартных и пользовательских вычислимых показателей «после агрегации», был расширен набор визуализаторов, расширено API подключения внешних библиотек визуализации и многое другое.
Унификация инструментов отчетности
Развивая наши прекрасные инструменты отчетности, мы в определенный момент поняли, пользователь не всегда выбирает наиболее подходящий инструмент для решения своей задачи. Действительно, дашборд можно собрать и в «Аналитической панели», и в «Информационной панели», да в общем-то и в «Регламентном отчете» - тоже можно. В итоге мы приняли решение унифицировать, «укрупнить» нашу линейку инструментов и сосредоточиться на развитии трех ключевых компонентов отчетности:
Регламентный отчет – инструмент создания многостраничных «pixel-perfect» отчетов со сложным форматированием и высокой кастомизацией. Функционал надстройки «Интерактивные формы ввода» постепенно интегрируется в ядро «Регламентного отчета», благодаря чему теперь использовать «формы ввода» не нужно (алгоритмы расчета и интеграция модуля BPM теперь доступны в регламентном отчете «из коробки»).
Информационная панель - комбинированный инструмент создания дашбордов и проведения ad hoc анализа «на лету» в парадигме self-service, призвана заменить собой инструменты «Экспресс-отчет» и «Аналитическую панель» - более «тяжелые» инструменты предыдущего поколения, требующие для своей работы преднастроенных кубов, и не умеющие работать с табличными моделями данных.
Умные таблицы – абсолютно новое настольное кроссплатформенное (Windows / Linux) приложение для работы с табличными формами в режиме ad hoс анализа. Подробнее об этом инструменте вы сможете прочитать в отдельных статьях в нашем блоге.
Вот так сейчас выглядит «шортлист», тройка наших ключевых инструментов отчетности, именно их мы и рекомендуем, в зависимости от Ваших потребностей, использовать в новых проектах, реализуемых на Платформе.
Оптимизация производительности
В сообществе разработчиков нам частенько приходилось слышать мнение, дескать кубы Платформы «Форсайт» начинают работать медленно, если они содержат большое число измерений. Параллельно страдала и «репутация» блока отчетности. Давайте разберемся, почему это давно не так, и что мы сделали по последние 1-2 года для увеличения производительности наших инструментов для работы с кубами и моделями данных с приставкой «гипер-».
Действительно, в последние несколько лет, вследствие развития быстрых колоночных СУБД, ориентированных на OLAP-запросы, все чаще возникают кейсы, когда заказчик аккумулирует свои данные в единую плоскую витрину, содержащую крайне разряженный набор данных с числом измерений, исчисляющийся сотнями. При этом, заранее не известно, какие конкретно разрезы данных понадобятся пользователю в момент анализа. Тут нужно сказать, что в новых инструментах («Информационная панель» в связке с «Моделью данных») такой проблемы изначально не было, поскольку инструмент изначально ориентирован на поддержку большого числа измерений. Это означает, что если определенный разрез в текущий момент не нужен, то он просто остается одним из атрибутов модели, а вычислительные ресурсы на построение соответствующего измерения при этом не тратятся.
А что же с обычными кубами, которые также используются и в регламентных отчетах, и в информационных панелях, и в экспресс-отчетах с аналитическими панелями? Очень просто, в линейке версий 10.х Платформы в нашем Pivot-движке появилась новая опция размещения измерения «Фильтр в источнике» (помимо стандартных «В столбцах», «В строках» и «Фиксированные»). Давайте подробно разберем, как она работает.
Измерения, находящиеся в «Фильтре в источнике», если в них не сохранена никакая отметка, по умолчанию не отстраиваются, что экономит ресурсы сервера БД и сервера приложений. Кроме того, когда наш многомерный движок транслирует запрос в БД на извлечение данных (напомню, что измерения и данные в кубах запрашиваются в БД независимо), такие измерения также исключаются из запроса, что позволяет не увеличивать объем данных, протягиваемый на сервер приложений и не обременять сервер БД дополнительным полем группировки «GROUP BY» в запросах к данным. Если же пользователь захочет настроить отметку у измерения в «Фильтр в источнике» измерение будет отстроено в момент первого обращения к списку элементов. При этом запрос на извлечение данных в БД останется оптимизированным, в нем добавится лишь дополнительное условие в секции «WHERE» в соответствии с выставленной отметкой.
Таким образом, не только наши новые инструменты «Информационная панель» в связке с «Моделью данных» теперь позволяют работать с источниками данных с сотнями измерений, но и вообще все наши инструмент отчетности обладают такой возможностью, в том числе и при работе с классическими многомерными кубами. Например, в нашей практике есть реальные кейсы, когда в одном кубе содержатся более 600 измерений, при этом инструменты отчетности продолжают работать быстро.
Хочется сказать и об оптимизациях в «Модели данных» (это применимо к моделям данных в режиме «прямого» подключения). Потенциально она может содержать десятки и сотни таблиц – таблиц-фактов и таблиц-справочников, образую большую «звездочку» или «снежинку». При этом при выполнении adhocанализа пользователь может использовать в определенный момент времени атрибуты и факты только из одной-двух таблиц. Мы учитываем это, и в случае, если связи между таблицами не такие жесткие и не могут повлиять на консистентность выборки (например, все справочники связаны с главной таблицей фактов по условию LEFTOUTERJOIN), мы отсекаем «лишние» JOIN-ы в SQLзапросе данных модели. Таким образом, даже если в модели данных сотня таблиц, а пользователь в данный момент времени анализирует данные в разрезе измерения, которое содержится в только в одной, «центральной» таблице фактов – в БД может уйти запрос вообще без JOIN-ов. Конечно, это оптимизация сказывается на производительности ��звлечения данных самым кардинальным образом.
А что с ценой? Лицензионная политика
Здесь нас ждут хорошие новости. Наши ключевые инструменты для легкой бизнес-аналитики в парадигме self-service: «Модель данных» и «Информационная панель» доступны уже для самого базового пользователя Платформы 10.х (бизнес-пользователя), дополнительное лицензирование не требуется.
Забегая вперед
Хочется сказать несколько слов о том, над чем команды управления продуктом и разработки блока отчетности работает прямо сейчас.
Наши основные усилия направлены на развитие инструмента «Информационная панель» - основного «легкого» инструмента ad hoc аналитики и дашбординга. Постепенно переносим в него недостающие функции из «экспресс-отчетов» и «аналитических панелей», развиваем возможности кастомизации, в том числе с использованием встроенного языка Fore, работаем над новым «табличным» визуализатором для вывода детальных данных и расширением API внешних визуализаторов.
Завершаем интеграцию всех расширенных функций «Интерактивных форм ввода» непосредственно в инструмент регламентного отчета, что позволит отказаться от использования дополнительной «надстройки» при создании отчетов с подключенными алгоритмами и BPM.
В части развития инструмента «Модель данных» работаем над представлением модели в многомерном виде, что позволит подключать «плоские» источники в регламентные отчеты и умные таблицы.
Продолжаем развивать нашу технологию MOLAP и in-memory кэширования, работаем над технологиями «ассоциативного» анализа и ИИ.
Подводя итог нашему повествованию, хочется сказать о том, что мы в «Форсайт» продолжаем развивать функционал подсистемы отчетности, стараясь сохранять разумный баланс между наследием прошлых версий и инновациями. Гибкость, производительность и доступность инструментов – наши приоритеты. Мы стремимся, чтобы Платформа и BI-решения, создаваемые на ее основе, отвечали запросам как опытных аналитиков и разработчиков, так и рядовых бизнес-пользователей. Красивых и функциональных Вам отчетов! 😊