В этой краткой заметке хочу поделиться еще одним вариантом использования R в повседневных бизнес задачах. Этот «use-case» актуален почти для всех компаний, вне зависимости от их размера. Речь идет о подготовке различных оперативных отчетов и аналитических срезов.
Как это обычно бывает
В зависимости от масштаба компании и ранее сделанных инвестиций в ИТ в задаче подготовки отчетов встречаются следующие варианты (комбинации вариантов):
- Есть корпоративная система отчетности (Oracle, SAP BI, ...) на базе которой должны создаваться все необходимые отчеты. Аналитики вечно заняты, к ним надо записываться на прием, сроки реализации уходят в «+бесконечность», работа с комбинированными и неструктурированными данными ставит всех в ступор, оперативная корректировка отчетов почти невозможна, набор представлений определяется существующим продуктом, а не конкретными бизнес-потребностями.
- Различные open-source решения (например, Jasper), которые поддерживаются по остаточному принципу. Желающие могут взять и наваять отчетик, только таких желающих не находится.
- Всемогущий Excel. Распространяться про печальные стороны этого подхода не стоит.
- Языки программирования или что-то еще....
В принципе, с простыми отчетами по небольшим, структурированным и чистым данным Excel вполне неплохо справляется, но количество затраченных усилий всегда несоразмерно получаемому результату. Шаг влево-вправо, появление дополнительного крохотного требования («а вот такой разрез покажите», «а наложите график», «а как это соотносится с ...») требует массы дополнительных усилий. Переход от Excel к TableauQlikView (по сути это не аналитические системы, а улучшенный визуализатор) улучшает возможности по простой обработке данных и динамической визуализации. Но они стоят также немалых денег и требуют серьезного изучения для реализации требований, недоступных простым нажатием на кнопку.
Дополнительно неплохо задаться вопросом, а каков размер данных при подготовке такого аналитического отчета? В 90% случаев все ограничивается крохотным объемом данных (не более нескольких миллионов «excel» строк).
Альтернативное решение — делаем отчеты с применением R
В зависимости от гибкости восприятия потребителей отчетов и сложности требуемой динамической манипуляции с конечным представлением данных возможны 3 различных подхода.
- Передаем R скрипт для запуска в консоли R-Studio, осуществляющий необходимый процессинг и выдачу результов в консольфайлы.
- Передаем R Notebook/R Markdown скрипт для запуска в консоли R-Studio, осуществляющий необходимый процессинг и выдачу результов в виде повествовательной истории в консоль/html/pdf и пр.
- Передаем R Shiny скрипт для запуска в консоли R-Studio, осуществляющий необходимый процессинг и выдачу результов в виде локального web-портала с интерактивом и динамикой. Если бизнес-пользователь вообще ничего не хочет делать (запустить программу и нажать кнопку), то можно самостоятельно публиковать на внутреннем Shiny портале.
При передаче R скрипта конечному потребителю, будь то R Markdown или Shiny portal достаточно передать 1 (один!) скрипт-файл. В случае сложной аналитики можно оформить свой пакет, положить его на github и вкючить в скрипт автоматическую проверку и обновление локального пакета в случае необходимости. для этих целей можно использовать, например, пакеты pacman
или githuninstall
. При этом в рамках этого скрипта может осуществляться полный цикл работы с данными:
- подключение к источникам данных;
- сбор данных;
- очистка данных с отработкой исключений;
- аналитические расчеты любой степени сложности;
- визуализация;
- обеспечение интерактива по манипуляции с данными;
- вывод в различных форматах;
- автоматическая публикация во внешних системах;
- ...
В силу компактности скрипта и, практически неограниченных возможностей по кастомизации визуализации, совершенно легко и быстро актуализировать скрипты под изменяющиеся окружение и запросы бизнес-пользователей.
Затрагивать вопросы безопасности здесь совершенно нет смысла. Во-первых, не всегда они будут возникать, например, при подготовке отчетованалитики на основе выгрузокпредставлений доступных пользователю и так. Во-вторых, абстрактные вопросы либо имеют абстрактные ответы, либо вообще не имеют ответа. А частные задачи решаются проще и быстрее.
Практика показала, что применение предложенного подхода позволяет аналитикам, отвечающим за подготовку подобной отчетности, существенно облегчить свою жизнь и радикально повысить эффективность своего труда.
Выбор за вами.
Автор: i_shutov