Прошло достаточно времени с упоминания в предыдущей публикации об использовании RStudio Connect в боевых условиях для того, чтобы поделиться результатами. Краткое резюме — «дайте два!». И подумайте про оптимизацию отдела «аналитиков». Ниже приведены подробности.


В качестве дополнительного чтения рекомендую взглянуть детальную публикацию «Data at GDS (Government Digital Service). Reproducible Analytical Pipeline» в блоге аналитической службы гос.органов UK по аналогичной теме.



Что такое RStudio Connect


RStudio Connectнемного платный продукт для публикации аналитической информации как внутри компании, так и для всего остального мира. Аналитическая обработка и подготовка отчетных представлений производится средствами R. Сервер работает on-premise на *nix платформе, что автоматически устраняет 3 повода для головной боли: нет облаков, нет лицензирования Win Server (а еще вдруг и SQL) и отстутствие проблем с Unicode.


Я сознательно написал «аналитическая информация», потому что представления, генерируемые R+RStudio Connect очень далеки от классических отчетов типа Jasper\BO… Основные практически полезные публикуемые результатаnы (отчеты) можно отнести к трем основным классам:


  • Интерактивные html отчеты;
  • Статичные pdf отчеты;
  • Shiny приложения.

image


Отчеты


html и pdf документы формируются в парадигме literate programming из R Markdown исходных файлов, содержащих текстовое описание и включения кода для динамического расчета и визуализации результатов этих расчетов в виде таблиц, рисунков и интерактивных js виджетов. В последнем релизе RStudio Connect отчеты могут быть параметризированы (пока не было необходимости проверять), что добавляет дополнительной гибкости.
image


Преимущества такого подхода очевидны:


  • Различные формы представления получаются из одного исходного .Rmd файла, что устраняет многократное дублирование исходных и промежуточных данных, расчетов и представлений;
  • полностью исключается ручной copy-paste и связанные с ним трудозатраты и недостоверность результатов;
  • результаты воспроизводимы и могут исполняться по требованию\расписанию;
  • динамические js-элементы повзоляеют в компактном виде предоставлять детализированную информацию. Примеры доступных в R htmlwidgets можно поглядеть здесь.

Поскольку RStudio Connect является enterprise-ориентированным, то в базе есть все обязательные функции:


  • Авторизация пользователей с возможностью привязки к LDAP;
  • Гибкая система прав;
  • Генерация отчетов по расписанию;
  • E-mail нотификации;
  • Средства самодиагностики и мониторинга;
  • Управление нагрузкой;
  • Логирование действий;
  • Создание локальных репозиториев R пакетов для каждого приложения;
  • Публикация документов из среды RStudio IDE в «одно нажатие»;
  • Поддержка версионности опубликованных документов;
  • и пр.

Каждому опубликованному документу могут быть разные права доступа. Начиная от «только автор» и заканчивая «просмотр всем кто знает ссылку».
image


А вот почему термин «отчеты» использован в кавычках. Интересный вытекающий вывод из связки функций запуск по расписанию + literate programming + e-mail уведомления следующий:
по сути, мы можем по расписанию выполнять любые R скрипты, встроенные исполняемыми блоками в .Rmd файлы. Эти скрипты могут выполнять абсолютно любые действия, например, брать данные из файлов\БД, заниматься web scrapping-ом\ вести расчеты, публиковать данные во внешние системы\ запускать внешние скрипты и пр., при этом ведется подробный «story-лог» в виде комбинации текста, таблиц, графиков. И этот «story-лог» по завершению работы может быть автоматически отправлен заинтересованным лицам. Т.е. система в популярном ныне жанре «комиксов» может докладывать о результатах работы весьма сложных процессов!


Фактически, идеальный инструмент для практической реализации концепции операционой аналитики.


image


Прикладываю сам PDF файл. Бусские буквы находятся в Adobe Reader и в таблицах, созданных вставкой R-кода, и в рисунках и в тексте.


С технической точки зрения pdf версия готовится посредством цепочки R markdown > LaTeX > PDF. Так что на выходе получается полиграфически качественный документ с огромными возможностями по кастомизации.


Приложения и дашборды


Тут все просто. Встроенный Shiny Server c enterprise функциями. Все, что было написано про Shiny ранее доступно в полном объеме.


А публикация приложений в «одно нажатие» позволяет легко и просто делать всевозможные дашборды, интерактивные приложения, включая онлайн аналитику на сервере и кастомные представления для любого сотрудника под его текущие потребности.


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


image


Более того, интеграция с корпоративным LDAP легко позволяет управлять зоной видимости этих приложений.


Несмотря на то, что продукт вышел недавно, он по своей сути является enterprise оберткой для многократно апробированных кубиков Shiny + RMarkdown + R + LaTeX.


В промышленной эксплуатации он показал себя превосходно. Более того, в воздухе повис вопрос «зачем нам теперь нужны прочие n+1 установленные 'системы отчетности'» на который убедительных ответов пока не найдено.


P.S.


  1. Все приводимые скриншоты взяты с тестового стенда и принципиально не содержат реальных бизнес-показателей.
  2. Публикация носит информационный, а не обучающий характер. Как показывает практика, не хватает времени разобраться в сути массы интересных и полезных вещей. RStudio Connect заслуживает, чтобы с ним познакомиться, хотя бы кратко. Если правильно готовить, то можно очень сильно сократить текущие расходы компании на аналитический блок.

Предыдущий пост: «'Пятый элемент' в экосистеме R. WYSIWYG интерфейс для аналитиков»

Поделиться с друзьями
-->

Комментарии (8)


  1. lash05
    11.04.2017 18:02
    +1

    Технический вопрос про ПДФ — построенные графики передаются как векторное изображение, или растровое?


    1. i_shutov
      11.04.2017 18:14
      +1

      я под капот заглядывал, судя по настроенной по умолчанию схеме генерации, создаются растровые pdf (изнутри он не выглядит как набор векторных инструкций), которые потом уходят в pdfLaTeX\xeLaTeX.


      Но это штатный процесс для полиграфии. Про .eps исходники для LaTeX забыли как про страшный сон еще лет 6 назад.


      В R можно принудительно делать svg, но это актуально для html. Будет ли это лучше — даже сразу и не сказать. порою png с проведенным антиалайзингом гораздо лучше выглядит.


      1. lash05
        11.04.2017 20:19

        В своё время выводил график в пдф встроенной R-функцией — получилось действительно векторно, но с кириллицей пришлось повозиться. «Сюрпризы» с кириллицей, кстати, получаются и при скрейпинге с передачей в шайни — рендерную таблицу выводит корректно, но контекстно искать по русским буквам отказывается…


        1. atikhonov
          11.04.2017 21:30

          Таблица какая — DataTable или обычная?
          кодировки помогают обычно,
          но есть еще один нюанс с кириллицей, как рендерить — традиционно (шайни) или flexdashboard (rmd)


          1. lash05
            12.04.2017 05:37

            Таблица renderDataTable, кодировку (утф-8) подбирали при считывании хтмл. До рмд пока не дошли, работаем в шайни…


        1. i_shutov
          12.04.2017 10:01

          Приложил в тексте статьи ссылку на сгенерированный PDF файл. Все ищется, во всех элементах.


          LaTeX-ом мне приходилось активно пользоваться очень и очень много. Не одна сотня книг была собрана.
          При переходе на pdfLaTeX использовал pscyr+cmap и забыл про проблемы поиска русских букв даже с Win+T2A.


          В этой задаче перфекционизмом пока не занимался, ситуация не та. Все настолько динамично, что подход бизнеса в стиле "good enough" меня полностью устраивает. Но знаю, что отъюстировать всегда можно будет.


          Более того, здесь были иного рода сложности. Поскольку публикация осуществляется в 2 шага, сначала сборка на локальной машине (считаем, превалидация), а потом деплоймент для сборки уже на сервере, то подход к использованию LaTeX пришлось немного пересмотреть. Локальная машина — Win + MikTeX, сервер — CentOS+LiveTeX. pscyr, успешно работающий под Win, не входит в CTAN, а руками возиться не хотелось. Поэтому концепт pdfLaTeX отодвинули, перешли на XeLaTeX (а он поддерживает fontinst, т.е. можно использовать системные шрифты в верстке), благо по пакетам никаких конфликтов не возникло, а полиграфические нюансы для этой задачи, если выплывут, некритичны.


          Опять же, желания глубоко погружаться не было, поэтому пошли по простому пути. Использовали шрифт Linux Libertine, который выглядит красиво (приложенный pdf файл сверстан в нем), бесплатен, есть под все операционные системы, поддерживается LaTeX.


  1. AristarXXXX
    12.04.2017 15:00

    Спасибо за статью!
    При всех плюсах системы (а она, действительно очень крута) лично мне будет психологически сложно переходить на платную версию Shiny + R + Всё-остальное. Бесплатной версии можно простить некие огрехи (они есть), а вот к платному enterprise решению совсем другие требования. Если руководство недальновидное — будет тяжело обосновать экономическую эффективность, особенно когда подавляющее большинство коллег апогеем аналитики считает функцию ВПР (вертикальный просмотр) в Excel. :)
    А так — да. Пара-тройка толковых программистов-аналитиков-датамайнеров-дизайнеров и в компании вопрос какой-либо отчётности закрыт навсегда с этой системой :)


    1. i_shutov
      13.04.2017 09:51

      Хорошо, когда есть выбор.
      Не псевдовыбор между ВАЗ 2106 и 2107, а действительно значимый выбор между российскими, корейскими и немецкими автомобилями.


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


      Поэтому оставаясь в рамках платформы R можно выбрать из двух вариантов, отличающихся лишь уровнем комфорта, но не функционала:


      1. Есть голова, руки, время и желание — можно сделать все на open-source редакциях OS и компонент. Вопросы авторизации решать дополнительными средствами (например, на уровне Apache). Для тех же расписаний сделать все в cron-е.
      2. Нет времени, но есть немного денег — можно купить enterprise-ready продукт. По цене он на порядки дешевле известных грандов, а возможностей предоставляет на порядки больше.