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

Кадр из фильма «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


  • pipecleaner — 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% шутливой.


Предыдущая публикация — «Новая Rеальность».

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


  1. ialexander
    01.04.2022 16:06
    +1

    Вчера же было сообщение, что Microsoft не приостанавливает работу в России:

    Microsoft Corp (MSFT.O) President Brad Smith wrote to Ukraine's leader this month with a clear message: despite Kyiv's calls for it to sever all ties with Russia, the U.S. software behemoth would continue doing business in the country with non-sanctioned clients, including schools and hospitals.

    https://www.reuters.com/technology/tech-workers-urge-companies-join-ukraines-digital-blockade-russia-2022-03-30/


    1. i_shutov Автор
      01.04.2022 16:31
      +1

      Возможно, но это погоды не делает.
      Мне непонятен термин "приостановил" и я не смотрю каждые полчаса за сменой обстановки. Сейчас вернулись, а через неделю опять приостановят.

      Это как с ApplePay.
      То включили Мир, то исключили... Крайне неприятно было оказаться на кассе без ничего, только с телефоном и осознать, что оплатить нечем. Высокая готовность -- штука недешевая. Но если уж ее выбирают, то она подразумевает безотказную работу в рамках своих девяток.

      Вот пока писал, оказалось, что Logitech остановил поставки... И что, так и будем каждые 5 секунд переключаться? Такое поведение -- точно не в рамках бизнес-партнерства.


    1. i_shutov Автор
      01.04.2022 17:07

      Александр, новости новостями.
      Но давайте зададим себе более неудобный вопрос.

      Что Вы посоветуете делать тем, кто поверил табло, сап, клику, адобу, эпплу и т.д.
      Потратил уйму своего времени, досконально разобрался и обучился, надеялся быть хорошим специалистом в своей области?


      1. ialexander
        01.04.2022 17:20
        +2

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

        Бизнесу примерно тоже самое, не паниковать, сразу отказываясь от текущих решений, но иметь план B в запасе, на случай если, текущие решения станет невозможно использовать.

        А долгосрочные стратегии определить позже, когда новые правила игры прояснятся.


        1. i_shutov Автор
          01.04.2022 17:27
          +1

          Зрелый взвешенный ответ.
          Спасибо.
          План Б стоит не только компаниям иметь...


  1. kablag
    01.04.2022 16:14

    Илья, как всегда с интересом прочитал, хотя далёк от аналитики в Вашем понимании. Занимаюсь генетикой :) Но проблема общая - люди отучаются думать. А уж под это придумывают себе оправдания в виде отсутствия кнопочек.


  1. embden
    02.04.2022 12:00
    +1

    Интересно было бы увидеть подобный разбор и для python. Все-таки R - далеко не самый приятный язык программирования с высоким уровнем входа и с низким потенциалом развития.


    1. i_shutov Автор
      02.04.2022 12:32

      Хороший тезис! Но на самом деле, все с точностью до наоборот.
      Абсолютно все -- и все публикации ранее и все сслыки это доказывают.

      Питон в DS постоянно смотрит на R и пытается вопроизвести и догнать. Даже авторы пакетов сами об этом пишут. Но не все достижимо.


      1. embden
        02.04.2022 13:32
        +1

        Извините, если задел, я говорю только о своём мнении об R. Для меня программирование на R - это сугубо неприятный опыт.


        1. i_shutov Автор
          02.04.2022 15:50

          Нисколько не задели, просто это факт, легко проверяемый. В питоне все время сравнивают и глядят на R в части статистики, математики, дата фреймов и визуализации.

          «почти как data.table, почти как shiny, скоро догоним ggplot»

          Вам просто где-то на старте не повезло, приходите в https://t.me/rlang_ru, увидите, что в R все куда проще и круче.


    1. oji
      03.04.2022 08:22

      Поддержу мнение про R, очень уж он узкоспециализированный, особенно в сравнении с Python. Если на то нет объективных причин (например, в отделе работают только с Shiny), я бы выбрал для изучения последний.

      В качестве платформы для дашбордов можно взять фреймворк Dash, построенный поверх Flask, веб-часть на React. По нему недавно вышла в издательстве Packt добротная книга, на подходе ещё одна от NoStarch Press. Ещё популярен Streamlit, прочие подобные решения, вроде, плетутся далеко позади. Данные вертеть, очевидно, в Pandas (но стоит рассмотреть альтернативы), хороший стартовый учебник - Pandas in Action. Дальше можно "обмазываться" библиотеками по потребностям - тысячи их.


      1. i_shutov Автор
        03.04.2022 09:19
        +1

        1. Чтобы аргументированно поддерживать такое мнение необходимо в совершенстве владеть и тем ЯП и и другим. "Не читал, но осуждаю" -- это уже неоднократно проходили.

        2. Да, можно брать эти фреймворки. Но, как уже неоднократно писалось, в т.ч. авторами пакетов -- все это сильно отстает от R. И никакой узкой специализации у ЯП полного по Тьюрингу нет. Но присуствует узость мышления специалистов, обусловленная перекосами в обучении.

        3. Так часто упоминаемый pandas -- это аутсайдер по скорости и потребляемой памяти, полный компромиссов, косяков и избыточной многословности. См., например,

          ["10 Things I Hate About pandas"](https://wesmckinney.com/blog/apache-arrow-pandas-internals/), [Database-like ops benchmark](https://h2oai.github.io/db-benchmark/)