Вы находитесь на страницах старой версии сайта.
Переходите на новую версию Interface.Ru

СТАТЬЯ
26.06.03


Применение OLAP технологий при извлечении данных

© Арустамов Алексей, BaseGroup Labs.
© Статья была опубликована на сайте Лаборатория BaseGroup

OLAP (Online Analyzing Processing) – это один из способов добычи и анализа данных. Суть заключается в том, что информация представляется в виде многомерного куба с возможностью произвольного манипулирования ею. По сухому описанию довольно трудно понять, зачем OLAP нужен и как он работает. Чтобы это лучше понять, я расскажу, как мы создавали свою OLAP систему – Cube. История очень показательна. Скорее всего, вы с аналогичными ситуациями встречались. Речь будет идти не о конкретной программе, а технологии.

Все началось после ввода в эксплуатацию информационной системы управляющей товародвижением организации – приход, отгрузка, заказ, оплата и т.п. После того, как были решены все проблемы с документооборотом, встал вопрос о получении нужной информации из системы. В программу была встроена возможность построения произвольных запросов и интеграция с Excel. Но этого не хватало. Дело в том, что для того, чтобы добыть информацию из базы данных, нужно знать его структуру и язык SQL. Пользователи, конечно, шарахались и от того и от другого как черт от ладана. Этим занимался программист. Все было хорошо, пока от системы не стали требовать слишком много отчетов. Новые отчеты появлялись чуть ли не каждый день. Каждому из сотрудников требовалось что-то свое. Спустя месяц их количество перевалило за полсотни. Пользователи перестали вообще хоть что-то понимать. А как понять, что скрывается за отчетом с названием – «Остатки товара»? Какие там сведения, как сгруппированы, что входит в этот отчет, а что нет? На самом деле дела обстояли еще хуже, т.к. даже сам программист перестал разбираться. Чтобы ответить на вопрос – «А какую информацию мы получим из этого отчета?», он должен был посмотреть текст SQL запроса. В общем, было ясно, что ситуация тупиковая. Мы пытались решать проблему при помощи стандартизации. «Давайте решим, какие отчеты Вам нужны, и мы их подготовим». На что нам обычно отвечали – «Мы бы с удовольствием. Нам и самим все это надоело. Но мы четко не знаем, что нам потребуется завтра и вообще не имеем представления, какую информацию через 5 минут потребует шеф». Пришлось искать радикальное решение проблемы.

Лично я противник того, чтобы по каждому поводу писать новую программу. Если старая может справиться с большей частью проблем, лучше ее не трогать. Новые системы порождают новые проблемы. Ими стоит заниматься только тогда, когда есть действительно серьезная потребность. Случай был именно такой. Руководство не понимало, почему, если есть база данных, есть нужная информация, ее нельзя получить быстро, без лишней головной боли и в нужном виде. Так появилась программа – Cube.

Речь дальше пойдет не о конкретной программе, а о технологии OLAP, т.к. как бы вы ее ни реализовывали, вы все равно столкнетесь с теми же проблемами, с которыми сталкивались мы при создании Cube.

Общий принцип работы любой OLAP системы прост. Давайте вначале представим себе отчет в виде куба.

ГородТоварЯнварьФевральМартИтого
МоскваУтюг10221547
 Пылесос27514
 Чайник17342071
Итого 296340132
РязаньХолодильник2035
 Чайник56314
 Телефон1222741
Итого 19281360
ВладивостокУтюг77519
 Телефон10121537
 Пылесос2305
Итого 19222061
Рис.1. Данные в трехмерном кубе

На рисунке изображен 3-х мерный куб, хотя количество измерений особого значения не имеет. Просто 3 измерения легче представить. Теперь, если мы сложим значения во всех ячейка по вертикали, то получим следующий отчет.

ГородЯнварьФевральМартИтого
Москва296340132
Рязань19281360
Владивосток19222061
Итого6711373253

Вся работа с кубом, собственно, и сводится к различным его поворотам, группировкам. Можно менять количество измерений, способы группировки, но это не важно. Принципы совершенно одинаковы. И эти самые принципы порождают определенные проблемы. Дело в том, что при таком представлении данных работать с информацией легко и удобно, но куб очень быстро увеличивается в размерах. И для того, чтобы получить хороший результат, необходимо, чтобы на экран выводился не весь куб, а только нужная его часть. Для этого необходимо: во-первых, иметь возможность выбирать только те измерения, которые нас интересуют. Если вам все равно, в какой город продавался товар, то нужно с самого начала убрать измерение «город». Во-вторых, иметь возможность выбрать/отсечь ненужные значения. Например, если из всей номенклатуры интересуют только утюги и холодильники, нужно строить куб только для них.

Есть еще один важный нюанс. Работа с OLAP системой должна быть простой и очевидной для пользователя. На это почему-то обращают мало внимания. Зачем нужен мощный инструмент, если им трудно пользоваться. Потыкаются пользователи пару раз и будут или делать все вручную, или вызывать программиста.  Мы несколько раз переделывали систему, чтобы сделать ее как можно проще. Если вы, при создании соей OLAP системы, будете учитывать все вышеперечисленные нюансы, пользователи обязательно будут довольны.

У любой технологии есть свои минусы и плюсы, и OLAP тоже не без греха. Во-первых, OLAP рассчитан в первую очередь на анализ процессов. Отгрузка, поступления, оплата – это эму дается легко. Если вы хотите анализировать объекты, то лучше использовать другой инструментарий. Во-вторых, при работе с OLAP исходят из предположения, что вы четко знаете, какую информацию вы хотите получить из базы данных. OLAP – это прежде всего инструмент добычи информации. Если вам нужно получить ответы на нечетко поставленные вопросы, например, – отобрать 10 лучших клиентов, тут будут проблемы. Вам нужно использовать другие методы анализа, т.к. нет простого определения понятия хороших клиентов, а следовательно невозможно сформировать SQL запрос к базе данных, а SQL – это фундамент на котором все это работает. В-третьих, к OLAP нужно относиться осторожно. Вещь очень мощная, но может мгновенно загрузить все ресурсы сервера. Так что отсекайте как можно больше информации, а лучше строить отдельные хранилища данных. Это оптимальный вариант. Соберите информацию из разных источников, систематизируйте, влейте в хранилище и анализируйте. Вот тут OLAP-у будет где разгуляться. Создание хранилища данных – очень серьезная работа, но чудесного способа решения всех проблем с информацией не существует. Если ваши данные разбросаны где попало и не систематизированы, вам ничто не поможет.

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

Дополнительная информация

За дополнительной информацией обращайтесь в компанию Interface Ltd.

Обсудить на форуме

Рекомендовать страницу

INTERFACE Ltd.
Телефон/Факс: +7 (495) 925-0049
Отправить E-Mail
http://www.interface.ru
Rambler's Top100
Ваши замечания и предложения отправляйте редактору
По техническим вопросам обращайтесь к вебмастеру
Дата публикации: 26.06.03