— Для некоторых людей одиночество и оторванность от мира могут стать проблемой.
— Только не для меня.

Кадр из фильма «The Shining», 1980 г.

В рядах аналитиков началась тихая паника. Заплатить в Google BigQuery в облачном варианте сейчас невозможно без иностранной банковской карты, Tableau и Microsoft «приостанавливают» свою активность в РФ, многие вендоры ушли, многие в низком старте.
Появляются материалы с вопросами «Пора менять Tableau, Power BI, Qlik? Как выбрать российский BI? Или не российский? Или не BI?» которые даже неприлично было задавать пару месяцев назад.

Но это прекрасный момент остановить ковейерное тиражирование шаблонов, выдохнуть и подумать «А что нам реально надо то?». И тут все становится не совсем очевидно.

Дальше картинок мало (0), по большей части текст и ссылки.

Проблематика

Несомненно, BI нужны в обязательном порядке для больших компаний федерального масштаба. Но вот насколько полезны и уместны инструменты self-analytics для местячкового анализа? Мнений может быть множество, очевидно, что интеграторы-продавцы-внедренцы будут говорить о безусловной необходимости salf-analytics… Но вот полевой опыт показывает, что неуёмное применение таких инструментов несет больше бед и разрухи, чем пользы и вот почему:

  • Эфемерная легкость получения красивых демонстрационных картинок с помощью мышки создает у менеджеров ощущение простоты задачек и снижает порог HR требований;
  • в аналитику приходят не программисты-математики, а дизайнеры с соответствующим радикальным снижением алгоритмического качества, эффективности расчетов и критичности к данным;
  • вымывание математиков приводит к формуле fake_analytics = fake_data + fake_math;
  • бизнес, который ориентируется на неправильные показатели принимает неправильные решения — убытки финансовые, репутационные, потеря времени и позиций.

При упоминании Tableau или аналога всегда возникает вопрос: «Если вы все равно в конце используете Excel, то почему не используете PoverPivot?» Для многих задач самостоятельной аналитики это очень мощный инструмент, который не требует ничего дополнительно покупать.

Дополнительными бесплатными бонусами к мышекликовой аналитике идет еще букет возможностей:

  • слабые возможности переиспользования результатов (кода то нет!);
  • скудные алгоритмические возможности;
  • невозможность разработки автотестов и сложной валидации данных;
  • отсутствие механизмов CI/CD;
  • все прочие прелести DevOps и Reproducible Research.

Для потенциальных приверженцев инструментов самостоятельной аналитики приведу еще пару типовых капканов, на которые наступают почти всегда.

Ловушка 1

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

  1. У меня база с триллионами строк и сотней колонок (терабайты на диске).
  2. Мне нужен «гибкий конструктор», чтобы делать self-analytics. Чтобы не думать и не зависеть от кого-либо.
  3. Хотим иметь возможность считать TopN по отфильтрованным записям, отсортированным по произвольным правилам и произвольным колонкам. (Индекс и партиции заранее сделать нельзя — все ведь «гибко» и непредсказуемо).

Full Scan по всей таблице выполнить в разумное время или выполнить вообще невозможно. Приехали.

Ловушка 2

Федеральная сеть (да хоть бензоколонки), работающая в нескольких часовых поясах. Часть вещей необходимо анализировать по UTC (централизованные системы), часть вещей необходимо анализировать по локальному времени, таймзоны объектов могут меняться и добываются они из внешних справочников. Не исключено, что в рамках одного процессинга нужны данные и по UTC и по локальному времени.

И вот считаются агрегаты по дате (переход от datatime к date). Если не учитывается таймзона и специфика использования временной метки в конкретной формуле, то данные могут попасть даже не в тот день, получаем fake-date для бизнеса в рафинированном виде. Все остальные производные от таких данных можно кидать в помойное ведро не отходя от кассы.

Еще раз, не подвергая сомнению, что BI обязательно нужны для больших и масштабных задач, далее утверждаем, что self-analytics прекрасно и эффективно решается на open-source DS инструментах. В частности, экосистема R имеет полный full-stack для операционной и классической аналитики, включая весь спектр коммуникаций с аналитиками и бизнесом:

  • дашборды;
  • web-based приложения;
  • storytelling html отчеты;
  • среда разработки.

И все это может выглядеть не менее гламурно, чем табло/клик/pbi/google analytics/etc…

Дальнейший текст, посвященный только 1.5 пунктам (Shiny + RMarkdown) приверженцам #не_думать и #только_мышкой читать не стоит, ничего полезного для себя не почерпнут. Это большой поток информации, требующий вдумчивого изучения.

Экосистема R куда больше рамок простого дашбордика, но начинать знакомиться лучше с понятных и знакомых мест.

RStudio Shiny & RMarkdown

Полезная литература

Примеры

Shiny Contest

Здесь вот можно посмотреть массу примеров элементов и конструкций shiny приложений (код и приложения).

Графики

Чтобы не перечислять простыню всех возможностей, просто упомянем три основных направления, ggplot, echarts, plotly. Все остальное — мелкие сателлиты.

  • ggplot2 is a system for declaratively creating graphics, based on The Grammar of Graphics.
  • echarts4r — Interactive visualisations for R via Apache ECharts
  • plotly — Interactive charts and maps for Python, R, Julia, Javascript, ggplot2, F#, MATLAB®, and Dash.

Таблицы

Альтернативные UI

  • RinteRface — bringing the most famous open source HTML templates to R
  • SHINY.SEMANTIC — Dashboard with Semantic UI Support for Shiny

Немного про тестирование и API

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

  • fierry — A Lightweight and Flexible Web Framework
  • plumber — An API Generator for R
  • promises — Case study: converting a Shiny app to async
  • reactlog — Reactivity Visualizer for ‘shiny’
  • RestRserve — R web API framework for building high-performance AND robust microservices and app backends
  • shinyloadtest — Load Testing Shiny Applications
  • dittodb — A Test Environment for Database Requests
  • httptest — A Test Environment for HTTP Requests
  • mockthat — Function Mocking for Unit Testing in R
  • mockery — A mocking library for R
  • mockr — Mocking in R
  • ipecleaner — Debug and Refactor magrittr Pipelines
  • refactor — Tools for Refactoring Code
  • testthat — Unit Testing for R
  • tinytest — A lightweight, no-dependency, but full-featured package for unit testing in R
  • vdiffr — Visual regression testing and graphical diffing with testthat
  • waldo — Find Differences Between R Objects
  • webmockr — Stubbing and Setting Expectations on HTTP Requests

Полезные дополнения

Дополнения сделаны в виде Shiny приложений. Хорошая демонстрация!

  • Radiant – Business analytics using R and Shiny
  • esquisse.This addin allows you to interactively explore your data by visualizing it with the ggplot2 package. It allows you to draw bar plots, curves, scatter plots, histograms, boxplot and sf objects, then export the graph or retrieve the code to reproduce the graph.
  • DataEditR. Manual data entry and editing in R can be tedious, especially if you have limited coding experience and are accustomed to using software with a Graphical User Interface (GUI).
  • ExPanDaR. Explore Your Data Interactively

А еще есть очень любопытный проект Exploratory

Самое смешное, что с немного набитой на Shiny рукой основной аргумент визуальщиков «клац-клац и в продакшен» разметается в пух и прах. Остаются одни плюсы. Кто бы мог подумать, что шутливая заметка 2017 года «’Оч.умелые ручки’: делаем Tableau/Qlik из R и ‘синей изоленты’» окажется не на 100% шутливой.

Privacy Preference Center