Введение в SQL Server 2000 Analysis Services: Создание первого куба

ПУБЛИКАЦИИ  

По материалам статьи William Pearson: Introduction to SQL Server 2000 Analysis Services: Creating Our First Cube

Введение в Analysis Manager
Установка базы данных и источника данных
Проектирование куба
Выбор таблицы фактов и мер для куба
Создание многомерного куба: Определение значимых перспектив куба
Создание измерений в схеме звезда: Одна таблица измерений
Создание измерения по схеме - снежинка: Несколько связанных таблиц измерений
Добавление измерений времени
Сохранение разработанной модели куба
Проектирование хранилища и процессинг куба
Навигация куба

Это первая статья новой серии: Introduction to MSSQL Server 2000 Analysis Services, которая должна помочь новичкам быстро освоить эту интересную тему. Серия составлена так, чтобы показать практические возможности основных принципов MS SQL Server 2000 Analysis Services (для простоты "Analysis Services"); и нашей первой задачей будет создание простых многомерных OLAP кубов, которые мы постепенно будем снабжать более богатыми возможностями, подобранными так, чтобы они максимально были приближены к реальным задачам.
Изучив в первой статье способы использования стандартных мастеров Analysis Services, мы перейдём в последующих статьях к более широким понятиям, создав набор "реальных" OLAP кубов, каждый из которых будет отдельным проектом, и мы получим фонд решений, который будет помогать Вам решать собственные задачи анализа. В статьях этой серии будет описано использование измерений, как части компоновки куба, с особым акцентом на измерения во времени и родительские/дочерние измерения. По мере последовательного рассмотрения основных компонент Analysis Services и многомерных кубов, мы также будем рассматривать примеры, которым Вы можете найти применение в Ваши собственных информационных системах.
В этой статье мы рассмотрим:

  • Подготовка Analysis Services и его окружения для моделирования куба, который мы будем проектировать;
  • Создание основной модели куба;
  • Разработка дизайна измерений и другие шаги по созданию куба;
  • Сохранение модели;
  • Разработка хранилища для нашего куба;
  • Процессинг куба;
  • Краткий обзор основных возможностей просмотра куба.

[В начало]

Введение в Analysis Manager

Когда мы устанавливали MSSQL 2000 Analysis Services, также был установлен Analysis Manager, как инструмент для администрирования Analysis Server. Как и Microsoft SQL Server Enterprise Manager, интерфейс Analysis Manager является основной утилитой для администрирования OLAP. Дерево объектов расположено в левой области окна области управления, и на ней видна привычная иерархическая структура, которая напоминает Windows Explorer.
Чтобы запустить Analysis Manager, нажмите кнопку Start на рабочем столе, и в группе Programs выберите группу Microsoft SQL Server. В этой группе Вы увидите группу Analysis Services, в которой нужно нажать на Analysis Manager (путь к папке расположения этой утилиты может отличаться в зависимости от сделанных при инсталляции настроек).
С левой стороны рабочего окна Analysis Manager видны все Analysis-серверы, установленные в Вашем окружении. Пример снимка экрана, показанный ниже (Иллюстрация 1), демонстрирует только один сервер (MOTHER), в том виде, в каком он представлен на персональном компьютере автора. Имя Analysis-сервера автоматически поучается у проинсталлированного на компьютере MSSQL Server 2000, и обычно соответствует имени компьютера на котором он запущен, если в течение инсталляции MSSQL Server 2000 были приняты значения по умолчанию. Автор будет использовать показанный на иллюстрации Analysis-сервер для большинства примеров в этой серии статей.


Иллюстрация 1: Начальный вид консоли Analysis Manager

[В начало]

Установка базы данных и источника данных

Прежде, чем мы начнём проектировать новый куб, мы должны установить базу данных. В терминах Analysis Manager, мы должны установить базу данных для OLAP. База данных для OLAP, которую мы создадим, объединяет кубы, роли, источники данных, совместно используемые измерения и другие объекты, которые мы рассмотрим в следующих статьях серии. Мы назовем нашу OLAP базу данных: MyFirstCube (будьте осторожны, т.к. Вы после этого не сможете переименовать базу данных с помощью консоли Analysis Services), для чего, нажмите правую кнопку мыши на имени сервера в левой области консоли. Имейте в виду, что в качестве других объектов базы данных могут быть несколько кубов с одним источником данных. После установки базы данных, мы привяжем к ней источник данных, что нужно сделать до создания нашего первого куба.
Нажмите правую кнопку мыши на имени Analysis-сервера (показанном выше как MOTHER). Как показано ниже на Иллюстрации 2, появится диалоговое окно, и мы должны написать в поле Database Name: MyFirstCube, а также краткое описание, которое могло бы помочь пользователю понять назначение базы данных. Давайте напишем просто: "Initial exploration of cube creation in MSSQL Server 2000 Analysis Services", хоть это и не является обязательным действием.


Иллюстрация 2: Диалоговое окно ввода имени базы данных

Нажмите OK, и обратите внимание на то, что база MyFirstCube появилась слева сразу с заготовленными пустыми папками объектов. Мы должны обеспечить подключение к источнику данных, из которого нужно получать информацию. Это будет для Вас простым делом, если Вы когда-либо имели дело с источниками данных в Windows, в противном случае, мы сделаем это вместе и очень быстро. Источник данных должен быть доступен через OLE DB провайдера, варианты провайдеров можно выбрать из списка, по умолчанию обычно предлагается Microsoft OLE DB Provider for ODBC Drivers, применимый для последних версий СУБД, поддерживающих OLE DB.
И так, Мы должны развернуть папку базы данных MyFirstCube, (нажав по значок [+], расположенный слева от папки), потом нажать правую кнопку на папке с именем Data Sources, которая расположена в дереве объектов MyFirstCube, и в выпадающем меню выбрать New Data Source.
После этого, Вы увидите диалоговое окно Data Link Properties, разделённое на насколько закладок: Provider, Connection, Advanced и All, как это показано на расположенной ниже Иллюстрации 3. Мы должны выбрать Microsoft Jet 4.0 OLE DB Provider (родной OLE DB провайдер для MS Access). Имейте в виду, что хотя в списке подключений присутствует несколько драйверов для ODBC, OLE DB драйверы обеспечивают лучшую производительность.


Иллюстрация 3: Окно Data Link Properties - закладка Provider

Исходя из основной задачи куба, состоящей в организации и хранении данных для анализа, становится очевидно, что куб должен от куда-нибудь получать данные (из таблицы фактов в схеме типа звезда хранилища/витрины данных). Нашим источником данных будет FoodMart2000.mdb, входящая в состав примеров Analysis Services.
Нажмите Next, для того, что бы перейти на закладку Connection. Нужно выбрать базу данных FoodMart2000.mdb, расположенную по умолчанию в папке [Install Directory]:\Program Files\Microsoft Analysis Services\Samples, нажав на кнопку с многоточием (...), как это показано на расположенной ниже Иллюстрации 5, и выбрав файл FoodMart2000.mdb. Выделив курсором FoodMart2000.mdb, нужно нажать на кнопку Open, и после этого Вы вернётесь на закладку Connection.


Иллюстрация 4: Окно Data Link Properties - закладка Connection


Иллюстрация 5: Выбор базы данных FoodMart 2000.mdb

Далее, оставив все другие настройки подключения без изменений (значения по умолчанию), мы можем проверить его, нажав кнопку Test Connection в нижнем правом угол закладки Connection. Мы должны получить подтверждение того, что источник был установлен правильно (как показано на Иллюстрации 6). Нажмите OK после успешного завершения проверки, а также нажмите OK в окне Microsoft Data Link.


Иллюстрация 6: Диалог проверки источника данных

После того, как Вы нажмёте кнопку OK на закладке Data Link Properties, закройте диалоговое окно Properties, и Вы увидите, что источник данных появился в дереве папки Data Sources, и, скорее всего, повторяет имя файла.
Вы можете сделать его имя более интуитивно понятным или просто покороче, для удобства использования. У Вас есть возможность довольно простого переименования имени источника данных, правда оно немного отличается от привычного метода переименования в Windows Explorer. Нажав правую кнопку мыши на только что созданном источнике, Вы увидите, что доступна только операция копирования. И так, нужно нажать правую кнопку мыши на нашем новом источнике данных, и выбрать пункт Copy. После этого щёлкнуть мышкой по папке Data Sources (что бы она стала выделенной), и потом нажать правую кнопку мыши на папке базы данных MyFirstCube, которую мы создали ранее. Далее, Вы должны выбрать пункт Paste из появившегося меню, после чего Analysis Services должен выдать сообщение о том, что был обнаружен дубликат источника данных, и запросить у Вас изменения его имени для поддержки их уникальности. Введите в появившемся диалоговом окне в качестве нового имени: MyFoodMart (как это показано на Иллюстрации 7).


Иллюстрация 7: Изменение имени куба переименованием

Диалоговое окно Duplicate Name можно использовать для переименования, и, после нажатия кнопки OK, будет добавлен новый источник данных. Нам остаётся только удалить первый из созданных источников данных, нажать на нём правую кнопку мыши и выбрать Delete, а затем нажать кнопку Yes, что приведёт к его удалению.
Теперь у нас есть база данных для OLAP и привязанный к ней источник данных. Далее, в следующей главе будет описан Cube Wizard и сам процесс проектирования нашего простого куба.

[В начало]

Проектирование куба

Для разработки куба, сначала нужно определить меры измерений - количественные значения, выступающие в качестве индикаторов бизнес-функций базы данных, которую мы хотим анализировать/исследовать. Использование мер "фактов", таких как доходы с продаж или расходы/затраты и показателей бюджетных/плановых или прогнозируемых значений, позволяет успешно анализировать эффективность бизнеса.
Кроме того, меры анализируются в разрезе категорий измерений куба. Измерения задают перспективы или представления в рамках уместного для них контекста и не допустимых значений. Самый нижний уровень детализации данных, которые обычно выбираются в качестве мер, находится непосредственно в реляционных таблицах фактов. В то время как операционные данные часто берутся из архивов, самым распространённым способом управления реляционными данными для многомерных бизнес отчётов сегодня является схема хранилища типа – звезда, построенная на основе схемы витрины данных или на аналогичных типах хранилищ. Схема – звезда, в её самой простой форме, состоит из одной таблицы фактов, связанной с множеством таблиц измерений общим ключом или отдельным ключом для каждой пары связанных таблиц. В рамках этой серии статей о Analysis Services мы не будем рассматривать варианты возможных изменений простой схемы звезды и поэтому наш первый куб будет иметь только одну таблицу фактов, с упрощённым ранжированием измерений, выбранных для анализа мер.
Наша следующая цель состоит в том, чтобы выбрать несколько мер из имеющейся таблицы фактов нашего источника данных, а также предусмотреть измерения, которые желательно зафиксировать. Первое измерение, которое практически всегда является полезным, это измерение времени. Для иллюстрации дизайна и конструкции простого куба, мы определим измерение времени и несколько других измерений. Что бы упростить эту задачу, давайте воспользуемся мастером Analysis Services Cube Wizard.

[В начало]

Выбор таблицы фактов и мер для куба

Cube Wizard сначала предлагает выбрать таблицу фактов и, как только мы укажем эту таблицу, он предложит выбрать меры или числовые значения, которые наш куб будет суммировать. Дизайн куба выполняется в несколько шагов.
Для запуска Cube Wizard, нажмите правую кнопку мыши на папке кубов, которая расположена в дереве базы данных MyFirstCube, созданную нами ранее. Нужно выбрать из выпадающего меню пункт New Cube, после чего мастер откроет диалоговое окно Cube Wizard Welcome, как это показано на Иллюстрации 8 (которое мы можем пропустить, оставив не помеченным чек-бокс в нижней части окна).


Иллюстрация 8: Окно Cube Wizard Welcome

После того, как Вы нажмёте Next, будет показан список таблиц нашего недавно установленного источника данных MyFoodMart, из которого нужно выбрать таблицу sales_fact_1998, как это показано ниже, на Иллюстрации 9, и где можно увидеть список полей этой таблицы.


Иллюстрация 9: Выбор таблицы фактов

Для того, что бы убедиться в верности сделанного выбора, можно посмотреть реальные данные, нажав кнопку Browse Data..., как это изображено на Иллюстрации 10. После выбора таблицы, нажмите Next, и будет открыто диалоговое окно, в котором предлагается выбрать имеющиеся меры, которые мы хотим включить в дизайн куба.


Иллюстрация 10: Просмотр данных таблицы фактов

Для нашего простого примера, давайте выберем меры: store_sales, store_cost и unit_sales, как это показано на Иллюстрации 11. Закончив определение мер, нажимаем Next, и мастер перейдёт к стадии выбора измерений. На этой стадии происходит выбор значения, которые должны суммироваться в кубе, после чего мы должны указать, какие измерения мы хотим использовать в качестве перспектив или представлений наших значений/мер.


Иллюстрация 11: Выбор мер с помощью Cube Wizard

[В начало]

Создание многомерного куба: Определение значимых перспектив куба

Каждое из содержащих окончание _id полей, которые мы видели в предыдущем диалоговом окне, представляло измерение в виде ключевых полей, по которым можно звездой связать таблицы измерений с таблицей фактов MyFoodMart. Построенные на этих связях объединения (JOIN) дают нам возможность более детально рассмотреть измерения и понять, что в действительности, они действуют как ссылки между таблицей фактов и измерениями. Более глубокие рассуждения на эту спорную тему, а также о понятии реляционного окружения, физических атрибут и возможностях объединения не входят в рамки этой серии статей. Нам будет достаточно того, что мы имеем возможность выбора из существующих измерений, или даже можем создавать новые, что даёт нам достаточно гибкости в рамках стандартных операций Cube Wizard, а если точнее, в рамках вспомогательного мастера Dimension Wizard.
В диалоговом окне Select Dimensions, которое откроется после нажатия кнопки Next на шаге выбора мер (Иллюстрация 11), нужно нажать кнопку New Dimension, как показано ниже на Иллюстрации 12. Это приведёт к запуску Dimension Wizard (см. Иллюстрацию 13), в котором мы можем пропустить окно Welcome, и приступить к выбору схемы в следующем окне мастера.


Иллюстрация 12: Нажмите кнопку New Dimension для запуска Dimension Wizard


Иллюстрация 13: Окно Welcome мастера Dimension Wizard

[В начало]

Создание измерений в схеме звезда: Одна таблица измерений

Нажимайте Next, пока не попадёте в диалоговое окно, в котором запрашивается вид создаваемого измерения. Важно знать, что для каждого из пяти возможных вариантов внизу будет отображаться контекстно-зависимая информация описания. Для наших целей подойдёт предлагаемая по умолчанию схема звезды, как показано на Иллюстрации 14.


Иллюстрация 14: Dimension Wizard предлагает 5 вариантов измерений

Если теперь нажать кнопку Next, будет открыто окно выбора таблиц измерений Select the Dimension Table, в котором мы должны выбрать таблицу Region. Несколько атрибут для измерения Region можно увидеть в правой части окна, как это показано на Иллюстрации 15, и, как и при выборе таблицы фактов, Вы можете убедиться в правильности сделанного выбора, просматривая реальные данные после нажатия кнопки Browse Data....


Иллюстрация 15: Выбор таблицы Region в качестве первого измерения

Нажмите кнопку Next после выбора первого измерения, и тогда мастер спросит у Вас, какой уровень у выбранного измерения, если такие уровни существуют. Как Вы видите, возможно несколько иерархий уровней, которые могли бы представлять интерес для измерения Region. Мы выберем пять уровней для нашего измерения: sales_country, sales_region, sales_state_province, sales_district и sales_city, и ранжируем их в таком порядке, что бы реализовать логическую иерархию, удобную для формирования отчётности, как это показано ниже на Иллюстрации 16.


Иллюстрация 16: Выбор уровней для измерения: sales_country, sales_region, sales_state_province, sales_district, и sales_city

Ранжирование в логическую иерархию может быть не простой задачей, т.к. для этого необходимо хорошее знание данных. В нашем случае, Вы можете быть не уверены в том, какой уровень выше, районы или области (в тестовых данных есть районы, которые меньше областей, и они должны быть подмножеством последних). На выручку придёт мастер, который предупредит нас, что такая ранжировка уровней не является самой логичной, и выдаст рекомендации по более удачному ранжированию, как это показано на Иллюстрации 17. Давайте последуем этому совету, и откажемся от пересортировки, нажав кнопку Yes. После чего, мастер выполнить ранжирование уровней, которое теперь кажется наиболее логичным (меньшие внутри больших, и от вершины вниз).


Иллюстрация 17: Сообщение Dimension Wizard о потенциальных логических ошибках

После возвращения в окно Dimension Selection, нажмите Next, что бы перейти в диалоговое окно Specification of Member Keys (см. Иллюстрацию 18), в котором выполняются действия, выходящие за рамки этой статьи о создании простого куба. Перейдя в окно Advanced Options (Иллюстрация 19), которое будет рассмотрено позже, мы выберем предложенные по умолчанию установки.


Иллюстрация 18: Окно Specification of Member Keys


Иллюстрация 19: Окно Advanced Options мастера Dimension Wizard

На этом мы закончим работу с мастером Dimension Wizard, в котором мы довольно просто определили измерение "Region". Используйте значок "+", расположенный слева от верхнего уровня дерева измерений, чтобы раскрыть список имеющихся уровней и просмотреть их иерархию, которая будет создана (а заодно проверить текущий их дизайн), как это показано на Иллюстрации 20. Оставив остальные настройки в значения по умолчанию, нажмите кнопку Finish.


Иллюстрация 20: Окно завершения работы мастера Dimension Wizard

После этого, мы вернёмся в Cube Wizard, где Вы увидите, что Region появится в списке Cube Dimensions, что продемонстрировано на Иллюстрации 21.


Иллюстрация 21: Список измерений в мастере Cube Wizard

[В начало]

Создание измерения по схеме - снежинка: Несколько связанных таблиц измерений

Так как по ключу product_id таблица фактов связана с несколькими таблицами измерений товаров, содержащих поля, по которым определяются соответствующие уровни иерархии измерений, мы сталкиваемся с необходимостью рассмотрения более сложной схемы измерений - снежинки. За исключением описания объединений таблиц, и некоторых дополнительных шагов мастера, Dimension Wizard поможет нам также просто и эффективно создавать более сложные схемы измерений, чем рассмотренная ранее схема - звезда. Для того, что бы смоделировать схему измерений - снежинка, в окне списка измерений мастера Cube Wizard нажмите New Dimension (там, где мы остановились в предыдущем примере). Потом, в окне Welcome Dimension Wizard, нажмите кнопку Next и в открывшемся окне Choose How You Want to Create the Dimension выберете схему Snowflake Schema, как это показано ниже, на Иллюстрации 22. Ознакомьтесь с дополнительной информацией об этой схеме в расположенной внизу области Description, и опять нажмите кнопку Next.


Иллюстрация 22: Выбор схемы - снежинка

Нужно выбрать таблицы product и product_class, как это показано на Иллюстрации 23, а затем нажмите Next, чтобы перейти к диалоговому окну Create and Edit Joins, в котором Вы увидите выбранные нами и реально существующие отношения между таблицами.


Иллюстрация 23: Выбор product и product_class


Иллюстрация 24: Окно Create and Edit Joins, где можно просматривать и редактировать связи между таблицами

Объединение этих двух таблиц, которые мы выбрали, основано на связи по полю product_class_id, как видно на Иллюстрации 24. Соответствие типов данных и другие ограничения должны быть рассмотрены на этом шаге, иначе, Вы почти наверняка потом столкнётесь с проблемами, но в нашем простом случае, представленное на иллюстрации объединение вполне правомерно. Для получения подробной информации об удалении/создании новых объединений или о критериях построения правильных связей, обратитесь к разделу Analysis Services в MSSQL Server Reference Library. Нажмите кнопку Next, чтобы перейти к следующему шагу мастера. В следующем диалоговом окне Мы снова выбираем уровни для измерений, и если мы расположим уровни в не правильном порядке, будет выдано предупреждение. Как показано на Иллюстрация 25, Мы выбираем уровни от наиболее общих к более детальным, сверху вниз: product_category, product_subcategory и brand_name.


Иллюстрация 25

Указав иерархию уровней, нажмите кнопку Next, и потом пропустите не критичные для нас окна Specify Member Key Columns и Advanced Options.
Наконец, когда Вы попадёте в диалоговое окно Finish ... , введите имя Product в поле Dimension Name, оставим всё остальное в значениях по умолчанию, как это показано на Иллюстрации 26.


Иллюстрация 26: Завершение создания измерения Product

После нажатия кнопки Finish, Вы снова попадёте в диалоговое окно Cube Wizard (Иллюстрация 27), и мы видим, что теперь измерение Product также находиться в списке Cube Dimensions.


Иллюстрация 27: Измерение Product в списке существующих измерений

[В начало]

Добавление измерений времени

Теперь мы сосредоточимся на рассмотрении самых распространённых измерений - измерений времени. Обычно автор начинает добавление измерений именно с измерений времени, поскольку они применимы практически к каждому кубу (время важно практически во всех финансовых и других бизнес - системах), и мы включим их в наш первый куб, рассмотрев особенности их использования.
Для того, чтобы сделать это, нужно вернуться назад, в диалоговое окно Select the Dimensions Table мастера Dimension Wizard, что осуществляется нажатием кнопки New Dimension. Вы снова побываете в окне Welcome, нажав в нём кнопку Next, а в следующем окне Choose how you want to create the dimension, выбрав схему - Звезда, тоже нужно нажать Next. Попав после этого в окно Select the dimension table, нужно выбрать таблицу для измерения времени, как показано на Иллюстрации 28.


Иллюстрация 28

В используемой нами для примеров базе данных FoodMart 2000 уже существует таблица для измерений времени, это: time_by_day. На практике часто измерение времени получается из столбца в таблице фактов, однако, они могут браться и из хранилища данных, как мы это видим в нашем примере, где для связи с таблицей фактов используется ключ time_id. Выбрав таблицу time_by_day, нажмите кнопку Next и перейдите к выбору типа измерения. В диалоговом окне Dimension Wizard, где осуществляется выбора типа измерения, необходимо указать столбец date/time из имеющихся в выбранной таблице, который подходит для наших целей. Если есть несколько таких столбцов, необходимо выбрать один из них, который будет использован, в нашем случае, для измерения дат. Поскольку в выбранной нами таблице к типам измерения времени относится только один столбец, он предлагается по умолчанию. Поэтому, Вам в этом окне достаточно только выбрать тип измерения Time dimension и оставить предлагаемую для дат колонку the_date, как это показано ниже (Иллюстрация 29).


Иллюстрация 29: Окно Select the Dimension Type, выбор типа измерения - Time Dimension

Нажав кнопку Next, вы перейдёте в окно Create the time dimension levels. Dimension Wizard предлагает несколько типовых вариантов иерархии дат, из которых мы можем выбрать такой, который позволит сократить время построения нашего первого куба. Кроме того, имеется возможность выбора начальных: дня, месяца и года, что особенно ценно при построении кубов для организаций, имеющих годовые бюджеты. Для простоты, нам подойдёт предлагаемое по умолчанию значение, и мы выберем бюджет на год, совпадающий с календарным годом (с первым января в качестве даты его начала). Это показано на Иллюстрации 30, представленной ниже.


Иллюстрация 30: Окно Create the Time Dimension Levels

Поскольку мастер не позволяет нам самостоятельно изменять уровни измерения дат, мы просто нажмём кнопку Next и перейдём в окно Advanced Options. Это окно тоже можно пропустить, сразу же нажав на кнопку Next. В должны попасть в последнее окно Finish the Dimension Wizard, в котором вписать имя нашего нового измерения: Time. Обратите внимание, что Мастер уже создал иерархию измерения по времени (год, квартал, месяц и день), и Вы можете развернуть для просмотра узлы этой иерархии в области Preview, как это показано на Иллюстрации 31.


Иллюстрация 31

После нажатия кнопки Finish, Вы вернётесь в Cube Wizard, где увидите, что новое измерение добавлено в списке Cube Dimensions к уже имеющимся, созданным нами ранее измерениям, как это показано на Иллюстрации 32. Теперь мы достигли той стадии, когда наша простая модель имеет достаточно измерений для анализа средствами Cube Wizard. Мы определили типовой набор измерений, и мы указали в мастере, где можно найти значения или меры, которые мы хотим включить в куб (имеется ввиду таблица фактов, из которой берутся меры).


Иллюстрация 32

[В начало]

Сохранение разработанной модели куба

Нажмите в Cube Wizard кнопку Next, после чего Вы увидите представленное ниже сообщение (Иллюстрация 33).


Иллюстрация 33.

Поскольку нам нужно посчитать строки для модели куба, нажмите кнопку Yes, чтобы продолжить работу. Следующее сообщение, которое Вы увидите, сообщение об ошибке (Иллюстрация 34), которое неизбежно появится, если была выполнена вся последовательность шагов, которые автор представил в этой статье. Дело в том, что автор как раз и намеривался проиллюстрировать наиболее типичную у новичков ошибку связей при разработке архитектуры куба.


Иллюстрация 34: Сообщение об ошибке.

Проблемы возникают тогда, когда мастер пытается обработать куб и не находит явных связей (одноимённых ключей у двух таблиц) между указанным измерением и таблицей фактов. Тогда он предупреждает о том, что необходимо определить связи вручную, чтобы его работа могла быть продолжена. Мы так и поступим, но вначале давайте сохраним результаты нашей работы.
Для этого, нужно нажать в окне последнего сообщения кнопку OK, после чего мастер откроет диалоговое окно Finish Cube Wizard, которое показано на Иллюстрации 35. Нужно ввести имя куба (для завершения работы мастера и для сохранения созданной нами модели). Сохранение модели куба произойдёт после нажатия кнопки Finish, после чего мы попадём в окно Cube Editor.


Иллюстрация 35: Диалоговое окно Finish Cube Wizard

В окне Cube Editor мы можем добавить отсутствующие связи, о которых нас предупреждало сообщение об ошибках при сохранении куба (см. Иллюстрацию 34). Нам понадобится добавить отсутствующие связи между пока ещё не связанной ни с чем таблицей Region и таблицей фактов sales_fact_1998, которые показаны вместе с остальными на Иллюстрации 36.


Иллюстрация 36: Окно Cube Editor - где мы добавляем необходимые связи

Обычно добавить связи не сложно. Но для этого мы должны иметь в обеих таблицах соответствующие друг другу ключи (тогда это действительно будет просто), чтобы обеспечить необходимую ассоциацию между связываемыми таблицами. Более детальное рассмотрение показывает, что у таблиц sales_fact_1998 и Region нет никаких общих ключей. Поэтому, мы должны будем соорудить некий мостик или, проще говоря, промежуточную таблицу, чтобы поддержать логическую ассоциацию.
Чтобы это сделать, нужно добавить новую таблицу к уже имеющимся, и в этом нам поможет кнопка Insert Table, которая показана на Иллюстрации 37. После её нажатия, появится диалоговое окно Select Tables, которое ранее нам уже встречалось, и в котором мы должны выбрать из базы необходимую нам таблицу Store (или при необходимости создать новую таблицу, нажав кнопку Add).


Иллюстрация 37: Добавление таблиц в куб

Далее, закрываем окно Select Tables, которое показано на Иллюстрации 38 (его можно оставить открытым, если нужно добавить/создать несколько таблиц). После этого мы видим, что рядом с имевшимися таблицами появилась таблица Store (см. Иллюстрацию 39), с помощью которой мы обеспечим связь между sales_fact_1998 и Region (мастер автоматически распознал необходимую связь между Region и Store). Желательно всегда проверять правильность прорисованных мастером связей, но в нашем случае ассоциация region_id конечно же верна.


Иллюстрация 38: Окно Select Tables


Иллюстрация 39: Законченная схема связей с добавленной таблицей Store

В довершении к добавлению промежуточной таблицы, мы должны связать её с таблицей фактов sales_fact_1998. Для этого, нужно определить наличие пары соответствующих ключей (это просто, т.к. обе таблицы содержат поле store_id), потом выделить мышью поле store_id в таблице Store и переместить указатель на поле store_id в таблице sales_fact_1998, нажав на нём левую кнопку мыши, после чего между таблицами будет протянута линия связи. Если Вы случайно свяжете два неправильных поля, просто удалите неверную связь, выделив её нажатием правой кнопки мыши и выбрав пункт Remove из выпадающего меню. После выбора этого пункта, схема вернётся к предыдущему состоянию.
Закончив схему, можно закрыть Cube Editor, выбрав пункт Exit в меню File. Вы получите запрос на сохранение куба после изменений, который нужно подтвердить, нажав кнопку Yes. Следующим шагом будет запрошена опция оптимизации хранилища, с выводом на экран диалогового окна Design Storage. На этом шаге можно просто сохранить результаты работы и возвратиться к процессингу позже, или приступить к выбору оптимального размера куба, что мы и сделаем, нажав кнопку Yes.

[В начало]

Проектирование хранилища и процессинг куба

Analysis Services предлагает несколько вариантов хранилищ и агрегации данных для нашего первого куба:

• Multidimensional OLAP (MOLAP)
• Relational OLAP (ROLAP)
• Hybrid OLAP (HOLAP)

Завершив разработку структуры куба, мы должны выбрать один из предлагаемых типов хранилища и указать условия агрегации, или сделать предварительный расчёт для получения оптимального соотношения производительности запросов и эффективности куба. Далее, нам необходимо будет выполнить процессинг куба, в процессе которого будет выполнена загрузка данных из выбранного нами источника и будут сделаны все необходимые вычисления, которые заложены в используемых кубом командах агрегации.
Чтобы спроектировать хранилище, мы будем использовать Storage Design Wizard. Если нажать кнопку Yes в последнем диалоговом окне, на котором мы остановились в предыдущем разделе этой статьи, мы как раз и попадём в Welcome окно мастера Storage Design Wizard, показанное ниже на Иллюстрации 40. Если до этого Вы уже сохранили куб и завершили работу с кубом на предыдущем шаге, можно вызвать Storage Design Wizard, запустив снова Analysis Manager и нажав правую кнопку мыши на MyFirstCube, и после чего выбрать из выпадающего меню пункт Design Storage. Этим путём Вы также попадёте в окно Welcome to the Design Storage.


Иллюстрация 40: Welcome to the Design Storage Wizard

После нажатия кнопки Next будет вызвано окно Select the Type of Data Storage, где присутствуют радио-кнопки для каждого из показанных ранее возможных режимов, а также их краткое описание (подробную информации по ним можно найти в Books Online и Reference Library). В качестве хранилища нам подойдёт значение по умолчанию - MOLAP, как это показано на Иллюстрации 41, и поэтому можно снова нажать кнопку Next.


Иллюстрация 41: Диалоговое окно Select the Type of Data Storage

Следующим окном будет Set Aggregation Options, где мы должны указать Analysis Services обеспечить производительность работы с кубом на уровне 65% от максимально возможной, без учёта занимаемого кубом дискового пространства. Для этого нужно выбрать радио-кнопку Performance Gain Reaches и ввести число "65" в качестве процента от максимальной производительности, как это показано ниже на Иллюстрации 42. Как Вы можете видеть на следующей иллюстрации, это окно может помочь найти компромиссное решение между занимаемым кубом дисковым пространством и производительностью исполнения запросов к кубу.


Иллюстрация 42: Диалоговое окно Set Aggregation Options

После того, как Вы выберете наиболее подходящие для Вас параметры хранилища куба, нужно нажать кнопку Start и наблюдать процесс процессинга куба, как будет изменятся его размер и соответствующая ему производительность. Как Вы сможете увидеть, чем выше производительность, тем больше занимаемое кубом дисковое пространство. Изображение возможного графика распределения (который может отличаться от Вашего из-за разной информационной и аппаратной конфигурации системы) показано ниже на Иллюстрации 43.


Иллюстрация 43.

Далее, нажмите кнопку Next и Вы попадёте диалоговое окно Finish the Storage Design Wizard. В ответ на вопрос этого окна What do you want to do?, нужно отметить радио-кнопку Process Now, как это показано на Иллюстрации 44. Следующим шагом будет выполняться процессинг куба или его сохранение (если Вы решите запустить процессинг позже или собираетесь вернуться к разработке куба для внесения каких - либо изменений). Мы же выберем Process Now, и нажимаем кнопку Finish.


Иллюстрация 44: Диалоговое окно Finish the Storage Design Wizard

Окно Process, которое вы увидите следующим, позволяет контролировать процессинг куба по всем его стадиям, процессам и статистике работы, выводимой в нижней части окна. Когда процессинг закончится, Вы должны увидеть в нижней строке сообщение "Processing completed successfully", как это показано на Иллюстрации 45.
Это означает, что процессинг куба завершился без серьёзных ошибок и мы можем вернуться в консоль Analysis Manager, нажав на кнопку Close.


Иллюстрация 45: Ход процессинга куба

[В начало]

Навигация куба

После завершения процессинга, накопленные в кубе данные становятся доступны для анализа. Просматривать данные можно разными способами, но мы сейчас сосредоточимся на методе "slice and dice" и будем использовать drill-down (погружение), используя для этого Cube Browser. Существует много инструментов, пригодных для этих же целей и позволяющих работать с аналитическими данным, но Cube Browser нам интересен тем, что поставляется вместе с Analysis Services, и, являясь простым средством навигации, избавит Вас от необходимости использования дополнительного программного обеспечения.
К тому же, Cube Browser, сам по себе, является довольно полезным инструментом анализа, позволяющим не только просматривать данные в кубах, но и регулировать количество измерений, которые будут видимы (с помощью фильтрации). Он поддерживает опцию drill up (позволяющую подняться на более обобщённый и менее подробный уровень обзора) или drill down (которая наоборот позволяет видеть более подробные данные, позволяющие детализировать сводные значения). Эти возможности особенно полезны при проверке на уровне Analysis Services точности, полноты и эффективности всего дизайна куба, независимо от целей его создания.
Для того, что бы приступить к навигации в кубе, вернитесь в консоль Analysis Manager, где нужно развернуть источник данных MyFirstCube, а затем развернуть папку Cubes, в которой должен присутствовать MyFirstCube. Нажмите правую кнопку мыши на этом кубе, а затем выберете из всплывающего меню Browse Data. В результате, должен запуститься Cube Browser, который изображён на Иллюстрации 46. Вы должны увидеть в его первом окне одно измерение Product Category и две меры Store Sales и Store Cost. Если прокрутить окно вправо, можно увидеть ещё одно измерение Unit Sales, а сверху в Cube Browser будут видны два дополнительных измерения Region и Time.


Иллюстрация 46: Cube Browser, первое окно.

Вы можете изменить состав рассматриваемых в табличном виде измерений, перетаскивая их мышкой между верхним окном (дополнительных измерений) и нижней таблицей. Для этого, наведите, например, указатель мыши на измерение Region (которое сейчас должно быть в верхней части окна) и перетащите его в строку перед Product Category. Когда вы будете перемещать измерение, оно будет представляться в виде изображающей иерархию пиктограммы, видоизменяющейся по мере её перемещениями над представленными в табличном виде измерениями. Вам нужно наблюдать за появлением указателя в виде стрелки, который будет показывать текущее местоположение добавляемого измерения в существующей таблице, в нашем случае, оно должно расположиться над Region. Попробуйте самостоятельно переместить измерения так, что бы получился представленный на Иллюстрации 47 результат. Измерение Product должно заменить Region. Вы увидите агрегат Store Sales для каждой страны, а также связанные со странами Store Costs и Unit Sales. Обратите внимание, что расположенное Вами сверху измерение времени Time установлено в значение "All Time", из-за чего представленные в таблице меры относятся ко всей иерархии времён, заданных в дизайне нашего куба. Используя для начала обзора заданные по умолчанию значения измерений, установленные на самый высокий уровень итогов, мы можем всегда определить относительное местоположение каждого значения таблицы (перспектив куба) по имени колонки таблицы, расположенному в заголовке. Сделанные Вами настройки представления данных куба, при выходе из Cube Browser будут сохранены, т.ч. вы всегда можете вернуться к тому представлению, на котором остановились в прошлый раз.


Иллюстрация 47: Cube Browser

Далее, если нужно увидеть состав мер Sales и Unit в перспективе Product, т.е. развернуть таблицу на 90 градусов, просто перетащите мышью всю (изображаемую в виде кнопки) Product Category из левой колонки в область заголовка таблицы. При этом все Store-измерения автоматически переместятся в левую колонку, как это показано на Иллюстрации 48. Также обратите внимание, что столбец All Products остается после перемещения по-прежнему итоговым.


Иллюстрация 48

Для того, что бы отфильтровать данные по времени, нужно просто щёлкнуть мышью по полю справа от измерения Time и развернуть обозначенную значками иерархию вниз, до третьего квартала 1998 года, как это показано на Иллюстрации 49. Если выбрать значок Quarter 3, то мы увидим, что это значение будет теперь отображаться вместо All Time. Кроме того, после наложения фильтра видно, что значения мер в таблице стали другими, как это показано на Иллюстрации 50.


Иллюстрация 49: Выбор третьего квартала 1998 года.


Иллюстрация 50

Теперь давайте кратко рассмотрим операцию drill down, позволяющую перейти на более низкий уровень значений, которые являются агрегацией составляющих их величин. Для этого нужно просто дважды щёлкнуть мышкой по ячейке Product Category (как Вы видите, слева в этой ячейке изображён знак "+", который и указывает на возможность выполнения операции drill down), и Вы увидите, что drill down открыл ещё один уровень - Product Subcategory, изменив набор мер в таблице, добавив деление на подкатегории (см. Иллюстрацию 51).


Иллюстрация 51

Для того, что бы выполнить обратную операцию drill up, нужно просто повторно дважды щёлкнуть по ячейке Product Category. Обратите внимание также на то, что наличие ячеек категорий и подкатегорий очень похоже на разбиение измерений, которое мы рассматривали ранее, что помогает при навигации чётко представлять где мы находимся в иерархии drill down.
Можно углубляться операцией drill down и дальше, например, на уровни разных стран через Regions, Provinces, Districts и Cities, что бы достичь такого уровня анализа, который может быть наиболее полезным. Комбинируя различные методы навигации вверх и вниз иерархий совместно с комбинированием измерений "slice and dice" может реализовать сложную информационную взаимосвязь мер, что и является в анализе сущностью OLAP технологии. И Вы всегда можете с помощью операции drill up снова подняться на более высокий уровень представления данных, как это диктует ваша бизнес-логика.

Приглашаем Вас принять участие в обсуждении OLAP технологий и проблем реализации конкретных аналитических задач на форуме сайта SQL.RU: OLAP и DWH

[В начало]


Перевод Александра Гладченко  2004г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz