Системы генерации отчетов
Введение
Это обзор систем построения отчетов. Какие бывают, зачем они нужны и куда все это движется. В рассмотренных далее системах речь пойдет только об отчетах. А отчет — это выборка данных из источника по заданным критериям. Другой функционал данных систем не будет рассматриваться. Со всеми системами отчетности о которых пойдет речь, я либо работал напрямую, либо они использовались в проектах, в которых я участвовал. По этой публикации я так же снял видео, которое можно посмотреть тут.
Обзоры систем генерации отчетов
Ниже представлен список отчетов, с которыми я работал. Возможно что-то из этого списка не очень популярное, а что-то, наоборот. Я попытался найти небольшие и наиболее правдоподобные обзорные видео. Как оказалось, это не так просто, далеко не у всех продуктов они есть.
Классификация
Опираясь на свой опыт работы с системами генерации отчетов, я разделил их на 2 группы.
Системы типа »Все в одной коробке». Они полностью содержат в себе весь функционал и имеют очень богатую и развитую систему для визуального анализа данных. Работать с простыми системами не трудно, но сложные системы требуют определенных усилий. Настроить «под себя» эти системы не просто, скорее придется подстраиваться под них. Это такие системы как: Cognos, Power BI, Tableau, Sap BO, QlikView.
Все в одной коробке
Системы типа »Инструмент». Это набор библиотек, технологий, редакторов с помощью которых можно как создавать отчеты, так и анализировать данные. Эти системы требуют определенных знаний в программировании, а также умении писать программный код. У них невысокая стоимость покупки, либо они полностью бесплатны. Их не только можно настроить «под себя», но и порой нужно настроить. Так же они предоставляют больше возможностей для анализа данных, но сильно зависят от мастерства того, кто с ними работает. Это такие системы как: DevExpress и R Markdown, R Shiny.
Инструмент
Основные компоненты систем «Все в одной коробке»
Администратор отчетов. Компонента, в которой создаются отчеты.
Администратор отчетов
Пользователь отчетов. Компонента, в которой пользователь выгружает сформированный им отчет.
Пользователь отчетов
Дополнительные возможности систем «Все в одной коробке»
Облачное хранение — современные системы могут брать данные из облачных хранилищ, либо сами располагаться в облаке.
Встроенное хранилище данных. С оптимизацией производительности, как аппаратной, так и программной — многие подобные системы хранят данные для отчетов на своей стороне. Это делается для увеличения производительности.
Отображение изменений в отчете в режиме реального времени — как только данные в источнике меняются отчет тут же это показывает.
Интерактивные отчеты — пользователь может взаимодействовать с отчетом. Менять детализацию, добавлять или удалять компоненты отчета, переходить в подотчеты и т.д. и т.п.
Отчеты типа «Приборная панель» (dashboard) — сочетание в одном отчете нескольких компонентов, типа таблица, график, шкала измерений, диаграмма.
Элементы мультипликации в отчете — отчеты могут как бы рисоваться на лету, графики плавно строится, диаграммы меняться.
Поддержка мобильных устройств — практически все подобные системы могут строить отчеты, с которыми можно работать с мобильных устройств.
Помимо перечисленных выше, есть и другие особенности, индивидуальные для каждой конкретной системы. Я попытался выделить то, что присуще большинству таких систем.
Тенденции систем «Все в одной коробке»
Происходит движение от простой выгрузки данных к инструменту для визуальной работы с этими данными. Все больше и больше интерактивности, больше возможностей для анализа данных.
Функционал администратора все больше и больше отдается пользователю. Для более глубоко анализа данных необходимо погружаться в технические детали хранения данных.
Система построения отчетности становится все более и более автономной. Она может включать в себя загрузку и преобразование данных (ETL), иметь свою систему хранения данных (DWH) и строить отчеты. Получается нечто похожее на мини хранилище.
Недостатки систем «Все в одной коробке»
Сложность систем возрастает и все идет к тому, что становится нужен отдельный специалист, который умеет работать с ними.
Роль администратора и пользователя совмещается. В итоге нужен специалист, который разбирается не только в предметной области, но и в технической.
Совмещение в себе систем: загрузки и трансформации (ETL), хранения (DWH), представления данных (Reporting). Это ведет снижению уровня гибкости системы. Система становится замкнутой и внедрение в нее различных изменений становится затруднительным.
Системы отчетности типа DevExpress
Описание: Это системы в стиле «сделай сам». Они предоставляют набор компонентов и библиотек, на основе которых можно создать свою систему отчетности.
Преимущества: Высокая гибкость системы. У вас есть набор библиотек и компонент, и вы можете сами настраивать внешний вид, определять доступный функционал, способы взаимодействия с различными источниками данных, управлять быстродействием.
Недостатки: Главный недостаток этой системы — это необходимость наличия программиста Web приложений, либо консольных приложений. Другой недостаток в трудоемкости реализации такой системы отчетности. От мастерства программиста зависит удобство и возможности такой системы.
Такие системы скорее дополняют коробочные решения, описанные ранее. В ситуации, когда система отчетности не может по различным причинам обеспечить требуемый функционал можно реализовать этот недостающий функционал с помощью данного инструмента.
Системы отчетности типа R, R Markdown, Shiny
Описание: Язык R — это язык программирования, одним из предназначений которого является анализ данных. К нему существует надстройка R Markdown. R Markdown это специальная разметка, которую можно встраивать прямо в код приложения. При запуске такого приложения получается отчет в формате HTML, word, pdf и т.п. (excel на данный момент не поддерживается). Для построения интерактивных отчетов в R также используется специальная надстройка — «Shiny».
Преимущества: Максимальный уровень гибкости. Аналитик сам пишет программу и получает именно то, что ему нужно. В случае с R Markdown у вас просто есть некий скрипт на языке R, которому надо просто передать параметры и запустить. В случае использования Shiny потребуется web сервер. Разработка отчетов для Shiny выглядит как напсиание программного кода на языке R.
Недостатки: Во-первых, нужен программист на языке R и надо понимать, что качество отчетов будет зависеть от его мастерства. Во-вторых, необходимость создания окружения, в котором это все должно работать. Отчеты на R Markdown это файлы, которые нужно запустить с определенными параметрами. Доступ к этим файлам и удобство работы с ними — это отдельная задача.
Личный опыт внедрения систем отчетности и попытка что-то улучшить
После внедрения системы отчетности было замечено, что бизнес аналитики довольно часто прибегали к выгрузкам данных в обход системы. Они приходили к техническим специалистам и просили их сделать выгрузку данных в csv файл. Далее они загружали их в Excel и уже в нем занимались непосредственно анализом данных. Пообщавшись с пользователями, стало понятно, что системы отчетности не полностью удовлетворяют все их потребности. Чтобы «закрыть пробелы» были сформированы дополнительные требования к таким системам.
Что хотел пользователь:
Возможность выгружать данные непосредственно в шаблон Excel документа. При этом в Excel форме указывалось в какие колонки грузить данные, а в остальных колонках могут находиться формулы, графики или сводные таблицы источником для которых были бы загружаемые на форму данные. Шаблон в идеале может быть любой, не только Excel, но и, например, word, pdf и т.п.
Возможность узнать сколько в итоге будет строк выгружено из источника данных, перед тем как начать выгрузку. Благодаря этой возможности бизнес-аналитик может «оценить свои силы» и скорректировать запрос.
Простая выгрузка данных, без применения шаблонов. Пользователь может запросить данные как есть и получить их в виде таблицы в любом удобном ему формате, таком как html, excel, csv, pdf, word и т.п…
Хранение сформированных отчетов на сервере. Это дает возможность загрузить предыдущие варианты отчета и сравнить его с текущим, либо возможность использовать один раз сформированный отчет несколько раз, без повторных его генераций.
Выгрузка большого объема данных. От 1 миллиона строк и выше, с возможностью работы с таким объемом. В Excel, например, можно дробить данные постранично. Возможность выгрузки больших объемов не всегда разумна, но, чтобы это понять надо сначала попробовать.
Что хотел пользователь
Это мой опыт, и я думаю, что в каждом конкретном случае пользователю будет не хватать чего-то другого. Но, с другой стороны, это даёт возможность заняться творчеством и попробовать сделать что-то своими руками.
Прототип:
Часть требований пользователя была реализована в прототипе в 2016 году. Видео с ним можно увидеть тут: https://youtu.be/_csGSw-xyzQ. Можно найти другие пути решения проблем пользователя, главное понимать, что с чем-то подобным вы скорее всего тоже столкнетесь в процессе внедрения систем отчетности. Так как время идет и системы становятся лучше, то я допускаю, что часть из этих «хотелок», может быть, уже решена в последних версиях коробочных продуктов.
Современные тенденции
На данный момент наблюдается усиление подхода R, R Markdown и Shiny. Что-то похожее есть на языке Python — это Pandas и Streamlit. Коробочные продукты, в свою очередь, продолжают развиваться в сторону усиления визуализации данных.
Вывод
На мой взгляд, для достижения максимальной эффективности работы с данными необходимо использовать как системы типа «Все в одной коробке» так и системы типа «Инструмент». Коробочные решения кроме своей основной функции — генерации отчетов, так же помогают визуализировать данные в хранилище. Благодаря такой визуализации можно оперативно выявить возникающие проблемы и ошибки хранения данных, а также контролировать целостность данных. Они значительно упрощают контроль над достоверностью данных. Отчеты реального времени, в свою очередь, позволяют контролировать как технические процессы загрузки данных, так и предметные, такие как наблюдение за выполнением различных показателей и т.п. Системы типа «Инструмент» лучше подходят для сложного анализа данных, прогнозирования, выполнения математических преобразований над данными, подключения нестандартных источников данных, интеграции в различные системы. При работе с данными не стоит отказываться и от таких инструментов как MS Excel, с его помощью можно так же успешно заниматься анализом и прогнозированием. Отсюда имеет смысл дать возможность пользователям делать простые выгрузки данных для дальнейшего анализа.
Проблемы, с которыми я сталкивался
Проблема: В системе более 100 отчетов и сложно понять какие из них нужны, какие нет.
Возможное решение: Детальное описание каждого отчета, счетчик запуска отчета с датой, чтобы понять, пользуются им или нет. Попытка уменьшить количество отчетов с помощью OLAP кубов или сводных таблиц, которые могут объединить сразу несколько отчетов.
Проблема: Бизнес логика практически вся в хранимых процедурах в хранилище. Сложно поддерживать и понимать, как это работает и почему иногда не работает.
Возможное решение: Что-то из бизнес логики хранить в отчетах, подробно документировать, выносить часть логики в Excel или использовать язык R и ему подобные. Разделять логику хранения загрузки и трансформации данных в хранилище от бизнес-логики.
Проблема: Отчеты создаются только на языке R. В итоге скорость создания отчетов очень низкая, часто появляются ошибки.
Возможное решение: По возможности не стоит увлекаться чистым программированием. Иногда коробочные решения позволяют создать отчет гораздо быстрее, чем на языке R и требуют менее квалифицированных специалистов. Так же, если есть бизнес-аналитики, работающие в Excel, то можно что-то делать в Excel или в подобных ему системах.
Заключение
Этим обзором я хотел показать достоинства и недостатки различных систем отчетности. Рассказать о проблемах, которые они могут решить. Поделиться опытом работы с ними. Надеюсь, что эта информация будет для вас полезной и интересной.