С полгода назад, делая
обзор... Наверное "обзор" слишком громкое слово для столь скромного размера
поста, скорее несколько мыслей о том, что платному софту есть достойная альтернатива... В общем в списке
бесплатного аудиторского софта я уже упоминал R. Сегодня хочу остановиться на нем подробнее.
Но сначала небольшая подводка для отдельных ортодоксов-староверов, которые уже наверняка начали ворчать что-то на подобии: "зачем нужно тратить время на изучение еще одного инструмента, если есть Excel и, для сложных случаев, SQL?". Если данный вопрос не мучает - можно пропустить пару абзацев. В самом деле, Excel - очень мощная штука, в которой можно сделать массу различной полезной аналитики и очень быстро. Основными проблемами, с которыми сталкивались аудиторы, были количество строк, которое можно было обработать и задачи, в которых необходима обработка нескольких связанных таблиц. В этих случаях как раз и приходил на выручку SQL. Но Excel активно развивается. Сначала убрали досадное ограничение в 65,535 строк и ... довели его до нелогичного и не круглого (с точки зрения программистов) 1,000,000 строк. Проблему это сильно не решило, поскольку при попытке обработать 300-400 тысяч строк начинаются серьезные проблемы с производительностью, а на задачи по обработке нескольких таблиц количество строк влияет ... никак. Поняв, что переписывать движок с нуля - удовольствие дорогое и трудоемкое, разработчики сделали элегантный реверанс в виде отдельного адона (а, начиная с версии 2013 года - встроенного функционала) под названием
PowerPivot. Это была настоящая революция. Во-первых, ушло ограничение в количестве строк. Во-вторых, можно объединять различные таблицы по ключевым полям и "крутить" объединенные данные в привычном пивоте. В-третьих, таблицы можно объединять из нескольких источников (например, база данных + таблица Excel + текстовый файл + еще одна база данных). В-четвертых, язык выражений анализа данных (DAX), позволяет создавать собственные метрики и еще очень-очень много вещей, в результате чего можно вообще отказаться от SQL и работать с одним единственным инструментом.
Тем не менее, я периодически посматриваю на различные инструменты в поисках чего-нибудь этакого. В каждом из инструментов есть какая-нибудь интересная фишка, но, держать тучу разных инструментов ради красивых бантиков... Опять же, задачи лучше решать в одном инструменте, а не переливать туда-сюда данные. В общем, среди большого количества софта чего-то такого этакого долго не находилось. Хотя, справедливости ради, нужно выделить ACL (Audit Command Language). К его безусловным преимуществам (по сравнению с Excel) нужно отнести легкую воспроизводимость тестов (обычно просто заменой ссылки с одного источника данных на другой) для автоматизации рутинных операций. Плюс вещи, которые можно делать серверной частью, вроде задач для реализации Continuous Auditing. Остальное, пожалуй, было нивелировано PowerPivot. И такая ситуация сохранялась до моего знакомства с R.
Сразу хочу сказать, что это не очередной "убийца Excel". Инструмент может решать те задачи, которые можно делать в Excel, но прелесть его в другом. Но об этом чуть позже.
Не смотря на свою достаточно внушительную историю (более 20 лет), инструмент попался мне на глаза совсем недавно. В одной достаточно не большой linkedin'овской группе обсуждали аудиторский инструментарий и меня привлекли достаточно лестные отзывы об R от нескольких руководителей внутреннего аудита. Среди прочих инструментов R выделяли как "наиболее мощный, хотя и наиболее сложный в изучении". Немного покопавшись в аудиторских группах, я с удивлением обнаружил почти полное отсутствие упоминаний и обсуждений R, как аудиторского инструмента. Мне показалось это достаточно странным - инструмент такой мощный, что о нем никто не знает. Прямо как в старом анекдоте про неуловимого Джо. Наконец, прерывая анналы youtube, я натолкнулся на часовой обзор R. Сделан он был не для аудиторов, но давал достаточно неплохое представление для того, чтобы определиться стоит ли тратить время на изучение. Я решил, что стоит и ни разу не жалел.
Характеристику "самый мощный и самый сложный в изучении" подтверждаю на 100%.
Почему сложный? Потому, что это - язык программирования. Мышкой много не навоюешь - нужно писать код. Он сложнее, чем SQL, зато на голову его функциональнее. Язык создавался как специализированный, поэтому писать на нем значительно легче, чем на языках программирования общего назначения, а код получается на порядок компактнее. Все-таки он создавался не для написания кода, а анализа данных. Например, есть следующая задача. Есть более трехсот файлов, содержащих результаты ежедневных замеров нескольких показателей за пару лет. Каждый файл - уникальное место сбора данных с уникальным номером. Необходимо для произвольного количества мест (одно, некоторые, все) посчитать среднее значение для конкретного показателя на выбор. Функция, которая реализует данный функционал, у меня составила три строки кода. Разумеется, умещающихся на экране нормальным шрифтом.
Код, который вытягивает данные с Facebook, о моих контактах и строит графическую карту кто кого знает и сохранил результаты в PDF заняла 8 строк. Столько же код, рисующий карту страны по регионам и раскраской регионов в цвета в зависимости от показателей продаж по регионам. Если не хватает базовых функций для решения задачи по обработке данных, можно написать свою функцию, но практически любой каприз уже реализован в более 4000 пакетах готовых функций, которые доступны на сайте разработчиков. И все это абсолютно бесплатно.
Средства визуализации данных просто потрясающие. Примеры (было лень рисовать самому, взял
тут):
Хорошенько порывшись в Гугле, я понял, что R не такой неизвестный, как показалось на первый взгляд. Это один из основных инструментов биохимиков, экологов, статистов.
Язык активно набирает популярность. За последний год по популярности языков программирования R шагнул с 31-го на 12 место, потеснив PL/SQL, T-SQL, Ruby, Pascal и Delphi. Мне показалось не справедливым, что аудиторское сообщество обходит вниманием этот прекрасный инструмент и решил его немного попиарить.
Итак, сухой остаток. Что понравилось и что требует улучшения.
К безусловным достоинствам R следует отнести:
- Просто огромный функционал по обработке данных.
- Потрясающие возможности визуализации данных.
- Всеядность. Данные из всех цифровых источников в самых замысловатых форматах и структурах.
- Бесплатность.
К недостаткам:
- В первую очередь, это время, необходимое на изучение. Но оно того стоит.
- Благодаря своей достаточно старой архитектуре, R может обрабатывать только те данные, которые умещаются в памяти. На текущий момент существует несколько пакетов, которые позволяют обходить данное ограничение.
- Производительность на больших объемах данных. Решается при помощи дополнительных пакетов, позволяющих использовать параллельные и распределенные вычисления.
- Скудный функционал для 3D визуализации данных. Направление развивается, и, надеюсь, скоро ситуация изменится в лучшую сторону.
В следующий раз приведу немного ресурсов для тех, кто заинтересовался изучением.