Аналитические приложения для работы с данными

Очень часто требования бизнеса оказываются значительно шире функциональных рамок аналитических систем. Например, BI системы, как правило, не предназначены для ввода произвольных данных «на лету» или проведения сложных расчетов. И тогда возникает дилемма: скажешь, что нельзя — пользователи уйдут делать расчеты на коленке в «Экселе», а скажешь что можно — скорее всего, придется лепить «костыли» из имеющихся систем ландшафта.

Есть два очень распространенных языка для работы с данными — R и Python. Они обладают большим набором библиотек, позволяющих работать с данными, а также огромной пользовательской базой. Практически любую задачу по работе с данными — начиная от простого сбора и обработки и заканчивая построением нейронных сетей — можно легко сделать с их помощью.

Для того, чтобы повернуть R и Python к пользователям лицом, можно делать с их помощью аналитические приложения. Получаются веб-приложения, где можно загружать данные из разных источников, параметризовать их и, конечно, красиво визуализировать. Ограничения по функционалу минимальны. Приложения можно централизованно публиковать на сервере и давать к ним доступ простым бизнес-пользователям.

Существует два распространенных фреймворка для создания таких приложений: Shiny для языка R и Dash для языка Python. Оба они очень похожи по своим механизмам, оба — распространяются по модели open source с платными коммерческими версиями. На сайте будет целая серия статей о том, как делать аналитические приложения на основе Shiny, ну и, возможно, про Dash тоже.

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

Для примера сейчас буду рассказывать про функционал библиотеки Shiny для языка R. Этот язык изначально создавался не для программистов, а для ученых-статистиков и специалистов по данным, поэтому немножко не похож на остальные языки. Но его легко изучить и привыкнуть к его особенностям, которые в дальнейшем будут казаться преимуществами.

Перед тем, как поговорить про Shiny, необходимо упомянуть, что его разработала и развивает компания RStudio.

Помимо этой библиотеки, в RStudio разработали самый популярный IDE (программу для разработки) для R

Миссия: RStudio делает анализ данных с помощью R проще и предлагает мощные решения для разработки отчетов, дешбордов и интерактивных приложений Shiny для вашего предприятия.

Аналитические приложения

В общем случае аналитическое приложение — это интерактивное веб-приложение, основной сценарий работы с которыми предполагает:

  • Наличие где-то источника данных;
  • Действия пользователя для управления этим источником данных;
  • Наличие средств визуализации данных (от таблиц до диаграмм)
  • Получение в итоге какого-то результата: это может быть визуализация или выгрузка получившегося набора данных в CSV, Эксель или обратно в какую-нибудь БД.

Конечно, такие приложения можно сделать и при помощи популярных веб-технологий: JavaScript, jQuery, HTML, CSS… Но это будет сложно и автор такого приложения должен будет владеть целым набором технологий.

Для создания аналитического приложения нужно владеть только языком R (или Python), ну и в целом понимать, как устроен фреймворк (это несложно).

Реактивность

Аналитические приложения на Shiny или Dash являются реактивными. На уровне пользователя об этом задумываться не нужно, а вот при разработке и проектировании такого приложения нужно четко понимать, что такое реактивность, и уделять этому должное внимание.

Обычно вы работаете с приложениями так: есть какая-то форма, например, с полями для ввода и параметрами. Вы задаете эти параметры и вводите необходимые значения, затем нажимаете на кнопку, например, «Выполнить». Все действия приложение выполняет только после нажатия на кнопку, изменение одного параметра как правило не влечет сиюминутного пересчета.

Чтобы понять, что такое реактивность, лучше всего вспомнить Эксель. Там вы можете связать ячейки одна с другой и, например, на одну ячейку с каким-то параметром завязать неограниченное количество других ячеек в формулах. Когда вы меняете значение в ней, пересчитываются все связанные с ней ячейки, вам не приходится нажимать на кнопку «Обновить». Постоянное поддержание связи между ячейками и автоматическое отслеживание изменения каждого из параметров — это и есть реактивность.

Пример реактивности в Excel

В приложениях каждая «ячейка», или переменная, изменение значения в которой должно отслеживаться, называется реактивной переменной. Сначала может показаться, что проще делать приложения традиционным способом — ввел значения, нажал на кнопку, программа все посчитала. Так тоже можно. Но если разобраться, то реактивность чаще всего облегчает жизнь создателю приложения, а не усложняет.

Примеры использования Shiny

Интерактивные дешборды

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

Это самый простой способ использования Shiny однако, наверное, не совсем целевой: для таких задач лучше подходят системы BI. Но если вы только начинаете осваиваться с Shiny, сделать дешборд будет проще всего.

Ссылка на пример: https://walkerke.shinyapps.io/neighborhood_diversity/

Опромышливание моделей машинного обучения

Если есть какая-то модель, которую часто используют и параметризуют, то можно сделать интерфейс для работы с ней

Интерфейсом будет приложение Shiny, в котором пользователи смогут загрузить файл с исходными данными, задать параметры и запустить расчет модели.

Там же – интерактивные визуализации результатов.

Пример: приложение для моделирования временных рядов с использованием библиотеки Prophet от Facebook.

Калькуляторы и параметризуемые модели

Если нужно автоматизировать расчёт показателей по методике, где различные параметры могут изменяться, то можно сделать для этого приложение Shiny.

Также в Shiny можно быстро сделать красивое и удобное приложение-калькулятор: рассчитать график платежей по кредиту или провести сайзинг оборудования.

Например, расчет аппаратных мощностей, необходимых для развертывания сервера RStudio сделан как аналитическое приложение:

Избавиться от огромных Эксель-файлов с расчетами и отчетами

Очень часто более-менее сложные расчёты «автоматизируются» с помощью самого доступного инструмента – Excel.

  • Много файлов, сложно вести и обновлять для всех пользователей
  • Постепенно книга обрастает формулами, в которых перестаёт находить концы даже автор
  • Может быть даже VBA, который тяжело поддерживать

Если человек увольняется, то придётся всё «автоматизировать» заново.

Всё что есть в Excel можно реализовать в приложении Shiny. Его можно будет централизованно опубликовать и обновлять, логика будет простой и прозрачной. С помощью элементов управления можно реализовать ввод любых параметров: визуализация, ввод данных в таблицах и т.д.

Данные можно выгрузить как угодно: хоть в Excel или CSV, хоть сохранить в какую-нибудь СУБД.

Что дальше

Эта статья написана как вводная, чтобы объяснить, что из себя представляют аналитические приложения. На нашем сайте будет много публикаций, где мы будем рассказывать про конкретные вещи, которые можно делать в Shiny или Dash. Поэтому все детали ищите там.


Ссылки:

Автор

Андрей Макеев

Я интересуюсь всем, что связано с анализом данных и аналитическими системами. Люблю проектировать разные решения для анализа данных, формирования отчетности, бюджетирования. В настоящий момент работаю аналитиком хранилищ данных в компании Glowbyte Consulting. Люблю послушать классическую музыку в хорошем зале, поиграть на фортепиано, погулять по городу или прокатиться на машине куда-нибудь за город.