
13. Технологии аналитической обработки данных. Olap-технологии. Примеры систем бизнес-анализа.
Для того чтобы существующие хранилища данных способствовали принятию управленческих решений, информация должна быть представлена аналитику в нужной форме, то есть он должен иметь развитые инструменты доступа к данным хранилища и их обработки.
Все современные программные системы, связанные с обработкой накопленных данных, а именно результатов первичной деятельности компании, можно условно разбить на три основные категории: средства регламентированной отчетности; OLAP-системы, т. е. системы аналитической обработки данных; средства поддержки Data Mining.
Основное назначение OLAP-систем - поддержка аналитической деятельности, т. е. произвольных (часто используется термин ad-hoc) запросов пользователей-аналитиков. Если системы регламентированной отчетности отвечают на вопросы типа «сколько было продано товара?» или «какова прибыль за последний месяц», то OLAP призван дать ответы, скажем, на вопросы «насколько надо увеличить расходы на рекламу, чтобы прибыль выросла на 15%?», или «какие продукты будут в пятерке лучших по показателю прибыльности из наиболее продаваемых в Нижнем Новгороде?». Цель OLAP-анализа - проверка возникающих гипотез. Далее мы рассмотрим технологии, позволяющие эффективно выполнять подобного рода запросы.
Выражаясь математически, аналитик мыслит многомерными представлениями. Анализируя некоторый показатель, например объем продаж, он отдает себе отчет, что определяются продажи, собственно, тем, каков интерес к конкретному товару, какой регион рассматривается и в какой момент времени. Таким образом, объем продаж может быть представлен в виде трехмерного (в нашем упрощенном примере) куба, гранями которого изображаются массивы данных по товарам, регионам и времени, а внутри куба находятся значения объема продаж.
Выбирая конкретный товар, регион и временную точку, мы получаем соответствующий показатель объема продаж. Такое простое, на первый взгляд, представление данных обеспечивает мощный механизм для аналитических запросов.
Каждый из массивов данных (граней куба, или, как их называют, размерностей) может содержать не просто перечень значений, а набор деревьев, или иерархию значений, где верхнее значение иерархии раскрывается стоящими ниже и т. д. В каждом кубе обязательно присутствует иерархия времени. На верхнем уровне расположены годы (десятилетия), ниже - кварталы, затем месяцы, недели, дни. Уровень детализации ниже дней вряд ли будет интересовать пользователя в силу особенности аналитических задач - один час не меняет общей картины за месяц или квартал, т. е. не влияет на данные, интересующие аналитика.
Для каждой размерности можно задать более одной иерархии и обобщать их с различных точек зрения. Что важно - все значения вычисляемого показателя (в нашем примере это объем продаж) будут физически храниться в иерархиях размерностей, т. е. вычислений «на лету» производиться не будет. В этом и состоит секрет эффективности выполнения операций аналитических запросов над многомерными представлениями, ведь аналитик должен получать ответ на одну из многих своих гипотез практически мгновенно. Производители OLAP-систем обеспечивают скорость выполнения запросов в пределах одной секунды, максимум пяти. Однако не стоит уповать на эти цифры - эффективность работы конкретного приложения очень во многом определяется правильностью построения куба данных, сочетания числа размерностей с числом иерархий и уровнем детализации данных и даже порядком создания этих размерностей разработчиком. Например, в одном кубе не следует допускать более шести-семи размерностей, иначе затрудняется восприятие зависимостей самим аналитиком и существенно снижается производительность всей системы. В одном аналитическом приложении, как правило, существует несколько кубов данных, каждый из которых представляет анализируемый показатель. Для разных кубов может использоваться одна и та же размерность, причем фактически она будет не дублироваться, а разделяться. После наполнения куба данными возможно как дополнение, так и обновление значений размерностей. Значения на более высоких уровнях иерархии и значения внутри куба будут вычисляться автоматически. Такие обновления производятся не постоянно, а пакетным образом, раз в несколько дней, в зависимости от требований аналитических задач. Кубы данных могут быть как физически хранимыми, так и виртуальными, в терминологии это отражается в названиях "переменная" и "формула" соответственно. Можно создавать связи (отношения) между размерностями, например, различные категории товаров, хранящихся в одной размерности, связаны с различными подразделениями компании, эти товары производящими и выделенными в отдельную компанию.
Все самое интересное с точки зрения OLAP-анализа начинается с применения этих немногих физических сущностей и функциональности, поддерживаемой клиентскими средствами. Простая, но достаточно важная операция над кубом данных - срез и вращение куба, т. е. фиксация одного или нескольких значений размерностей и просмотр показателя по другим. Современные интерфейсы позволяют пользователю реализовывать срезы и вращения на уровне drag-and-drop - с помощью мышки менять на экране местами размерности, столбцы со строками и т. д. Тем самым пользователь получает возможность анализировать показатель с различных точек зрения - товара или региона. Данные размерностей можно просматривать по различным уровням иерархии (например, время по кварталам и месяцам), а можно задавать и более сложные условия выборки или даже отдельные значения. Многие программные средства позволяют накладывать условия на анализируемый показатель, т. е. выбирать только значения показателя выше заданного (например объем продаж более $150 000), или же минимальные и максимальные значения в каждом регионе отмечать отдельным цветом. Безусловно, наряду с табличным представлением поддерживается и графическое, со всеми возможными видами графиков - столбчатых, диаграмм, точками и линиями на координатной оси, двух и трехмерных. Любая операция вращения и среза данных выполняется моментально, перепостроение графика занимает доли секунды.
Наиболее интересные и сложные возможности анализа данных заключаются в прогнозировании и выявлении тенденций. Подобные вычисления основаны на построении функции экстраполяции на базе имеющегося (определяемого пользователем) набора исходных данных. Прогнозирование всегда существенно зависит от особенностей предметной области, поэтому универсальных алгоритмов экстраполяции не существует. Различные инструменты создания аналитических приложений содержат несколько алгоритмов, основанных на линейном, экспоненциальном тренде и учете сезонных колебаний. В ряде систем (например, Oracle Express) помимо этого предлагается мощный математический аппарат, позволяющий создавать собственные алгоритмы на основе известных законов, но не более того. Таким образом, точность прогноза реально определяется разработчиком системы. На практике использование прогнозирования максимально просто - пользователь задает интервал времени, на которое производится расчет. В виде таблицы или диаграммы отображается значение анализируемого показателя, известное для заданного интервала времени, и нажатием кнопки или вызовом функции меню вычисляются значения этого показателя на будущее.
Другая интересная возможность OLAP-систем заключается в определении начальных условий по заданному желаемому результату. Примером такого запроса может служить приведенный в начале данного раздела вопрос «на сколько надо увеличить расходы на рекламу, чтобы объем продаж увеличился на 15%?». Другим не менее распространенным видом аналитических запросов является анализ по принципу «что, если?». В этом случае аналитик имеет возможность менять значения показателей или размерностей, чтобы проследить зависимость от них результата.
Современные OLAP-системы поддерживают многопользовательскую работу. Что же будет, если все вдруг начнут менять исходные данные? На самом деле изменения выполняются в отдельном адресном пространстве пользовательского приложения; реально исходные данные при этом не меняются. Для того чтобы внести изменения, пользователь должен обладать эксклюзивными правами. На это есть определенные технологические причины, зависящие от архитектуры аналитических систем и их взаимосвязи с хранилищами данных.