Года полтора назад, когда корпорация Microsoft выпускала в свет версию SQL Server 7.0, рынок OLAP затаился в ожидании встряски. Продукты OLAP были очень дороги, а использовать их в работе было нелегко. Кроме того, они почти не взаимодействовали друг с другом. Предложенные корпорацией Microsoft средства OLAP, называемые OLAP Services, заметно продвинули эту технологию в отношении как производительности, так и легкости применения. OLAP Services стали удобным средством построения многомерных кубов данных, а разработанный специалистами Microsoft язык MDX для формирования запросов OLAP, оказался чрезвычайно мощным. Сегодня более сотни компаний, выпускающих коммерческие программные продукты, поддерживают OLAP Services. Это стало возможным благодаря появлению сразу ставших популярными интерфейсов ADO-MD (ActiveX Data Object, Multi-Dimensional) и OLE DB для OLAP. Эти интерфейсы появились на рынке вместе с OLAP Services 7.0 (см. в конце данной статьи приложение 1 <Как много стандартов, хороших и разных>).

После выхода в свет версии SQL Server 7.0 команда разработчиков, создавшая OLAP Services, поставила перед собой задачу к следующей версии сделать продукт, способный стать лидером по производительности и богатству возможностей. Сегодня уже можно видеть некоторые плоды их усилий. В состав SQL Server 2000 входит новая версия OLAP Services, которая называется теперь Analysis Services 8.0, что лучше отражает ее аналитические возможности. В данной статье будет дан предварительный обзор наиболее важных черт Analysis Services. Более полный перечень функциональных возможностей приведен на схеме 1. В следующих статьях я планирую продолжить рассказ об особенностях Analysis Services

Исследование данных

Начну с наиболее значительного нововведения Analysis Services, связанного с исследованием данных (Data Mining). Методы исследования данных, которые являются продолжением работ в области искусственного интеллекта, позволяют анализировать и фильтровать огромные объемы информации в поисках скрытых закономерностей и тенденций. Эта технология существует уже довольно давно, но она была недоступна в силу своей сложности аналитикам бизнеса и служащим, принимающим решения. В Analysis Services сделана попытка исправить положение путем интеграции методов исследования данных с механизмами OLAP. В составе Analysis Services появился мастер Mining Model Wizard для исследования данных при помощи OLAP, специально адресованный менеджерам. Он помогает построить модель для исследования данных на базе информации из куба данных OLAP, а также облегчает представление результатов в виде новой размерности, показателя, или же свойства членов размерности для удобства анализа.

В SQL Server 2000 специалисты корпорации Microsoft реализовали два самых популярных метода исследования данных: алгоритмы кластеризации и деревья принятия решений. вы Разработчики смогут применить эти алгоритмы к реляционным данным, воспользовавшись для доступа к ним новым расширением OLE DB под названием OLE DB for Data Mining. При обработке с помощью этих алгоритмов многомерных кубов данных можно осуществлять доступ к информации через OLE DB for OLAP или же ADO MD. К счастью, чтобы применять методы исследования данных к кубам OLAP, не надо быть программистом. Новый мастер, начальный экран которого показан на экране 1, является относительно простым средством создания новых моделей исследования данных. После построения своей модели вы сможете также сформировать виртуальный куб для просмотра результатов. Клиентские приложения независимых компаний добавят дополнительные возможности, аналогичные тем, что реализованы в мастере исследования данных Mining Model Wizard. Это возможно благодаря расширениям MDX, предусмотренным в Analysis Services.

В состав Analysis Services входит руководство, в котором приводится два примера использования мастера исследования данных, Mining Model Wizard, и специального редактора OLAP Mining Model Editor. Первый пример показывает, каким образом подразделение маркетинга вымышленной компании, продающей продовольственные товары, могло бы выявить зависимость между демографической информацией о клиентах (например, о семейном положении, годовом доходе, количестве детей и т.п.) и видами членских карт, которыми пользуются клиенты. Обнаружение такой зависимости позволило бы отделу маркетинга разработать свои методы продвижения товаров для каждого вида членских карт. Второй пример демонстрирует, как то же самое подразделение маркетинга могло бы ввести классификацию клиентов по различным признакам, чтобы на основании такой классификации разработать еженедельные купоны для покупателей. Первый пример демонстрирует использование алгоритма дерева решений, а второй - алгоритма кластеризации.

Работа с размерностями

Разработчики корпорации Microsoft ввели в Analysis Services много новых возможностей для работы с размерностями. Одно из основных нововведений, поддержка неровных и несбалансированных иерархических структур размерностей, позволяет избавиться от главных недостатков OLAP Services. Примером неровной размерности является такая размерность, у которой хотя бы один из членов имеет родителя не на смежном верхнем уровне, а на еще более высоком. Такие размерности встречаются часто, особенно при описании сведений географического характера. На схеме 2 приведен пример такой размерности. Город Вашингтон, столица Соединенных Штатов Америки, по своему официальному статусу соответствует штату, хотя фактически штатом не является. Поэтому в приведенной схеме у него нет родителя на уровне штатов в географической иерархии, в то время как у всех остальных городов США имеются родители на уровне штатов.

У несбалансированных размерностей листовые члены располагаются на разных уровнях иерархии. Другими словами, иерархическая структура представляет собой дерево с различных числом подчиненных узлов. Иерархии несбалансированного типа часто встречаются в моделях, предназначенных для проведения финансового анализа. В представленном на схеме 3 примере, описывающем структуру доходов, иерархическая структура не только не является сбалансированной, но помимо этого в ней агрегирование промежуточных узлов выполняется разными способами. В SQL Server 7.0 можно было задать только один метод агрегирования для каждого показателя по всем членам размерности, например, суммирование. Это серьезное ограничение, поскольку многие финансовые приложения требуют большей гибкости. В отличие от OLAP Services в Analysis Services появилась возможность определить для каждого члена размерности свою формулу свертывания, к примеру, Валовая прибыль = Объем продаж - Себестоимость продаж.

Несбалансированные размерности создаются при помощи таблицы размерности, в которой хранятся связи родитель-дитя для членов размерности. На экране 2 показано, как производится конфигурирование такого рода таблиц в новом мастере размерностей Dimension Wizard. В данном примере размерность будет содержать сведения о служащих и будет соответствовать организационной структуре компании. Каждая запись в таблице размерности служащих содержит ключ и ссылку на ключ родительской записи. В рассматриваемом примере ключом является поле employee_id, а ключу родительской записи соответствует поле supervisor_id.

Новые размерности с отношениями родитель-дитя также поддерживают обратную запись. Не следует путать обратную запись в размерность с реализованной в SQL Server 7.0 возможностью производить запись данных в куб. То, что пользователь теперь может выполнять запись данных в размерность, фактически означает, что ему предоставлено право менять структуру размерности. В то же время запись в куб позволяет всего лишь заменить значение одной из ячеек. В Analysis Services менять структуру размерности можно с использованием синтаксиса MDX, например, командами переноса или удаления члена размерности, MOVE MEMBER и DELETE MEMBER. То, каким образом эти команды меняют структуру размерности, не требует повторной обработки куба. Применять кубы и размерности, в которые разрешается записывать данные, можно как вместе, так и порознь. Еще одним новшеством версии 8.0 является автоматическое распределение введенных в процессе обратной записи в ячейки данных по нижним уровням иерархии размерности. Это дополнение дает возможность производить запись даже в те ячейки кубов, допускающих обратную запись, которые не лежат на уровне листьев. При этом Analysis Services автоматически выполнит детализацию введенного значения в соответствии с равномерным или взвешенным распределением, заполняя ячейки, находящиеся ниже в иерархии размерности, вплоть до уровня листьев.

Еще одна новая возможность при работе с размерностями - поддержка меняющихся размерностей. В OLAP Services при изменении категорий членов размерностей, расположенных не на уровне листьев или вершины, необходимо полностью перестроить эту размерность, а также все кубы, в которых она используется. Подобные действия могут повторяться часто и отнимать много времени в работе приложений OLAP. В Analysis Services следует просто пометить размерность как меняющуюся (Changing), затем провести изменения членов размерности промежуточных уровней и опубликовать их в процессе обновления размерности методом приращений. Проводить повторную обработку кубов не требуется. В материалах SQL Server Books Online (BOL) утверждается, что отнесение размерности к категории меняющихся размерностей приводит к снижению производительности, но я не оценивал, насколько велико такое снижение. Я полагаю, что времени на это уходит не больше, чем на обработку куба, но больше, чем на обработку запроса.

Безопасность

В OLAP Services 7.0 предусмотрено обеспечение безопасности на уровне ячеек, однако в OLAP Manager отсутствует пользовательский интерфейс, который позволял бы конфигурировать средства безопасности на этом уровне. Определять конфигурацию системы безопасности приходится программным путем через интерфейс приложений Decision Support Objects, DSO. К счастью, разработчики Microsoft устранили в Analysis Services недостатки предыдущей системы безопасности, так что теперь имеется простой способ задать конфигурацию средств безопасности, как на уровне ячеек, так и на уровне размерностей.

Система безопасности на уровне размерностей отличается большой гибкостью. На экране 3 приведен вид диалогового окна с базовой конфигурацией средств безопасности. Помимо этого можно создать пользовательские операторы MDX, определяющие, какие роли будут иметь доступ к разным членам размерностей. Базовая конфигурация позволяет разбить размерность на подмножества, определяя уровни вершины и основания, а также указывая, какие члены в этом интервале пользователи могут просматривать. По вашему выбору определяется, будут ли доступны новые члены.

Интересные проблемы безопасности возникают в тех случаях, когда запрещается доступ к некоторым членам размерности. Представьте себе, что у вас применяется географическая размерность, содержащая Канаду и США, у которых имеется общий родитель - Северная Америка. Если конфигурация безопасности запрещает доступ к США, то какое значение следует показывать для Северной Америки? Если показать сумму значений для США и Канады, то пользователи легко вычислят показатель для США, вычтя значение для Канады из значения показателя для Северной Америки. Новая версия OLAP Manager решает эту проблему, позволяя самому пользователю определить линию поведения на уровне размерностей. Можно указать, будут ли итоговые цифры включать скрытые значения. Кроме того, появилась возможность задать такую конфигурацию, при которой итоги будут включать скрытые значения только на определенном уровне и на вышележащих уровнях.

Действия

Действия позволяют создателю куба связывать информацию с фрагментами метаданных куба, к которым пользователь имеет доступ. К примеру, можно привязать к каждому члену размерности клиентов свой URL, который будет запускаться, если кто-либо обращается к определенному заказчику в этой размерности. Этот URL откроет отчет в сети Web, в котором хранится более подробная информация о выбранном заказчике. В приложении OLAP этот отчет можно оформить в виде контекстного меню или в виде значка, размещаемого рядом с именем клиента при выдаче на экран результатов обработки запросов OLAP. Представьте себе сценарий, в котором пользователь OLAP запускает запрос с целью получить сведения о 10 клиентах, делавших самые значительные покупки в течение нескольких прошедших кварталов. Предположим, он замечает, что в последнем квартале в этой десятке появилось новое лицо. Этому пользователю было бы удобно щелкнуть правой кнопкой мыши на имени отмеченного нового клиента и выбрать из контекстного меню пункт, соответствующий получению подробной информации о клиенте. При этом приложение OLAP автоматически запустит Web-браузер с отчетом, содержащим сведения о заказчике. Поскольку действия определяются прямо в кубе OLAP, как показано на экране 4, их можно вызывать из любого клиентского приложения, а изменения вносить только в одном месте. Действия в состоянии сделать гораздо больше, чем просто запустить URL. Они позволяют запустить команду для вызова другого приложения в рамках предприятия, а также выполнить другую команду MDX, которая выведет на экран связанную с рассматриваемым вопросом информацию из куба.

Сквозная детализация

Случалось ли вам когда-нибудь, просматривая данные в кубе OLAP, сталкиваться с тем, что, спустившись по уровням детализации до самых листьев, вы все же не можете получить необходимую информацию? Предположим в качестве примера, что вы просматриваете сведения о продажах за прошлый месяц и, требуя все более подробные данные, доходите до конкретного продавца, товара и заказчика. Однако вам этого недостаточно, хотелось бы получить детальную информацию о транзакциях, которые были просуммированы для подсчета общего объема продаж за месяц, помещенного в рассматриваемую ячейку куба. В этом вам поможет сквозная детализация (drillthrough). Теперь при помощи OLAP Manager можно провести сквозную детализацию куба и выйти на фактографическую таблицу, лежащую в основе схемы звезды. На экране 5 показано, как производится выбор столбцов этой таблицы, которые должны быть показаны пользователю. Сквозная детализация выполняется при помощи нового оператора MDX, который содержит координаты ячейки в кубе и при исполнении возвращает набор строк с подробными сведениями о транзакции.

Analysis Services содержит множество других возможностей, о которых я не рассказал в данной статье. К ним относятся, например, те функции, которые вошли в дополнительный набор OLAP (Add-in Kit), включая возможности архивирования и восстанавления кубов, а также создания вычисляемых членов в виртуальном кубе. Теперь они встроены в OLAP Manager. Кроме того, средства вращения таблиц, PivotTable, сейчас могут осуществлять связь с сервером OLAP по протоколу HTTP, если в конфигурации коммуникационного сервера корпорации Microsoft, Internet Information Server (IIS), была предусмотрена специальная страница ASP. При этом удаленные пользователи получат доступ к серверу OLAP из Internet. Я планирую посвятить этим вопросам серию статей в следующих выпусках журнала.

Рас Уитни rwhitney@knosysinc.com возглавляет исследовательское отделение в компании Knosys, руководит разработкой клиентского инструментария OLAP. Входит в совет директоров компаний Knosys и Distributed Database Consulting (DDBC).

ПРИЛОЖЕНИЕ 1

Как много стандартов, хороших и разных

Программные интерфейсы получили столь широкое распространение в силу необходимости доступа к источникам данных с платформ Windows. Ниже приведена краткая характеристика некоторых наиболее популярных стандартов. При включении примеров кода я пользуюсь стандартом ADO-MD (ActiveX Data Object, Multi-Dimensional).

OLE DB

Высокопроизводительный интерфейс для реляционных источников данных, базирующийся на СОМ.

ADO (ActiveX Data Object)

Основанный на СОМ интерфейс доступа к данным, который поддерживает языки написания сценариев, такие как VBScript. ADO образует архитектурный слой, располагающийся над OLE DB. Этот интерфейс СОМ пользуется наибольшей популярностью среди программистов.

OLE DB для OLAP

Расширение OLE DB для доступа к многомерным источникам данных OLAP. Этот интерфейс для приложений поддерживает запросы MDX и позволяет получать в ответ на них многомерные результирующие наборы данных. Разработчики Microsoft планируют в SQL Server 2000 расширить OLE DB для OLAP для обеспечения исследования данных.

ADO-MD (ActiveX Data Object, Multi-Dimensional)

Расширение ADO для доступа к многомерным источникам данных OLAP. Этот интерфейс поддерживает языки написания сценариев, такие как VBScript. Он образует слой API поверх слоя OLE DB для OLAP.

OLE DB для исследования данных, (Data Mining, DM)

Подобно OLE DB для OLAP, OLE DB для DM представляет собой расширение стандартного интерфейса доступа к данным OLE DB для применения в исследовании данных реляционных источников.

ПРИЛОЖЕНИЕ 2.

Задача MDX

Написать запрос MDX, который возвращал бы три наиболее успешных результата для каждого штата США за 1997 год. Отформатировать ответ так, чтобы единственным столбцом был 1997 год, а штаты располагались в строках, причем в каждую строку должны быть встроены три лучших результата для этого штата.