SSRS 2008 R2: дашборд KPI для руководства без пяти Excel-файлов по почте
Собрали KPI-дашборд для руководства клиента на SSRS 2008 R2 - спарклайны по выручке вместо пяти Excel-диаграмм, которые раньше рассылали письмами каждый понедельник.
SQL Server Reporting Services 2008 R2 получил Report Builder 3.0 с поддержкой спарклайнов и data bars прямо в ячейках таблиц
Каждый понедельник финансовый директор клиента получал на почту пять Excel-файлов: выручка по направлениям, маржа, динамика по неделям, сравнение с планом, что-то ещё. Каждый файл - одна диаграмма. Каждая диаграмма - руками, по данным из ERP, которые бухгалтер вытягивал запросом в Management Studio, копировал в Excel, строил chart, сохранял, прикладывал к письму. Около двух часов работы каждую пятницу вечером.
Нас попросили это автоматизировать. Мы посмотрели на Report Builder 3.0, который вышел с SSRS 2008 R2, и решили попробовать спарклайны.
Зачем вообще SSRS, а не просто Excel
Честный ответ: Excel тоже мог бы решить задачу при наличии нормального подключения к базе и кривой обновления. Но здесь сложилось несколько вещей.
Во-первых, у клиента уже стоял SQL Server 2008 R2 с SSRS - лицензия была, сервис работал, просто никто им не пользовался всерьёз. Не платить за дополнительный инструмент - это аргумент.
Во-вторых, нужна была веб-доставка: директор хотел открывать дашборд в браузере, а не ждать письма и открывать файл. SSRS с Report Manager это закрывает из коробки.
В-третьих, Report Builder 3.0 добавил спарклайны - миниатюрные линейные графики прямо в ячейках табличных строк. До этого нарисовать что-то подобное в SSRS было можно, но мучительно. Теперь это делается за несколько кликов в дизайнере.
Что такое спарклайн в контексте SSRS
Технически это Chart-контрол, встроенный в ячейку Tablix-а. Данные для него берутся из того же датасета или дочернего, привязанного к строке. На одну строку - одна миниграфика с историей за N недель.
В нашем случае таблица выглядела примерно так: строка на каждое направление бизнеса, столбцы - текущая выручка, план, отклонение в процентах и спарклайн с динамикой за последние 12 недель. Вместо пяти отдельных диаграмм - одна таблица, которую директор мог читать как привычный отчёт, но с мгновенным визуальным контекстом по каждой строке.
Data bars - похожий механизм, только рисует горизонтальную полосу пропорционально значению. Мы использовали их для столбца «выполнение плана»: сразу видно, у кого полоска до конца, у кого - нет.
Как строили
Работа делилась на две части: данные и визуализация.
Данные. У клиента было хранилище, которое мы поднимали раньше. Там уже лежала таблица фактов по продажам и измерения. Написали несколько хранимых процедур - по одной на каждый датасет в отчёте. Параметр - дата среза, SSRS подставляет автоматически при открытии. Для спарклайнов понадобился отдельный датасет с историей по неделям в разрезе направлений - по сути тот же факт, только сгруппированный по другому зерну.
Отчёт. Report Builder 3.0 стал ощутимо лучше второй версии в части работы с Tablix и вложенными контролами. Спарклайн добавляется перетаскиванием в ячейку, потом привязываешь к нужному полю - и работает. Потратили немного времени на то, чтобы синхронизировать оси Y между строками: по умолчанию каждый спарклайн имеет свою шкалу, и визуально один «ровный» и один «скачущий» ряд выглядят одинаково. Для KPI-дашборда это вводило бы в заблуждение. Фиксируется в свойствах через общую ось - не очевидно, но находится.
Параметры Report Builder позволяют задать, когда отчёт кешируется на сервере. Поставили обновление раз в час в рабочее время - данные в хранилище обновляются ночью, так что свежее в любом случае не будет, но кеш снижает нагрузку на базу при нескольких пользователях.
Что получилось
Один HTML-отчёт с тремя параметрами (дата, уровень детализации, единица измерения). Все пять Excel-файлов заменила одна страница. Бухгалтер освободил два часа пятницы. Директор перестал ждать письма - просто открывает Report Manager утром в понедельник.
Мелкий неприятный момент: IE8 рендерил спарклайны немного иначе, чем Firefox - чуть другие пропорции, иногда пропадала подпись. В итоге директор просто переключился на Firefox, проблема закрылась. Не то чтобы изящное решение, но клиент не возражал.
Отдельная история - экспорт в Excel. SSRS умеет выгружать отчёт в .xls, но спарклайны при этом превращаются в статичные картинки, а не живые диаграммы Excel. Директора это не смутило, но если кто-то рассчитывает получить «живой» Excel из SSRS - ожидания стоит скорректировать заранее.
В целом: SSRS 2008 R2 с Report Builder 3.0 вполне дееспособен для корпоративной отчётности, если данные уже лежат в SQL Server. Для более сложной аналитики или самостоятельного построения отчётов аналитиком - вопрос открытый, но для фиксированного дашборда по KPI инструмент справился без вопросов.
Подробнее о том, как мы работаем с хранилищами данных и бизнес-аналитикой.