Использование MS SQL Server Analysis Services 2008 для построения хранилищ данных

Определение вычислений

Разбить на страницы
Показывать лекцию целиком

Теоретическое введение

Вычисление представляет собой многомерное выражение или сценарий, используемый для определения вычисляемого элемента, именованного набора или назначения с указанием области в кубе в службах SSAS. Вычисления позволяют добавлять объекты, определенные не данными куба, а выражениями, которые могут ссылаться на прочие части куба, другие кубы, или даже данные вне базы данных служб SSAS. Вычисления позволяют расширить возможности куба, увеличивая гибкость и производительность приложений бизнес-аналитики.

Вычисляемые элементы

Вычисляемый элемент представляет собой элемент, значение которого вычисляется в процессе выполнения при помощи многомерного выражения, которое задается во время определения вычисляемого элемента. Вычисляемый элемент доступен для приложений бизнес-аналитики, равно как и любой другой. Вычисляемые элементы не увеличивают размер куба, потому что в кубе хранятся только определения; значения вычисляются в памяти, когда возникает необходимость ответить на запрос.

Вычисляемые элементы можно определять для любого измерения, включая измерение мер. Вычисляемые элементы, созданные в измерении мер, называются вычисляемыми мерами.

Хотя вычисляемые элементы обычно основаны на данных, уже существующих в кубе, можно создавать сложные выражения, объединяя данные с арифметическими операторами, числами и функциями. Также можно воспользоваться функциями многомерных выражений, например LookupCube, чтобы получить доступ к данным других кубов базы данных служб SSAS. В состав служб SSAS входят библиотеки стандартизированных функций приложения Visual Studio, при этом можно использовать хранимые процедуры для извлечения данных из источника, отличного от текущей базы данных служб SSAS.

Например, предположим, что руководство судоходной компании хочет определить типы груза, наиболее выгодные с точки зрения перевозки, используя для этого показатель прибыли в расчете на единицу объема. Берется куб "Перевозки", содержащий измерения "Груз", "Флот" и "Время" и меры " Price_to_Ship " (Цена_перевозки), " Cost_to_Ship " (Стоимость_перевозки) и " Volume_in_Cubic_Meters " (Объем_в_кубических_метрах); однако в кубе нет меры для прибыльности. В кубе можно создать вычисляемый элемент как меру, именуемую "Прибыль_за_кубический_метр", путем объединения существующих мер в следующем выражении:

([Measures].[Price_to_Ship] - [Measures].[Cost_to_Ship]) /[Measures].[Volume_in_Cubic_Meters]

После создания вычисляемого элемента при следующем просмотре куба "Перевозки", мера "Прибыль_за_кубический_метр" появится вместе с другими мерами.

Именованные наборы

Именованный набор представляет собой многомерное выражение инструкции CREATE SET, возвращающее набор (множество) элементов измерения. Можно определять именованные наборы и сохранять их как часть определения куба, а также создавать именованные наборы в клиентских приложениях.

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

Именованные наборы упрощают запросы многомерных выражений и служат удобными псевдонимами для сложных регулярно используемых выражений наборов.

Например, можно определить именованный набор с именем "Крупные торговые посредники", содержащий набор элементов измерения "Торговые посредники", у которых имеется наибольшее число служащих. Тогда конечные пользователи смогут использовать именованный набор "Крупные торговые посредники" в запросах, а вы сможете использовать его, чтобы определить набор во вложенном кубе. Определения именованных наборов хранятся в кубах, но их значения существуют только в памяти. Чтобы создать именованный набор, можно воспользоваться командой "Создать именованный набор" на вкладке "Вычисления" конструктора кубов.

Команды сценариев

Команда сценария представляет собой сценарий многомерного выражения, включенный в состав определения куба. Команды сценария позволяют осуществлять практически любое действие, поддерживаемое многомерными выражениями в кубе, такие как отнесение вычисления только к части куба. В службах SSAS сценарии многомерных выражений можно применять как к кубу в целом, так и к отдельным его секциям в отдельных точках при выполнении сценария. Команда сценария по умолчанию, являющаяся инструкцией CALCULATE, заполняет ячейки в кубе статистическими данными, основанными на области по умолчанию.

Областью по умолчанию является весь куб, но можно определить более ограниченную область, известную как вложенный куб, а затем применить сценарий многомерных выражений только к этому конкретному пространству куба. Инструкция SCOPE определяет область всех последующих многомерных выражений и инструкций в пределах сценария вычислений до окончания или переопределения области. Затем используется инструкция THIS, чтобы применить многомерное выражение к текущей области. Можно использовать инструкцию BACK_COLOR, чтобы задать фоновый цвет ячеек в текущей области, что может быть полезно при отладке.

Например, можно использовать команду сценария для распределения между сотрудниками квот на продажи по времени и территории продаж на основе взвешенных значений продаж за предыдущий период времени.

Определение вычислений

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

На вкладке "Вычисления" можно добавить новые вычисления, а также просмотреть или изменить существующие вычисления в одном из следующих представлений в области "Выражения" вычисления:

  • Представление формы. В этом представлении отображаются выражения и свойства отдельной команды в графическом формате. При редактировании сценария многомерных выражений поле выражения занимает все представление формы.
  • Представление сценария. В этом представлении отображаются все сценарии вычислений в редакторе кода, что позволяет легко изменять сценарии вычислений. Если панель "Выражения" вычисления находится в представлении сценария, окно "Организатор сценариев" скрыто. Представление сценария поддерживает выделение кода цветом, сопоставление скобок, автоматическую подстановку, а также области кода многомерных выражений. Можно развернуть или свернуть области кода многомерных выражений, чтобы упростить редактирование.
  • Для добавления к кубу определенных вычислений также можно использовать мастер бизнес-аналитики. Например, с помощью этого мастера можно добавить к кубу логику операций со временем, то есть определить вычисляемые элементы для времязависимых расчетов, таких, как временные интервалы, скользящие средние или рост за период.

    Практические задания

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

    Определение вычисляемых элементов

    Определение статистических вычислений для физических мер

    Откройте конструктор кубов для куба Analysis Services Tutorial и перейдите на вкладку "Вычисления" (рисунок 11.1 )

    (рис 11.1) Вкладка "Вычисления" конструктора кубов

    Обратите внимание, что по умолчанию в областях "Выражения" вычисления и "Организатор сценариев" доступна команда CALCULATE. Эта команда указывает, что меры в кубе должны быть вычислены в соответствии со значениями свойства " AggregateFunction ". Значения мер обычно суммируются, но могут подсчитываться или статистически обрабатываться другим образом.

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". В области "Выражения" вычисления будет отображена новая форма, в которой следует задать свойства нового вычисляемого элемента. Новый элемент также отображается в области "Организатор сценариев" (рисунок 11.2 )

    (рис 11.2) Форма свойств нового вычисляемого элемента

    В поле "Имя" измените имя вычисляемой меры на [Итоговая сумма продаж]. Если имя вычисляемого элемента содержит пробелы, его необходимо заключать в квадратные скобки.

    Обратите внимание, что в списке "Родительская иерархия" по умолчанию новый вычисляемый элемент создается в измерении " Measures ". Вычисляемый элемент в измерении мер часто называют вычисляемой мерой.

    На вкладке "Метаданные" области "Средства вычисления" вкладки "Вычисления" последовательно раскройте узлы " Measures " и " Internet Sales ", чтобы просмотреть метаданные для группы мер " Internet Sales " (рисунок 11.3 )

    (рис 11.3) Метаданные для группы мер "Internet Sales"

    Элементы метаданных можно перетянуть из области "Средства вычисления" в поле "Выражение", а затем добавить операторы и другие элементы для создания многомерных выражений. Кроме того, многомерное выражение можно ввести непосредственно в поле "Выражение".

    Перетяните показатель " Internet Sales - Sales Amount " из вкладки "Метаданные" области "Средства вычисления" в поле "Выражение" области "Выражения" вычисления.

    В поле Выражение после [Measures]. [ Internet Sales - Sales Amount] введите знак плюс (+).

    На вкладке "Метаданные" панели "Средства вычисления" раскройте элемент " Reseller Sales " и перетащите показатель " Reseller Sales - Sales Amount " в поле "Выражение" панели "Выражения" вычисления после знака плюс (+) (рисунок 11.4 )

    (рис 11.4) Сконструированное выражение

    В списке "Строка форматирования" выберите " Currency ". В списке "Установленное поведение" установите флажки для показателей Продажи через Интернет - сумма продаж и Товарооборот посредников - сумма продаж и нажмите кнопку ОК (рисунок 11.5 )

    (рис 11.5) Указание параметров "Строка форматирования" и "Установленное поведение"

    Меры, указанные в списке "Установленное поведение", используются для разрешения запросов NON EMPTY в многомерных выражениях. Если в списке "Установленное поведение" указана одна или несколько мер, в службах SSAS вычисляемый элемент считается пустым, если все указанные меры пусты. Если значение свойства "Установленное поведение не указано", в службах SSAS проводится оценка вычисляемого элемента с целью определения, является ли он пустым.

    В области инструментов вкладки "Вычисления" нажмите кнопку "Представление сценария" и просмотрите сценарий расчета в области "Выражения вычисления" (рисунок 11.6 )

    (рис 11.6) Представление сценария

    Обратите внимание, что новое вычисление добавляется в исходное выражение CALCULATE. Вычисления разделены точкой с запятой. Кроме того, обратите внимание, что в начале сценария вычисления отображается комментарий. Рекомендуется добавлять комментарии в сценарий для групп вычислений, поскольку в дальнейшем они помогут другим разработчикам понимать сложные сценарии вычислений.

    Добавьте новую строку в сценарий вычисления после команды Calculate ; и перед добавленным сценарием вычислений, а затем введите на отдельной строке сценария следующий текст (рисунок 11.7 )

    /* Calculations to aggregate Internet Sales and Reseller Sales measures */

    (рис 11.7) Добавленная строка комментария

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление формы", убедитесь, что в области "Организатор сценариев" выбран показатель [Итоговая сумма продаж], и нажмите кнопку "Создать вычисляемый элемент".

    Измените имя нового вычисляемого элемента на [Общая стоимость продукции] и создайте следующее выражение в поле "Выражения":

    [Measures].[Internet Sales-Total Product Cost] + [Measures].[Reseller Sales-Total Product Cost]

    В списке "Строка форматирования" выберите " Currency ".

    В списке "Установленное поведение" установите флажки для показателей " Internet Sales-Total Product Cost " и " Reseller Sales-Total Product Cost " (рисунок 11.8 )

    (рис 11.8) Параметры вычисления [Общая стоимость продукции]

    Заданы два вычисляемых элемента, которые отображаются в области "Организатор сценариев" (рисунок 11.9 )

    (рис 11.9) Созданные вычисляемые элементы

    Эти вычисляемые элементы можно использовать в других вычислениях, если они будут впоследствии заданы в сценарии вычисления. Определение любого вычисляемого элемента можно просмотреть, выбрав его в области "Организатор сценариев". Оно отображается в области "Выражения" вычисления в представлении формы. Новые определенные вычисляемые элементы не отображаются в области "Средства вычисления", пока не будут развернуты. Вычисления не требуют обработки.

    Создание вычислений коэффициента валовой прибыли

    Убедитесь. что в области "Организатор сценариев" выбран показатель [Общая стоимость продукции] и нажмите кнопку "Создать вычисляемый элемент" на панели инструментов вкладки "Вычисления". В поле "Имя" измените имя новой вычисляемой меры на [Коэффициент валовой прибыли по продажам через Интернет]. В поле "Выражение" создайте следующее многомерное выражение:

    ([Measures].[Internet Sales-Sales Amount] - [Measures].[Internet Sales-Total Product Cost]) / [Measures].[Internet Sales-Sales Amount]

    В списке "Строка форматирования" выберите значение " Percent ".В списке "Установленное поведение" установите флажок для показателя " Internet Sales-Sales Amount " (рисунок 11.10 )

    (рис 11.10) Вычисляемая мера [Коэффициент валовой прибыли по продажам через Интернет]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". В поле "Имя" измените имя новой вычисляемой меры на [Коэффициент валовой прибыли по продажам через торгового посредника]. В поле "Выражение" создайте следующее многомерное выражение:

    ([Measures].[Reseller Sales-Sales Amount] - [Measures].[Reseller Sales-Total Product Cost]) / [Measures].[Reseller Sales-Sales Amount]

    В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажок для показателя " Reseller Sales-Sales Amount " (рисунок 11.11 )

    (рис 11.11) Вычисляемая мера [Коэффициент валовой прибыли по продажам через торгового посредника]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". В поле "Имя" измените имя вычисляемой меры на [Итоговый коэффициент валовой прибыли]. В поле "Выражение" создайте следующее многомерное выражение:

    ([Measures].[Итоговая сумма продаж] - [Measures].[Общая стоимость продукции]) / [Measures].[Итоговая сумма продаж]

    Обратите внимание, что этот вычисляемый элемент ссылается на другие вычисляемые элементы. Этот вычисляемый элемент является допустимым, поскольку он рассчитывается после вычисляемых элементов, на которые ссылается. В списке "Строка форматирования" выберите значение " Percent ". В списке Установленное поведение установите флажки для показателей " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount " (рисунок 11.12 )

    (рис 11.12) Вычисляемая мера [Итоговый коэффициент валовой прибыли]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление сценария" и просмотрите три вычисления, только что добавленные в сценарий вычисления.

    Добавьте новую строку в сценарий вычисления непосредственно перед вычислением [Коэффициент валовой прибыли по продажам через Интернет], а затем введите на следующей строке сценария приведенный ниже текст (рисунок 11.13 )

    /* Calculations to calculate gross profit margin */

    (рис 11.13) Представление сценария с добавленным комментарием

    Создание вычислений "Проценты от общего"

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление формы". В области "Организатор сценариев" выберите показатель [Итоговый коэффициент валовой прибыли] и нажмите кнопку "Создать вычисляемый элемент" на панели инструментов вкладки "Вычисления". Выбор последнего вычисляемого элемента в области "Организатор сценариев" перед нажатием кнопки "Создать вычисляемый элемент" гарантирует, что новый вычисляемый элемент будет добавлен в конец сценария. Сценарии выполняются в том порядке, в котором они отображаются в области "Организатор сценариев". Измените имя нового вычисляемого элемента на [Доля продаж через Интернет по всей номенклатуре продукции]. В поле "Выражение введите следующее выражение":

    Case
        When IsEmpty( [Measures].[Internet Sales-Sales Amount] ) 
        Then 0
        Else ( [Product].[Product Categories].CurrentMember,
               [Measures].[Internet Sales-Sales Amount]) /
             ( [Product].[Product Categories].[(All)].[All], 
               [Measures].[Internet Sales-Sales Amount] )
        End

    В этом многомерном выражении рассчитывается доля каждого из товаров в итоговом значении продаж через Интернет. Использование инструкции Case в сочетании с функцией IS EMPTY позволяет избежать ошибки деления на ноль в том случае, если по данному товару отсутствуют продажи. В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажок для показателя " Internet Sales - Sales Amount " (рисунок 11.14 )

    (рис 11.14) Вычисляемая мера [Доля продаж через Интернет по всей номенклатуре продукции]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". Измените имя нового вычисляемого элемента на [Доля товарооборота посредников по всей номенклатуре продукции]. В поле "Выражение" введите следующее выражение:

    Case
        When IsEmpty( [Measures].[Reseller Sales-Sales Amount] ) 
        Then 0
        Else ( [Product].[Product Categories].CurrentMember,
               [Measures].[Reseller Sales-Sales Amount]) /
             ( [Product].[Product Categories].[(All)].[All], 
               [Measures].[Reseller Sales-Sales Amount] )
        End

    В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажок для показателя " Reseller Sales - Sales Amount " (рисунок 11.15 )

    (рис 11.15) Вычисляемая мера [Доля товарооборота посредников по всей номенклатуре продукции]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". Измените имя нового вычисляемого элемента на [Общая доля продаж по всей номенклатуре продукции]. В поле "Выражение" введите следующее выражение:

    Case
        When IsEmpty( [Measures].[Итоговая сумма продаж] ) 
        Then 0
        Else ( [Product].[Product Categories].CurrentMember,
               [Measures].[ Итоговая сумма продаж]) /
             ( [Product].[Product Categories].[(All)].[All], 
               [Measures].[ Итоговая сумма продаж] )
        End

    В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажки для показателей " Internet Sales - Sales Amount " и " Reseller Sales- Sales Amount " (рисунок 11.16 )

    (рис 11.16) Вычисляемая мера [Общая доля продаж по всей номенклатуре продукции]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление сценариев" и просмотрите три вычисления, только что добавленные в сценарий вычисления.

    Добавьте новую строку в сценарий вычисления непосредственно перед вычислением [Доля продаж через Интернет по всей номенклатуре продукции], а затем введите на следующей строке сценария приведенный ниже текст (рисунок 11.17 )

    /* Calculations to calculate percentage of product to total product sales */

    (рис 11.17) Представление сценариев

    Теперь создано восемь вычисляемых элементов, которые отображаются в области "Организатор сценариев" в представлении формы (рисунок 11.18 )

    (рис 11.18) Созданные вычисляемые элементы

    Просмотр новых вычисляемых элементов

    Разверните проект Analysis Services Tutorial. После успешного окончания развертывания перейдите на вкладку "Обзор", нажмите кнопку "Повторное соединение" и удалите все иерархии и меры из области "Данные". В области "Метаданные" раскройте узел " Measures ", чтобы отобразить новые вычисляемые элементы в измерении мер (рисунок 11.20 )

    (рис 11.20) Созданные вычисляемые элементы

    Добавьте меры "Итоговая сумма продаж", " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount " в область данных и просмотрите результаты (рисунок 11.21 )

    (рис 11.21) Значения мер меры "Итоговая сумма продаж", "Internet Sales - Sales Amount" и "Reseller Sales - Sales Amount"

    Обратите внимание, что мера "Итоговая сумма продаж" является суммой мер " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount ".

    Добавьте пользовательскую иерархию " Product Categories " в область фильтра области "Данные" и отфильтруйте данные по позиции " Mountain Bikes " (Горные велосипеды) (рисунок 11.22 )

    (рис 11.22) Фильтр по иерархии "Product Categories"

    Обратите внимание, что мера "Итоговая сумма продаж" рассчитывается для категории продаж товара " Mountain Bikes " на основе мер " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount ".

    Добавьте пользовательскую иерархию " Date.Calendar Date " в область строк и просмотрите результаты (рисунок 11.23 )

    (рис 11.23) Добавленная пользовательская иерархия "Date.Calendar Date"

    Обратите внимание, что мера "Итоговая сумма продаж" рассчитывается за каждый календарный год для категории продаж товара " Mountain Bikes " на основе мер " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount ".

    Добавьте меры "Итоговый коэффициент валовой прибыли", "Коэффициент валовой прибыли по продажам через Интернет" и "Коэффициент валовой прибыли по продажам через торгового посредника" в область данных и просмотрите результаты (рисунок 11.24 )

    (рис 11.24) Добавленные меры "Итоговый коэффициент валовой прибыли", "Коэффициент валовой прибыли по продажам через Интернет" и "Коэффициент валовой прибыли по продажам через торгового посредника"

    Обратите внимание, что коэффициент валовой прибыли по продажам через торгового посредника значительно ниже, чем по продажам через Интернет. Кроме того, обратите внимание, что коэффициент валовой прибыли по продажам горных велосипедов увеличивается с течением времени.

    Измените фильтр с " Mountain Bikes " на " Bikes " и просмотрите результаты (рисунок 11.25 )

    (рис 11.25) Валовая прибыль по продажам всех велосипедов

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

    Измените фильтр на " Accessories " и просмотрите результаты (рисунок 11.26 )

    (рис 11.26) Валовая прибыль по продажам ассесуаров

    Обратите внимание, что продажа аксессуаров увеличивается с течением времени, но они составляют лишь небольшую часть общей суммы продаж. Кроме того, обратите внимание, что коэффициент валовой прибыли для продаж аксессуаров выше, чем для велосипедов.

    Последовательно раскройте узлы 2004 год, затем 2 полугодие 2004 года и 3 квартал 2004 года (рисунок 11.27 )

    (рис 11.27) Отсутствующие данные по продажам

    Обратите внимание, что в этом кубе не было продаж через Интернет после июля 2004 года и продаж через торгового посредника после июня 2004 года. Эти цифры по продажам еще не добавлены из систем источников в базу данных Adventure Works DW.

    Определение именованных наборов

    Далее требуется определить два именованных набора: именованный набор "Основные товары" и именованный набор "Крупные торговые посредники".

    Определение именованного набора "Основные товары"

    Перейдите на вкладку "Вычисления" конструктора кубов и нажмите кнопку "Представление формы" на панели инструментов.

    В области "Организатор сценариев" щелкните элемент [Общая доля продаж по всей номенклатуре продукции] и на панели инструментов вкладки "Вычисления" нажмите кнопку "Создать именованный набор" (рисунок 11.28)

    (рис 11.28) Кнопка "Создать именованный набор" на панели инструментов

    При определении нового вычисления на вкладке "Вычисления" следует помнить, что вычисления разрешаются в том порядке, в каком они приведены в области "Организатор сценариев". Положение фокуса ввода в этой панели при создании нового вычисления определяет порядок выполнения вычисления; определение нового вычисления создается непосредственно за тем вычислением, на котором находится фокус ввода.

    В поле "Имя" измените имя нового именованного набора на [Основные товары]. В области "Организатор сценариев" обратите внимание на особый значок, отличающий именованный набор от команды сценария или вычисляемого элемента (рисунок 11.29 )

    (рис 11.29) Создание именованного набора [Основные товары]

    На вкладке "Метаданные" области "Средства вычисления" последовательно раскройте элементы " Product ", " Category ", "Элементы" и " All Products ". Если в области "Средства вычисления" не отображаются метаданные, нажмите кнопку "Повторное соединение" на панели инструментов.

    Перетащите элемент " Bikes " в поле "Выражение" (рисунок 11.30)

    (рис 11.30) Выражение набора

    Создано выражение набора, которое будет возвращать набор элементов, относящихся к категории " Bikes " в измерении " Product ".

    Определение именованного набора "Крупные торговые посредники"

    Щелкните правой кнопкой мыши пункт [Основные товары] в области "Организатор сценариев" и на панели инструментов нажмите кнопку "Создать именованный набор".

    В поле "Имя" измените имя этого именованного набора на [Крупные торговые посредники].

    Для получения набора элементов с наибольшим числом сотрудников из иерархии атрибута "Имя торгового посредника" при ее пересечении с набором элементов в иерархии атрибута "Количество сотрудников" будет использована функция Exists. В поле "Выражение" введите Exists.

    На вкладке "Метаданные" области "Средства вычисления" раскройте измерение " Reseller ", а затем раскройте иерархию атрибута " Reseller Name ". Перетащите уровень " Reseller Name " в скобки выражения набора Exists.

    Для получения всех элементов этого набора будет использована функция Members. После части выражения набора введите точку, а затем добавьте функцию Members. Выражение должно иметь следующий вид:

    Exists([Reseller].[Reseller Name].[Reseller Name].Members)

    Теперь, когда определен первый набор для выражения Exists, можно приступить к добавлению второго набора - набора элементов измерения " Reseller ", которое имеет наибольшее количество сотрудников.

    На вкладке "Метаданные" области "Средства вычисления" раскройте пункт " Number of Employees " в измерении " Reseller ", раскройте строку "Элементы", а затем раскройте уровень " All Resellers " (рисунок 11.31)

    (рис 11.31) Уровень "All Resellers" измерения "Reseller"

    Обратите внимание, что элементы этой иерархии атрибута не распределены по группам.

    Откройте конструктор измерений для измерения " Reseller " и в области "Атрибуты" выберите элемент " Number of Employees " (рисунок 11.32)

    (рис 11.32) Элемент "Number of Employees" в конструкторе измерения "Reseller"

    В окне свойств измените значение свойства " DiscretizationMethod " на " Automatic ", а затем измените значение свойства " DiscretizationBucketCount " на "5".

    Разверните куб "Analysis Services Tutorial". После успешного завершения развертывания переключитесь в конструктор кубов, выберите куб "Analysis Services Tutorial" и нажмите кнопку "Повторное соединение" на панели инструментов "Вычисления".

    На вкладке "Метаданные" области "Средства вычисления" раскройте пункт " Number of Employees " в измерении " Reseller ", раскройте строку "Элементы", а затем раскройте уровень " All Resellers " (рисунок 11.33)

    (рис 11.33) Группы элементов иерархии "Number of Employees"

    Обратите внимание, что элементы этой иерархии атрибута сейчас хранятся в пяти группах с номерами от 0 до 4. Чтобы увидеть номер группы, наведите указатель мыши на группу и дождитесь всплывающей подсказки. Элементы этой иерархии атрибута распределены по группам, так как свойству " DiscretizationBucketCount " присвоено значение "5", а свойству " DiscretizationMethod " - значение " Automatic ".

    В окне "Выражение" добавьте запятую в выражении для набора Exists после функции Members и перед закрывающей скобкой, а затем перетяните элемент "83 - 100" из области "Метаданные" и поместите его после запятой (рисунок 11.34)

    (рис 11.34) Именованный набор [Крупные торговые посредники]

    Составлено выражение для набора Exists, которое будет возвращать набор элементов, пересекающийся с двумя указанными наборами: набором всех торговых посредников и набором посредников, имеющих от 83 до 100 сотрудников, когда на одной из осей будет находиться именованный набор [Крупные торговые посредники].

    /* named sets */

    (рис 11.35) Добавленный комментарий

    Определены два именованных набора, которые отображаются в области "Организатор сценариев". Теперь можно приступить к развертыванию этих именованных наборов и просмотру соответствующих изменений в кубе.

    Просмотр куба с использованием новых именованных наборов

    Разверните куб "Analysis Services Tutorial". После успешного окончания развертывания откройте вкладку "Обозреватель" и нажмите кнопку "Повторное соединение". Удалите все иерархии и меры в области "Данные". Добавьте меру " Reseller Sales - Sales Amount " в область данных, а затем добавьте пользовательскую иерархию " Product Categories " в область строк (рисунок 11.36)

    (рис 11.36) Распределение меры "Reseller Sales - Sales Amount" по пользовательской иерархии "Product Categories"

    Раскройте строку " Bikes ", чтобы увидеть элементы уровня " Subcategories " (рисунок 11.37)

    (рис 11.37) Элементы уровня "Subcategories"

    В области "Метаданные" в измерении " Product " щелкните правой кнопкой мыши именованный набор "Основные товары" и в контекстном меню выберите пункт "Добавить в область вложенных кубов" (рисунок 11.38)

    (рис 11.38) Фильтр по именованному набору "Основные товары"

    Обратите внимание, что в кубе остались только элемент " Bikes " атрибута " Category " и элементы подкатегорий, входящих в категорию " Bikes ". Это связано с тем, что именованный набор "Основные товары" используется для определения вложенного куба, свойства которого отображаются в области "Фильтр", находящейся над областью "Данные". Этот вложенный куб ограничивает число элементов атрибута " Category " в измерении " Product " внутри вложенного куба элементами именованного набора "Основные товары".

    В области "Метаданные" раскройте элемент " Reseller ", щелкните правой кнопкой мыши элемент "Крупные торговые посредники" и выберите команду "Добавить в область вложенных кубов" (рисунок 11.39)

    (рис 11.39) Фильтр по именованному набору "Крупные торговые посредники"

    Обратите внимание, что мера " Reseller Sales - Sales Amount " в области "Данные" отображает количество продаж только для крупных посредников, продающих велосипеды. Кроме того, обратите внимание, что в области "Фильтр" теперь отображаются два созданных именованных набора, которые используются для определения именно этого вложенного куба.

    Определение назначений с указанием области с помощью команд сценариев

    Далее будут применены инструкции SCOPE и THIS, чтобы определить квоты продаж для каждого финансового квартала финансового года 2005. Затем квоты продаж будут распределены по месяцам для всех финансовых годов в кубе. Также будет рассмотрено применение точек останова для отладки сценария вычисления.

    Просмотр распределения квот на количество продаж по датам и сотрудникам

    Откройте конструктор кубов для куба Analysis Services Tutorial и откройте вкладку "Обозреватель". Удалите все иерархии и измерения в области "Данные" и все элементы измерений в области "Фильтр". В раздел данных области "Данные" добавьте меру " Sales Amount Quota " из группы мер " Sales Quotas ". Добавьте определенную пользователем иерархию " Fiscal Date " из измерения " Date " в область столбцов. Добавьте иерархию атрибута " Employee Name " из измерения " Employee " в область строк (рисунок 11.40)

    (рис 11.40) Распределение меры "Sales Amount Quota" по финансовым годам и сотрудникам

    Обратите внимание, что для финансового года 2005 не задано никаких значений квот продаж.

    В области столбцов нажмите кнопку со стрелкой рядом с иерархией " Fiscal Year ", снимите флажки рядом с "FY 2002" и "FY 2003", а затем нажмите кнопку ОК. В области столбцов последовательно разверните узлы "FY2004", "H2 FY 2004" и "Q4 FY 2004" (рисунок 11.41)

    (рис 11.41) Квота продаж по каждому из сотрудников, которые имеют квоту продаж на каждый месяц четвертого квартала 2004 финансового года

    Обратите внимание, что квота суммы продаж для каждого финансового месяца финансового квартала совпадает с квотой суммы продаж для этого финансового квартала. Это обусловлено тем, что гранулярность измерения времени в группе мер " Sales Quota " установлена на уровне квартала, что обсуждалось в предыдущей лабораторной работе.

    Определение области вычисления квоты суммы продаж в финансовом году 2005

    Выберите вкладку "Вычисления", а затем нажмите кнопку "Представление формы" на панели инструментов.

    В области "Организатор сценариев" выберите элемент "Крупные посредники", а затем нажмите кнопку "Создать команду сценария" на панели инструментов вкладки "Вычисления" (рисунок 1242)

    (рис 11.42) Кнопка "Создать команду сценария" на панели инструментов вкладки "Вычисления"

    Обратите внимание, что в области "Выражения вычислений" отображается пустой сценарий и что команда этого сценария отобразится с пустым заголовком в области "Организатор сценариев".

    В области "Выражения вычислений" введите следующую инструкцию:

    /* Changing Scope to All or Default Member */

    SCOPE (ROOT())

    Инструкция SCOPE изменит область куба на "Все" или на элемент по умолчанию для всех атрибутов в этом кубе (рисунок 11.43)

    (рис 11.43) Созданная команда сценария SCOPE (ROOT())

    Нажмите кнопку "Создать команду сценария" в области инструментов вкладки "Вычисления", а затем введите следующую инструкцию в области "Выражения вычислений" (рисунок 11.44)

    /* Defining the cube scope for the sales amount quotas for FY2005 */

    SCOPE ()

    (рис 11.44) Конструирование команды SCOPE для FY2005

    Обратите внимание, что под последним выражением появится волнистая красная линия, которая указывает, что в скобках необходимо указать набор элементов для инструкции SCOPE. Затем добавьте меру " Sales Amount Quota " в инструкцию SCOPE, чтобы включить ее в область. На вкладке "Метаданные" области "Средства вычисления" раскройте элементы " Measures " и " Sales Amount Quota ", затем перетащите элемент " Sales Amount Quota " в скобки инструкции SCOPE в области "Выражения вычислений" (рисунок 11.45)

    (рис 11.45) Добавление элемента "Sales Amount Quota" в инструкцию SCOPE

    Обратите внимание, что красная волнистая линия исчезла. После этого необходимо добавить элемент измерения "FY 2005" в инструкцию SCOPE, чтобы внести этот элемент измерения времени в текущую область. На вкладке "Метаданные" области "Средства вычисления" раскройте измерение "Date", затем элементы " Fiscal Date ", " Fiscal Year " и перетащите элемент " FY 2005 " в инструкцию SCOPE в области "Выражения вычислений" сразу после элемента [ Sales Amount Quota ] определяемого набора.

    Обратите внимание на волнистую красную линию под частью [Date] нового элемента набора. Эта линия указывает, что прямо перед этим элементом измерения имеется синтаксическая ошибка, так как в инструкции SCOPE все элементы набора должны отделяться запятыми. Добавьте необходимую запятую перед частью [ Date ] элемента " FY 2005 " в измерении " Date " (рисунок 11.46)

    (рис 11.46) Добавление элемента "FY2005" в инструкцию SCOPE

    Обратите внимание, что красная волнистая линия исчезла. Затем из измерения " Employee " добавьте элементы пользовательской иерархии " Employees " в инструкцию SCOPE, чтобы добавить эти элементы в текущую область действия. На вкладке "Метаданные" области "Средства вычисления" раскройте измерение "Employee" и перетащите определяемую пользователем иерархию " Employees " в инструкцию SCOPE в области "Выражения вычислений" сразу после элемента [ Date ].[ Fiscal Date].[ Fiscal Year].[ 2005 ] в определяемом наборе данных. Обратите внимание на волнистую красную линию под частью [ Employee ] нового элемента набора, которая означает, что элементы инструкции SCOPE должны быть разделены запятыми. Поставьте нужную запятую перед частью [ Employee ] нового элемента (рисунок 11.47)

    (рис 11.47) Добавление пользовательской иерархии "Employees" в инструкцию SCOPE

    Обратите внимание, что красная волнистая линия исчезла. В конце элемента [ Employee ].[ Employees ] этого набора в инструкции SCOPE добавьте следующее предложение, чтобы завершить определение третьего элемента набора:

    .Members

    Это предложение указывает, что в текущую область куба должны быть включены все элементы иерархии "Employees" измерения "Employee".

    Убедитесь, что завершенная инструкция SCOPE соответствует следующему сценарию:

    /* Defining the cube scope for the sales amount quotas for FY2005 */
    SCOPE ([Measures].[Sales Amount Quota],
    [Date].[Fiscal Date].[Fiscal Year].[2005],
    [Employee].[Employees].Members)

    Была определена область, определяющая вложенный куб, к которому будет применяться многомерное выражение для вычисления квот продаж для финансового года 2005.

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление сценария" и просмотрите последние добавленные команды (рисунок 11.48)

    (рис 11.48) Добавленные в представление сценария команды

    Обратите внимание, что каждая команда сценария появляется в виде, введенном в области "Выражения вычислений", однако в конце ее стоит точка с запятой. Также обратите внимание, что службы SSAS вставили примечание перед каждой командой сценария, которое позволяет понять смысл отдельной команды.

    Определение и проверка нового вычисления квоты продаж для финансового года 2005

    Далее в сценарий будет добавлена новая команда, вычисляющая размер квоты продаж на 2005 финансовый год по всем элементам измерения " Employee ". Однако вместо представления "Форма" команда будет добавлена прямо в представление сценария. В представлении "Сценарий" между командами сценария необходимо ставить точку с запятой.

    В представлении "Сценарий" введите следующую инструкцию на новой строке в конце сценария вычисления:

    /* Applying a calculation to the subcube */

    THIS = [Date].[Fiscal Date].[Fiscal Year].[2004] * 1.25;

    Инструкция THIS присваивает мере " Sales Amount Quota " новое значение на пересечении элементов " Employee " и " FY 2005 " вложенного куба. Новое значение основано на значении, существующем на пересечении элемента " Employee " и меры " Sales Amount Quota " для финансового года 2004, умноженного на 1,25.

    В области "Выражения вычислений" щелкните границу слева от инструкции THIS, чтобы задать точку останова (рисунок 11.49)

    (рис 11.49) Точка останова

    Заметьте, что на этой границе появилась красная точка, а инструкция выделена красным цветом. При выполнении проекта в режиме отладки измененный проект будет развернут на экземпляре служб SSAS, куб будет обработан и сценарий вычисления будет выполнен до точки останова. Затем можно продолжить выполнение по шагам. Если не задать точку останова и выполнить проект в режиме отладки, то сценарий вычисления прервется на первой инструкции сценарии, то есть на инструкции CALCULATE.

    В меню "Отладка" выберите команду "Начать отладку". Также можно нажать клавишу F5. Проект будет развернут и обработан, а сценарий вычисления будет выполнен вплоть до точки останова (рисунок 11.50)

    (рис 11.50) Сценарий, выполненный до точки останова

    Скрыв все закрепленные окна, можно освободить больше площади для просмотра области "Сводная таблица", отображаемой в нижней части вкладки" Вычисления". Область "Сводная таблица" помогает в отладке. В области "Сводная таблица" в раздел данных добавьте меру " Sales Amount Quota ", в область столбцов добавьте определяемую пользователем иерархию " Fiscal Date ", а затем в область строк - иерархию атрибута " Employee Name " из измерения " Employee ". Выполните прокрутку до нижней части сводной таблицы и просмотрите сотрудников, для которых назначены квоты продаж (рисунок 11.51)

    (рис 11.51) Сотрудники, для которых назначены квоты продаж

    Обратите внимание, что в элементе " FY 2005 " уровня " Fiscal Year " для меры " Sales Amount Quota " ни у одного сотрудника нет значения в области данных меры " Sales Amount Quota ". По умолчанию в режиме отладки в области "Сводная таблица" отображаются пустые ячейки.

    Нажмите клавишу F10, чтобы выполнить инструкцию THIS и вычислить квоты продаж для финансового года 2005 (рисунок 11.52)

    Обратите внимание, что теперь в области "Сводная таблица" вычислены ячейки на пересечении меры " (рис 11.52) на панели инструментов. По умолчанию, измененные ячейки выделены.

    В области "Сводная таблица" снимите флажки " FY 2002 ", " FY 2003 " и " FY 2004 i", чтобы удалить эти элементы из области столбцов.

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

    (рис 11.53) Сотрудники, имеющие значения для квоты суммы продаж

    Попытайтесь развернуть узел " FY 2005 " в разделе столбцов области "Сводная таблица". Обратите внимание, что раскрыть элемент " FY2005 " не удается, так как значения элемента " H1 FY 2005 " на пересечении меры " Sales Amount Quota " и иерархии атрибута " Employee Name " не были вычислены (поскольку они оказались вне текущей области).

    Чтобы просмотреть пустые ячейки для значений элементов " H1 FY 2005 ", щелкните в любом месте области "Сводная таблица" и в контекстном меню выберите команду "Показывать пустые ячейки", чтобы показать все пустые ячейки.

    В меню "Отладка" выберите команду "Остановить отладку" (или нажмите сочетание клавиш Shift-F5). Удалите точку останова в сценарии вычисления, щелкнув красную точку на левом поле.

    Распределение квоты суммы продаж по полугодиям и кварталам финансового года 2005

    Далее будет изменена область расчетов, чтобы включить элементы финансового полугодия 2005 финансового года вместо элемента 2005 финансового года, для каждого из которых будет выделена половина значения квоты продаж для 2005 финансового года. Затем в область вместо элемента 2005 финансового года включаются элементы кварталов 2005 финансового года, и для каждого из них выделяется четверть значения квоты продаж на 2005 финансовый год. В завершение будет произведена проверка выделенных значений.

    В представлении "Сценарий" области "Выражения вычислений" введите следующую инструкцию в новой строке в конце сценария вычисления:

    /* Allocation of Sales Amount Quota to the 2005 Fiscal Semesters */

    SCOPE ( [Date].[Fiscal Semester].[Fiscal Semester].Members );

    Эта инструкция SCOPE вложена в другую инструкцию SCOPE, поскольку инструкция END SCOPE расположена между данной инструкцией SCOPE и предыдущей инструкцией SCOPE. При вложении инструкции SCOPE вложенная инструкция SCOPE наследует область родительской инструкции для атрибутов, область которых не изменяется. Предыдущая инструкция SCOPE не изменяет меру " Sales Amount Quota ", пользовательскую иерархию " Employees " или пользовательскую иерархию " Fiscal Date " непосредственно. Она добавляет в определение вложенного куба все элементы иерархии атрибута " Fiscal Semester " (с помощью функции Members ). В результате выполнения вложенной инструкции SCOPE пространство куба будет включать все элементы на пересечении элемента " Employee " и меры " Sales Amount Quota " в любом финансовом полу годии 2005 финансового года. Обратите внимание, что в данный момент этот финансовый год содержит всего одно полугодие.

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    THIS = [Date].[Fiscal Date].CurrentMember.Parent / 2;

    Эта инструкция присваивает каждому финансовому полугодию в определенном пространстве куба значение, вычисленное для этого финансового квартала. Функция CurrentMember.Parent выделяет каждому элементу половину значения его родителя.

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    /* Allocation of Sales Amount Quota to the 2005 Fiscal Quarters */

    SCOPE ( [Date].[Fiscal Quarter].[Fiscal Quarter].Members );

    Эта инструкция SCOPE также вложена в другую инструкцию SCOPE, поскольку инструкция END SCOPE расположена между данной инструкцией SCOPE и предыдущей инструкцией SCOPE. Предыдущая инструкция SCOPE не изменяет меру " Sales Amount Quota ", пользовательскую иерархию " Employees " или пользовательскую иерархию " Fiscal Date " непосредственно. Она добавляет в определение вложенного куба каждый элемент иерархии атрибута " Fiscal Quarter " (с помощью функции Members ). В результате пространство куба включает все элементы на пересечении элемента " Employee " и меры " Sales Amount Quota " каждого финансового квартала 2005 финансового года (в данный момент этот финансовый год содержит всего один квартал).

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    THIS = [Date].[Fiscal Date].CurrentMember.Parent / 2

    Эта инструкция присваивает каждому финансовому кварталу в определенном пространстве куба значение, вычисленное для этого финансового квартала. Функция CurrentMember.Parent используется, чтобы присвоить каждому элементу половину значения его родителя.

    На панели "Выражения вычислений" щелкните границу рядом с последней инструкцией SCOPE, чтобы установить точку останова, а затем нажмите клавишу F5 (рисунок 11.54)

    (рис 11.54) Точка останова

    Сценарий вычисления будет выполнен до этой точки останова. Щелкните сначала правой кнопкой мыши в любом месте раздела данных области "Сводная таблица", а затем в контекстном меню выберите пункт "Показывать пустые ячейки", чтобы скрыть пустые ячейки (рисунок 11.55)

    (рис 11.55) Область данных со скрытыми пустыми ячейками

    Обратите внимание, что область данных заполняется теми же мерами и иерархиями, которые использовались при последнем проходе отладчика, а значение элемента " H1 FY 2005 " вычисляется, как половина родительского.

    Обратите внимание, что значение для каждого элемента " FY 2005 " вычисляется заново на основе статистической обработки его элементов, в данном случае первого финансового полугодия финансового года. Значение элемента 2005-го финансового года зависит от вычисления элемента " Fiscal Semester 2005 ", так как каждый сценарий выполняется в отдельном проходе. Чтобы сделать существующее выражение не изменяемым последующими инструкциями сценария вычисления, используйте инструкцию FREEZE, которая фиксирует текущие значения ячеек заданного вложенного куба. Когда ячейки зафиксированы, изменения в других ячейках не влияют на них.

    В области столбцов раскройте элемент " H1 FY 2005 ". Обратите внимание, что значения элемента " Q1 FY 2005 " еще не вычислялись.

    Щелкните сначала в любом месте раздела данных области Сводная таблица, а затем значок "Показывать пустые ячейки" () в области инструментов вкладки "Вычисления". В области столбцов раскройте элемент " Q1 FY 2005 " (рисунок 11.56)

    (рис 11.56) Содержимое элемента "Q1 FY 2005"

    Обратите внимание, что двум месяцам первого квартала 2005 финансового года не присвоено значение, так как они пока не включены в область текущего вложенного куба (до тех пор, пока не выполнены последние две инструкции сценария). Измерение времени в кубе Analysis Services Tutorial содержит только два первых месяца финансового года 2005. Поэтому элементы " Q2 FY 2005 " отсутствуют.

    Нажмите клавишу F10, чтобы выполнить инструкцию SCOPE, после чего нажмите клавишу F10 снова, чтобы выполнить последнюю инструкцию сценария вычисления, которая применит данное вычисление к текущему вложенному кубу.

    (рис 11.57) Значения элемента Q1 FY 2005

    Обратите внимание, что вычисляется значение элемента " Q1 FY 2005 ", при этом значения элементов " H1 FY 2005i " и " FY2005 " вычисляются повторно (как результат статистической обработки их дочерних элементов). Кроме того, обратите внимание, что значение для каждого финансового месяца финансового года 2005 (июля и августа 2005-го года) не вычисляется. На следующем этапе будут присвоены соответствующие значения каждому из кварталов.

    В меню "Отладка" выберите команду "Остановить отладку" (или нажмите сочетание клавиш Shift + F5). Удалите точку останова в сценарии вычисления.

    Распределение квот продаж по месяцам

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    /* Allocate Quotas to Months */

    SCOPE ( [Date].[Fiscal Date].[Month Name].Members );

    Данная инструкция SCOPE является вложенной инструкцией области, она изменяет пространство куба, к которому применено многомерное выражение, чтобы присвоить квоты суммы продаж для каждого финансового месяца на основе значений, указанных для каждого финансового квартала. Эта инструкция SCOPE аналогична предыдущей вложенной инструкции SCOPE, однако в ней переопределяется область самой определенной пользователем иерархии " Fiscal Date ". Поэтому элементы пространства куба вместо элементов финансового месяца финансового года 2005 теперь будут включать в себя все элементы финансового месяца измерения " Date ".

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    THIS = [Date].[Fiscal Date].CurrentMember.Parent / 3;

    Эта инструкция присваивает каждому элементу месяца иерархии " Fiscal Date " треть значения его родителя уровня квартала. Это вычисление будет применено ко всем финансовым месяцам куба.

    В области "Выражения вычислений" щелкните границу слева от последней инструкции THIS, чтобы установить точку останова, а затем нажмите клавишу F5 (рисунок 11.58)

    (рис 11.58) Просмотр значений для июля и августа 2004 года

    Обратите внимание, что для июля и для августа 2004 года значения не вычислены. Щелкните правой кнопкой мыши область "Данные" и к контекстном меню выберите команду "Показывать пустые ячейки", чтобы отобразить только ячейки, имеющие значения. Это позволит легче проследить, как последняя инструкция применяется в сценарии вычисления. Нажмите клавишу F10, чтобы выполнить последнюю инструкцию (рисунок 11.59)

    (рис 11.59) Вычисленные значения для июля и августа 2004 года

    Обратите внимание, что значение " Sales Amount Quota " для каждого сотрудника в каждом финансовом месяце равно трети значения родительского элемента. В области столбцов удалите элемент " FY 2005 " и добавьте элемент " Q4 FY 2004 ". Последовательно раскройте элементы " FY 2004 ", " H2 FY 2004 " и " Q4 FY 2004 " ().

    (рис 11.60)

    Заметьте, что значение для каждого финансового месяца равно трети итогового значения для финансового квартала. В меню "Отладка" выберите команду "Остановить отладку". Удалите точку останова в сценарии вычисления. На панели инструментов нажмите кнопку "Сохранить все".

    Контрольные вопросы

  • Дайте определение понятию "вычисление". Какие существуют виды вычислений в SSAS?
  • Дайте определение понятиям "вычисляемый элемент" и "вычисляемая мера".
  • Дайте определение понятию "именованный набор". Каким образом он создается?
  • Какие функции могут выполнять команды сценариев?
  • Страницы:

    Теоретическое введение

    Вычисление представляет собой многомерное выражение или сценарий, используемый для определения вычисляемого элемента, именованного набора или назначения с указанием области в кубе в службах SSAS. Вычисления позволяют добавлять объекты, определенные не данными куба, а выражениями, которые могут ссылаться на прочие части куба, другие кубы, или даже данные вне базы данных служб SSAS. Вычисления позволяют расширить возможности куба, увеличивая гибкость и производительность приложений бизнес-аналитики.

    Вычисляемые элементы

    Вычисляемый элемент представляет собой элемент, значение которого вычисляется в процессе выполнения при помощи многомерного выражения, которое задается во время определения вычисляемого элемента. Вычисляемый элемент доступен для приложений бизнес-аналитики, равно как и любой другой. Вычисляемые элементы не увеличивают размер куба, потому что в кубе хранятся только определения; значения вычисляются в памяти, когда возникает необходимость ответить на запрос.

    Вычисляемые элементы можно определять для любого измерения, включая измерение мер. Вычисляемые элементы, созданные в измерении мер, называются вычисляемыми мерами.

    Хотя вычисляемые элементы обычно основаны на данных, уже существующих в кубе, можно создавать сложные выражения, объединяя данные с арифметическими операторами, числами и функциями. Также можно воспользоваться функциями многомерных выражений, например LookupCube, чтобы получить доступ к данным других кубов базы данных служб SSAS. В состав служб SSAS входят библиотеки стандартизированных функций приложения Visual Studio, при этом можно использовать хранимые процедуры для извлечения данных из источника, отличного от текущей базы данных служб SSAS.

    Например, предположим, что руководство судоходной компании хочет определить типы груза, наиболее выгодные с точки зрения перевозки, используя для этого показатель прибыли в расчете на единицу объема. Берется куб "Перевозки", содержащий измерения "Груз", "Флот" и "Время" и меры " Price_to_Ship " (Цена_перевозки), " Cost_to_Ship " (Стоимость_перевозки) и " Volume_in_Cubic_Meters " (Объем_в_кубических_метрах); однако в кубе нет меры для прибыльности. В кубе можно создать вычисляемый элемент как меру, именуемую "Прибыль_за_кубический_метр", путем объединения существующих мер в следующем выражении:

    ([Measures].[Price_to_Ship] - [Measures].[Cost_to_Ship]) /[Measures].[Volume_in_Cubic_Meters]

    После создания вычисляемого элемента при следующем просмотре куба "Перевозки", мера "Прибыль_за_кубический_метр" появится вместе с другими мерами.

    Именованные наборы

    Именованный набор представляет собой многомерное выражение инструкции CREATE SET, возвращающее набор (множество) элементов измерения. Можно определять именованные наборы и сохранять их как часть определения куба, а также создавать именованные наборы в клиентских приложениях.

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

    Именованные наборы упрощают запросы многомерных выражений и служат удобными псевдонимами для сложных регулярно используемых выражений наборов.

    Например, можно определить именованный набор с именем "Крупные торговые посредники", содержащий набор элементов измерения "Торговые посредники", у которых имеется наибольшее число служащих. Тогда конечные пользователи смогут использовать именованный набор "Крупные торговые посредники" в запросах, а вы сможете использовать его, чтобы определить набор во вложенном кубе. Определения именованных наборов хранятся в кубах, но их значения существуют только в памяти. Чтобы создать именованный набор, можно воспользоваться командой "Создать именованный набор" на вкладке "Вычисления" конструктора кубов.

    Команды сценариев

    Команда сценария представляет собой сценарий многомерного выражения, включенный в состав определения куба. Команды сценария позволяют осуществлять практически любое действие, поддерживаемое многомерными выражениями в кубе, такие как отнесение вычисления только к части куба. В службах SSAS сценарии многомерных выражений можно применять как к кубу в целом, так и к отдельным его секциям в отдельных точках при выполнении сценария. Команда сценария по умолчанию, являющаяся инструкцией CALCULATE, заполняет ячейки в кубе статистическими данными, основанными на области по умолчанию.

    Областью по умолчанию является весь куб, но можно определить более ограниченную область, известную как вложенный куб, а затем применить сценарий многомерных выражений только к этому конкретному пространству куба. Инструкция SCOPE определяет область всех последующих многомерных выражений и инструкций в пределах сценария вычислений до окончания или переопределения области. Затем используется инструкция THIS, чтобы применить многомерное выражение к текущей области. Можно использовать инструкцию BACK_COLOR, чтобы задать фоновый цвет ячеек в текущей области, что может быть полезно при отладке.

    Например, можно использовать команду сценария для распределения между сотрудниками квот на продажи по времени и территории продаж на основе взвешенных значений продаж за предыдущий период времени.

    Определение вычислений

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

    На вкладке "Вычисления" можно добавить новые вычисления, а также просмотреть или изменить существующие вычисления в одном из следующих представлений в области "Выражения" вычисления:

  • Представление формы. В этом представлении отображаются выражения и свойства отдельной команды в графическом формате. При редактировании сценария многомерных выражений поле выражения занимает все представление формы.
  • Представление сценария. В этом представлении отображаются все сценарии вычислений в редакторе кода, что позволяет легко изменять сценарии вычислений. Если панель "Выражения" вычисления находится в представлении сценария, окно "Организатор сценариев" скрыто. Представление сценария поддерживает выделение кода цветом, сопоставление скобок, автоматическую подстановку, а также области кода многомерных выражений. Можно развернуть или свернуть области кода многомерных выражений, чтобы упростить редактирование.
  • Для добавления к кубу определенных вычислений также можно использовать мастер бизнес-аналитики. Например, с помощью этого мастера можно добавить к кубу логику операций со временем, то есть определить вычисляемые элементы для времязависимых расчетов, таких, как временные интервалы, скользящие средние или рост за период.

    Практические задания

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

    Определение вычисляемых элементов

    Определение статистических вычислений для физических мер

    Откройте конструктор кубов для куба Analysis Services Tutorial и перейдите на вкладку "Вычисления" (рисунок 11.1 )

    (рис 11.1) Вкладка "Вычисления" конструктора кубов

    Обратите внимание, что по умолчанию в областях "Выражения" вычисления и "Организатор сценариев" доступна команда CALCULATE. Эта команда указывает, что меры в кубе должны быть вычислены в соответствии со значениями свойства " AggregateFunction ". Значения мер обычно суммируются, но могут подсчитываться или статистически обрабатываться другим образом.

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". В области "Выражения" вычисления будет отображена новая форма, в которой следует задать свойства нового вычисляемого элемента. Новый элемент также отображается в области "Организатор сценариев" (рисунок 11.2 )

    (рис 11.2) Форма свойств нового вычисляемого элемента

    В поле "Имя" измените имя вычисляемой меры на [Итоговая сумма продаж]. Если имя вычисляемого элемента содержит пробелы, его необходимо заключать в квадратные скобки.

    Обратите внимание, что в списке "Родительская иерархия" по умолчанию новый вычисляемый элемент создается в измерении " Measures ". Вычисляемый элемент в измерении мер часто называют вычисляемой мерой.

    На вкладке "Метаданные" области "Средства вычисления" вкладки "Вычисления" последовательно раскройте узлы " Measures " и " Internet Sales ", чтобы просмотреть метаданные для группы мер " Internet Sales " (рисунок 11.3 )

    (рис 11.3) Метаданные для группы мер "Internet Sales"

    Элементы метаданных можно перетянуть из области "Средства вычисления" в поле "Выражение", а затем добавить операторы и другие элементы для создания многомерных выражений. Кроме того, многомерное выражение можно ввести непосредственно в поле "Выражение".

    Перетяните показатель " Internet Sales - Sales Amount " из вкладки "Метаданные" области "Средства вычисления" в поле "Выражение" области "Выражения" вычисления.

    В поле Выражение после [Measures]. [ Internet Sales - Sales Amount] введите знак плюс (+).

    На вкладке "Метаданные" панели "Средства вычисления" раскройте элемент " Reseller Sales " и перетащите показатель " Reseller Sales - Sales Amount " в поле "Выражение" панели "Выражения" вычисления после знака плюс (+) (рисунок 11.4 )

    (рис 11.4) Сконструированное выражение

    В списке "Строка форматирования" выберите " Currency ". В списке "Установленное поведение" установите флажки для показателей Продажи через Интернет - сумма продаж и Товарооборот посредников - сумма продаж и нажмите кнопку ОК (рисунок 11.5 )

    (рис 11.5) Указание параметров "Строка форматирования" и "Установленное поведение"

    Меры, указанные в списке "Установленное поведение", используются для разрешения запросов NON EMPTY в многомерных выражениях. Если в списке "Установленное поведение" указана одна или несколько мер, в службах SSAS вычисляемый элемент считается пустым, если все указанные меры пусты. Если значение свойства "Установленное поведение не указано", в службах SSAS проводится оценка вычисляемого элемента с целью определения, является ли он пустым.

    В области инструментов вкладки "Вычисления" нажмите кнопку "Представление сценария" и просмотрите сценарий расчета в области "Выражения вычисления" (рисунок 11.6 )

    (рис 11.6) Представление сценария

    Обратите внимание, что новое вычисление добавляется в исходное выражение CALCULATE. Вычисления разделены точкой с запятой. Кроме того, обратите внимание, что в начале сценария вычисления отображается комментарий. Рекомендуется добавлять комментарии в сценарий для групп вычислений, поскольку в дальнейшем они помогут другим разработчикам понимать сложные сценарии вычислений.

    Добавьте новую строку в сценарий вычисления после команды Calculate ; и перед добавленным сценарием вычислений, а затем введите на отдельной строке сценария следующий текст (рисунок 11.7 )

    /* Calculations to aggregate Internet Sales and Reseller Sales measures */

    (рис 11.7) Добавленная строка комментария

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление формы", убедитесь, что в области "Организатор сценариев" выбран показатель [Итоговая сумма продаж], и нажмите кнопку "Создать вычисляемый элемент".

    Измените имя нового вычисляемого элемента на [Общая стоимость продукции] и создайте следующее выражение в поле "Выражения":

    [Measures].[Internet Sales-Total Product Cost] + [Measures].[Reseller Sales-Total Product Cost]

    В списке "Строка форматирования" выберите " Currency ".

    В списке "Установленное поведение" установите флажки для показателей " Internet Sales-Total Product Cost " и " Reseller Sales-Total Product Cost " (рисунок 11.8 )

    (рис 11.8) Параметры вычисления [Общая стоимость продукции]

    Заданы два вычисляемых элемента, которые отображаются в области "Организатор сценариев" (рисунок 11.9 )

    (рис 11.9) Созданные вычисляемые элементы

    Эти вычисляемые элементы можно использовать в других вычислениях, если они будут впоследствии заданы в сценарии вычисления. Определение любого вычисляемого элемента можно просмотреть, выбрав его в области "Организатор сценариев". Оно отображается в области "Выражения" вычисления в представлении формы. Новые определенные вычисляемые элементы не отображаются в области "Средства вычисления", пока не будут развернуты. Вычисления не требуют обработки.

    Создание вычислений коэффициента валовой прибыли

    Убедитесь. что в области "Организатор сценариев" выбран показатель [Общая стоимость продукции] и нажмите кнопку "Создать вычисляемый элемент" на панели инструментов вкладки "Вычисления". В поле "Имя" измените имя новой вычисляемой меры на [Коэффициент валовой прибыли по продажам через Интернет]. В поле "Выражение" создайте следующее многомерное выражение:

    ([Measures].[Internet Sales-Sales Amount] - [Measures].[Internet Sales-Total Product Cost]) / [Measures].[Internet Sales-Sales Amount]

    В списке "Строка форматирования" выберите значение " Percent ".В списке "Установленное поведение" установите флажок для показателя " Internet Sales-Sales Amount " (рисунок 11.10 )

    (рис 11.10) Вычисляемая мера [Коэффициент валовой прибыли по продажам через Интернет]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". В поле "Имя" измените имя новой вычисляемой меры на [Коэффициент валовой прибыли по продажам через торгового посредника]. В поле "Выражение" создайте следующее многомерное выражение:

    ([Measures].[Reseller Sales-Sales Amount] - [Measures].[Reseller Sales-Total Product Cost]) / [Measures].[Reseller Sales-Sales Amount]

    В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажок для показателя " Reseller Sales-Sales Amount " (рисунок 11.11 )

    (рис 11.11) Вычисляемая мера [Коэффициент валовой прибыли по продажам через торгового посредника]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". В поле "Имя" измените имя вычисляемой меры на [Итоговый коэффициент валовой прибыли]. В поле "Выражение" создайте следующее многомерное выражение:

    ([Measures].[Итоговая сумма продаж] - [Measures].[Общая стоимость продукции]) / [Measures].[Итоговая сумма продаж]

    Обратите внимание, что этот вычисляемый элемент ссылается на другие вычисляемые элементы. Этот вычисляемый элемент является допустимым, поскольку он рассчитывается после вычисляемых элементов, на которые ссылается. В списке "Строка форматирования" выберите значение " Percent ". В списке Установленное поведение установите флажки для показателей " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount " (рисунок 11.12 )

    (рис 11.12) Вычисляемая мера [Итоговый коэффициент валовой прибыли]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление сценария" и просмотрите три вычисления, только что добавленные в сценарий вычисления.

    Добавьте новую строку в сценарий вычисления непосредственно перед вычислением [Коэффициент валовой прибыли по продажам через Интернет], а затем введите на следующей строке сценария приведенный ниже текст (рисунок 11.13 )

    /* Calculations to calculate gross profit margin */

    (рис 11.13) Представление сценария с добавленным комментарием

    Создание вычислений "Проценты от общего"

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление формы". В области "Организатор сценариев" выберите показатель [Итоговый коэффициент валовой прибыли] и нажмите кнопку "Создать вычисляемый элемент" на панели инструментов вкладки "Вычисления". Выбор последнего вычисляемого элемента в области "Организатор сценариев" перед нажатием кнопки "Создать вычисляемый элемент" гарантирует, что новый вычисляемый элемент будет добавлен в конец сценария. Сценарии выполняются в том порядке, в котором они отображаются в области "Организатор сценариев". Измените имя нового вычисляемого элемента на [Доля продаж через Интернет по всей номенклатуре продукции]. В поле "Выражение введите следующее выражение":

    Case
        When IsEmpty( [Measures].[Internet Sales-Sales Amount] ) 
        Then 0
        Else ( [Product].[Product Categories].CurrentMember,
               [Measures].[Internet Sales-Sales Amount]) /
             ( [Product].[Product Categories].[(All)].[All], 
               [Measures].[Internet Sales-Sales Amount] )
        End

    В этом многомерном выражении рассчитывается доля каждого из товаров в итоговом значении продаж через Интернет. Использование инструкции Case в сочетании с функцией IS EMPTY позволяет избежать ошибки деления на ноль в том случае, если по данному товару отсутствуют продажи. В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажок для показателя " Internet Sales - Sales Amount " (рисунок 11.14 )

    (рис 11.14) Вычисляемая мера [Доля продаж через Интернет по всей номенклатуре продукции]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". Измените имя нового вычисляемого элемента на [Доля товарооборота посредников по всей номенклатуре продукции]. В поле "Выражение" введите следующее выражение:

    Case
        When IsEmpty( [Measures].[Reseller Sales-Sales Amount] ) 
        Then 0
        Else ( [Product].[Product Categories].CurrentMember,
               [Measures].[Reseller Sales-Sales Amount]) /
             ( [Product].[Product Categories].[(All)].[All], 
               [Measures].[Reseller Sales-Sales Amount] )
        End

    В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажок для показателя " Reseller Sales - Sales Amount " (рисунок 11.15 )

    (рис 11.15) Вычисляемая мера [Доля товарооборота посредников по всей номенклатуре продукции]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Создать вычисляемый элемент". Измените имя нового вычисляемого элемента на [Общая доля продаж по всей номенклатуре продукции]. В поле "Выражение" введите следующее выражение:

    Case
        When IsEmpty( [Measures].[Итоговая сумма продаж] ) 
        Then 0
        Else ( [Product].[Product Categories].CurrentMember,
               [Measures].[ Итоговая сумма продаж]) /
             ( [Product].[Product Categories].[(All)].[All], 
               [Measures].[ Итоговая сумма продаж] )
        End

    В списке "Строка форматирования" выберите значение " Percent ". В списке "Установленное поведение" установите флажки для показателей " Internet Sales - Sales Amount " и " Reseller Sales- Sales Amount " (рисунок 11.16 )

    (рис 11.16) Вычисляемая мера [Общая доля продаж по всей номенклатуре продукции]

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление сценариев" и просмотрите три вычисления, только что добавленные в сценарий вычисления.

    Добавьте новую строку в сценарий вычисления непосредственно перед вычислением [Доля продаж через Интернет по всей номенклатуре продукции], а затем введите на следующей строке сценария приведенный ниже текст (рисунок 11.17 )

    /* Calculations to calculate percentage of product to total product sales */

    (рис 11.17) Представление сценариев

    Теперь создано восемь вычисляемых элементов, которые отображаются в области "Организатор сценариев" в представлении формы (рисунок 11.18 )

    (рис 11.18) Созданные вычисляемые элементы

    Просмотр новых вычисляемых элементов

    Разверните проект Analysis Services Tutorial. После успешного окончания развертывания перейдите на вкладку "Обзор", нажмите кнопку "Повторное соединение" и удалите все иерархии и меры из области "Данные". В области "Метаданные" раскройте узел " Measures ", чтобы отобразить новые вычисляемые элементы в измерении мер (рисунок 11.20 )

    (рис 11.20) Созданные вычисляемые элементы

    Добавьте меры "Итоговая сумма продаж", " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount " в область данных и просмотрите результаты (рисунок 11.21 )

    (рис 11.21) Значения мер меры "Итоговая сумма продаж", "Internet Sales - Sales Amount" и "Reseller Sales - Sales Amount"

    Обратите внимание, что мера "Итоговая сумма продаж" является суммой мер " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount ".

    Добавьте пользовательскую иерархию " Product Categories " в область фильтра области "Данные" и отфильтруйте данные по позиции " Mountain Bikes " (Горные велосипеды) (рисунок 11.22 )

    (рис 11.22) Фильтр по иерархии "Product Categories"

    Обратите внимание, что мера "Итоговая сумма продаж" рассчитывается для категории продаж товара " Mountain Bikes " на основе мер " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount ".

    Добавьте пользовательскую иерархию " Date.Calendar Date " в область строк и просмотрите результаты (рисунок 11.23 )

    (рис 11.23) Добавленная пользовательская иерархия "Date.Calendar Date"

    Обратите внимание, что мера "Итоговая сумма продаж" рассчитывается за каждый календарный год для категории продаж товара " Mountain Bikes " на основе мер " Internet Sales - Sales Amount " и " Reseller Sales - Sales Amount ".

    Добавьте меры "Итоговый коэффициент валовой прибыли", "Коэффициент валовой прибыли по продажам через Интернет" и "Коэффициент валовой прибыли по продажам через торгового посредника" в область данных и просмотрите результаты (рисунок 11.24 )

    (рис 11.24) Добавленные меры "Итоговый коэффициент валовой прибыли", "Коэффициент валовой прибыли по продажам через Интернет" и "Коэффициент валовой прибыли по продажам через торгового посредника"

    Обратите внимание, что коэффициент валовой прибыли по продажам через торгового посредника значительно ниже, чем по продажам через Интернет. Кроме того, обратите внимание, что коэффициент валовой прибыли по продажам горных велосипедов увеличивается с течением времени.

    Измените фильтр с " Mountain Bikes " на " Bikes " и просмотрите результаты (рисунок 11.25 )

    (рис 11.25) Валовая прибыль по продажам всех велосипедов

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

    Измените фильтр на " Accessories " и просмотрите результаты (рисунок 11.26 )

    (рис 11.26) Валовая прибыль по продажам ассесуаров

    Обратите внимание, что продажа аксессуаров увеличивается с течением времени, но они составляют лишь небольшую часть общей суммы продаж. Кроме того, обратите внимание, что коэффициент валовой прибыли для продаж аксессуаров выше, чем для велосипедов.

    Последовательно раскройте узлы 2004 год, затем 2 полугодие 2004 года и 3 квартал 2004 года (рисунок 11.27 )

    (рис 11.27) Отсутствующие данные по продажам

    Обратите внимание, что в этом кубе не было продаж через Интернет после июля 2004 года и продаж через торгового посредника после июня 2004 года. Эти цифры по продажам еще не добавлены из систем источников в базу данных Adventure Works DW.

    Определение именованных наборов

    Далее требуется определить два именованных набора: именованный набор "Основные товары" и именованный набор "Крупные торговые посредники".

    Определение именованного набора "Основные товары"

    Перейдите на вкладку "Вычисления" конструктора кубов и нажмите кнопку "Представление формы" на панели инструментов.

    В области "Организатор сценариев" щелкните элемент [Общая доля продаж по всей номенклатуре продукции] и на панели инструментов вкладки "Вычисления" нажмите кнопку "Создать именованный набор" (рисунок 11.28)

    (рис 11.28) Кнопка "Создать именованный набор" на панели инструментов

    При определении нового вычисления на вкладке "Вычисления" следует помнить, что вычисления разрешаются в том порядке, в каком они приведены в области "Организатор сценариев". Положение фокуса ввода в этой панели при создании нового вычисления определяет порядок выполнения вычисления; определение нового вычисления создается непосредственно за тем вычислением, на котором находится фокус ввода.

    В поле "Имя" измените имя нового именованного набора на [Основные товары]. В области "Организатор сценариев" обратите внимание на особый значок, отличающий именованный набор от команды сценария или вычисляемого элемента (рисунок 11.29 )

    (рис 11.29) Создание именованного набора [Основные товары]

    На вкладке "Метаданные" области "Средства вычисления" последовательно раскройте элементы " Product ", " Category ", "Элементы" и " All Products ". Если в области "Средства вычисления" не отображаются метаданные, нажмите кнопку "Повторное соединение" на панели инструментов.

    Перетащите элемент " Bikes " в поле "Выражение" (рисунок 11.30)

    (рис 11.30) Выражение набора

    Создано выражение набора, которое будет возвращать набор элементов, относящихся к категории " Bikes " в измерении " Product ".

    Определение именованного набора "Крупные торговые посредники"

    Щелкните правой кнопкой мыши пункт [Основные товары] в области "Организатор сценариев" и на панели инструментов нажмите кнопку "Создать именованный набор".

    В поле "Имя" измените имя этого именованного набора на [Крупные торговые посредники].

    Для получения набора элементов с наибольшим числом сотрудников из иерархии атрибута "Имя торгового посредника" при ее пересечении с набором элементов в иерархии атрибута "Количество сотрудников" будет использована функция Exists. В поле "Выражение" введите Exists.

    На вкладке "Метаданные" области "Средства вычисления" раскройте измерение " Reseller ", а затем раскройте иерархию атрибута " Reseller Name ". Перетащите уровень " Reseller Name " в скобки выражения набора Exists.

    Для получения всех элементов этого набора будет использована функция Members. После части выражения набора введите точку, а затем добавьте функцию Members. Выражение должно иметь следующий вид:

    Exists([Reseller].[Reseller Name].[Reseller Name].Members)

    Теперь, когда определен первый набор для выражения Exists, можно приступить к добавлению второго набора - набора элементов измерения " Reseller ", которое имеет наибольшее количество сотрудников.

    На вкладке "Метаданные" области "Средства вычисления" раскройте пункт " Number of Employees " в измерении " Reseller ", раскройте строку "Элементы", а затем раскройте уровень " All Resellers " (рисунок 11.31)

    (рис 11.31) Уровень "All Resellers" измерения "Reseller"

    Обратите внимание, что элементы этой иерархии атрибута не распределены по группам.

    Откройте конструктор измерений для измерения " Reseller " и в области "Атрибуты" выберите элемент " Number of Employees " (рисунок 11.32)

    (рис 11.32) Элемент "Number of Employees" в конструкторе измерения "Reseller"

    В окне свойств измените значение свойства " DiscretizationMethod " на " Automatic ", а затем измените значение свойства " DiscretizationBucketCount " на "5".

    Разверните куб "Analysis Services Tutorial". После успешного завершения развертывания переключитесь в конструктор кубов, выберите куб "Analysis Services Tutorial" и нажмите кнопку "Повторное соединение" на панели инструментов "Вычисления".

    На вкладке "Метаданные" области "Средства вычисления" раскройте пункт " Number of Employees " в измерении " Reseller ", раскройте строку "Элементы", а затем раскройте уровень " All Resellers " (рисунок 11.33)

    (рис 11.33) Группы элементов иерархии "Number of Employees"

    Обратите внимание, что элементы этой иерархии атрибута сейчас хранятся в пяти группах с номерами от 0 до 4. Чтобы увидеть номер группы, наведите указатель мыши на группу и дождитесь всплывающей подсказки. Элементы этой иерархии атрибута распределены по группам, так как свойству " DiscretizationBucketCount " присвоено значение "5", а свойству " DiscretizationMethod " - значение " Automatic ".

    В окне "Выражение" добавьте запятую в выражении для набора Exists после функции Members и перед закрывающей скобкой, а затем перетяните элемент "83 - 100" из области "Метаданные" и поместите его после запятой (рисунок 11.34)

    (рис 11.34) Именованный набор [Крупные торговые посредники]

    Составлено выражение для набора Exists, которое будет возвращать набор элементов, пересекающийся с двумя указанными наборами: набором всех торговых посредников и набором посредников, имеющих от 83 до 100 сотрудников, когда на одной из осей будет находиться именованный набор [Крупные торговые посредники].

    /* named sets */

    (рис 11.35) Добавленный комментарий

    Определены два именованных набора, которые отображаются в области "Организатор сценариев". Теперь можно приступить к развертыванию этих именованных наборов и просмотру соответствующих изменений в кубе.

    Просмотр куба с использованием новых именованных наборов

    Разверните куб "Analysis Services Tutorial". После успешного окончания развертывания откройте вкладку "Обозреватель" и нажмите кнопку "Повторное соединение". Удалите все иерархии и меры в области "Данные". Добавьте меру " Reseller Sales - Sales Amount " в область данных, а затем добавьте пользовательскую иерархию " Product Categories " в область строк (рисунок 11.36)

    (рис 11.36) Распределение меры "Reseller Sales - Sales Amount" по пользовательской иерархии "Product Categories"

    Раскройте строку " Bikes ", чтобы увидеть элементы уровня " Subcategories " (рисунок 11.37)

    (рис 11.37) Элементы уровня "Subcategories"

    В области "Метаданные" в измерении " Product " щелкните правой кнопкой мыши именованный набор "Основные товары" и в контекстном меню выберите пункт "Добавить в область вложенных кубов" (рисунок 11.38)

    (рис 11.38) Фильтр по именованному набору "Основные товары"

    Обратите внимание, что в кубе остались только элемент " Bikes " атрибута " Category " и элементы подкатегорий, входящих в категорию " Bikes ". Это связано с тем, что именованный набор "Основные товары" используется для определения вложенного куба, свойства которого отображаются в области "Фильтр", находящейся над областью "Данные". Этот вложенный куб ограничивает число элементов атрибута " Category " в измерении " Product " внутри вложенного куба элементами именованного набора "Основные товары".

    В области "Метаданные" раскройте элемент " Reseller ", щелкните правой кнопкой мыши элемент "Крупные торговые посредники" и выберите команду "Добавить в область вложенных кубов" (рисунок 11.39)

    (рис 11.39) Фильтр по именованному набору "Крупные торговые посредники"

    Обратите внимание, что мера " Reseller Sales - Sales Amount " в области "Данные" отображает количество продаж только для крупных посредников, продающих велосипеды. Кроме того, обратите внимание, что в области "Фильтр" теперь отображаются два созданных именованных набора, которые используются для определения именно этого вложенного куба.

    Определение назначений с указанием области с помощью команд сценариев

    Далее будут применены инструкции SCOPE и THIS, чтобы определить квоты продаж для каждого финансового квартала финансового года 2005. Затем квоты продаж будут распределены по месяцам для всех финансовых годов в кубе. Также будет рассмотрено применение точек останова для отладки сценария вычисления.

    Просмотр распределения квот на количество продаж по датам и сотрудникам

    Откройте конструктор кубов для куба Analysis Services Tutorial и откройте вкладку "Обозреватель". Удалите все иерархии и измерения в области "Данные" и все элементы измерений в области "Фильтр". В раздел данных области "Данные" добавьте меру " Sales Amount Quota " из группы мер " Sales Quotas ". Добавьте определенную пользователем иерархию " Fiscal Date " из измерения " Date " в область столбцов. Добавьте иерархию атрибута " Employee Name " из измерения " Employee " в область строк (рисунок 11.40)

    (рис 11.40) Распределение меры "Sales Amount Quota" по финансовым годам и сотрудникам

    Обратите внимание, что для финансового года 2005 не задано никаких значений квот продаж.

    В области столбцов нажмите кнопку со стрелкой рядом с иерархией " Fiscal Year ", снимите флажки рядом с "FY 2002" и "FY 2003", а затем нажмите кнопку ОК. В области столбцов последовательно разверните узлы "FY2004", "H2 FY 2004" и "Q4 FY 2004" (рисунок 11.41)

    (рис 11.41) Квота продаж по каждому из сотрудников, которые имеют квоту продаж на каждый месяц четвертого квартала 2004 финансового года

    Обратите внимание, что квота суммы продаж для каждого финансового месяца финансового квартала совпадает с квотой суммы продаж для этого финансового квартала. Это обусловлено тем, что гранулярность измерения времени в группе мер " Sales Quota " установлена на уровне квартала, что обсуждалось в предыдущей лабораторной работе.

    Определение области вычисления квоты суммы продаж в финансовом году 2005

    Выберите вкладку "Вычисления", а затем нажмите кнопку "Представление формы" на панели инструментов.

    В области "Организатор сценариев" выберите элемент "Крупные посредники", а затем нажмите кнопку "Создать команду сценария" на панели инструментов вкладки "Вычисления" (рисунок 1242)

    (рис 11.42) Кнопка "Создать команду сценария" на панели инструментов вкладки "Вычисления"

    Обратите внимание, что в области "Выражения вычислений" отображается пустой сценарий и что команда этого сценария отобразится с пустым заголовком в области "Организатор сценариев".

    В области "Выражения вычислений" введите следующую инструкцию:

    /* Changing Scope to All or Default Member */

    SCOPE (ROOT())

    Инструкция SCOPE изменит область куба на "Все" или на элемент по умолчанию для всех атрибутов в этом кубе (рисунок 11.43)

    (рис 11.43) Созданная команда сценария SCOPE (ROOT())

    Нажмите кнопку "Создать команду сценария" в области инструментов вкладки "Вычисления", а затем введите следующую инструкцию в области "Выражения вычислений" (рисунок 11.44)

    /* Defining the cube scope for the sales amount quotas for FY2005 */

    SCOPE ()

    (рис 11.44) Конструирование команды SCOPE для FY2005

    Обратите внимание, что под последним выражением появится волнистая красная линия, которая указывает, что в скобках необходимо указать набор элементов для инструкции SCOPE. Затем добавьте меру " Sales Amount Quota " в инструкцию SCOPE, чтобы включить ее в область. На вкладке "Метаданные" области "Средства вычисления" раскройте элементы " Measures " и " Sales Amount Quota ", затем перетащите элемент " Sales Amount Quota " в скобки инструкции SCOPE в области "Выражения вычислений" (рисунок 11.45)

    (рис 11.45) Добавление элемента "Sales Amount Quota" в инструкцию SCOPE

    Обратите внимание, что красная волнистая линия исчезла. После этого необходимо добавить элемент измерения "FY 2005" в инструкцию SCOPE, чтобы внести этот элемент измерения времени в текущую область. На вкладке "Метаданные" области "Средства вычисления" раскройте измерение "Date", затем элементы " Fiscal Date ", " Fiscal Year " и перетащите элемент " FY 2005 " в инструкцию SCOPE в области "Выражения вычислений" сразу после элемента [ Sales Amount Quota ] определяемого набора.

    Обратите внимание на волнистую красную линию под частью [Date] нового элемента набора. Эта линия указывает, что прямо перед этим элементом измерения имеется синтаксическая ошибка, так как в инструкции SCOPE все элементы набора должны отделяться запятыми. Добавьте необходимую запятую перед частью [ Date ] элемента " FY 2005 " в измерении " Date " (рисунок 11.46)

    (рис 11.46) Добавление элемента "FY2005" в инструкцию SCOPE

    Обратите внимание, что красная волнистая линия исчезла. Затем из измерения " Employee " добавьте элементы пользовательской иерархии " Employees " в инструкцию SCOPE, чтобы добавить эти элементы в текущую область действия. На вкладке "Метаданные" области "Средства вычисления" раскройте измерение "Employee" и перетащите определяемую пользователем иерархию " Employees " в инструкцию SCOPE в области "Выражения вычислений" сразу после элемента [ Date ].[ Fiscal Date].[ Fiscal Year].[ 2005 ] в определяемом наборе данных. Обратите внимание на волнистую красную линию под частью [ Employee ] нового элемента набора, которая означает, что элементы инструкции SCOPE должны быть разделены запятыми. Поставьте нужную запятую перед частью [ Employee ] нового элемента (рисунок 11.47)

    (рис 11.47) Добавление пользовательской иерархии "Employees" в инструкцию SCOPE

    Обратите внимание, что красная волнистая линия исчезла. В конце элемента [ Employee ].[ Employees ] этого набора в инструкции SCOPE добавьте следующее предложение, чтобы завершить определение третьего элемента набора:

    .Members

    Это предложение указывает, что в текущую область куба должны быть включены все элементы иерархии "Employees" измерения "Employee".

    Убедитесь, что завершенная инструкция SCOPE соответствует следующему сценарию:

    /* Defining the cube scope for the sales amount quotas for FY2005 */
    SCOPE ([Measures].[Sales Amount Quota],
    [Date].[Fiscal Date].[Fiscal Year].[2005],
    [Employee].[Employees].Members)

    Была определена область, определяющая вложенный куб, к которому будет применяться многомерное выражение для вычисления квот продаж для финансового года 2005.

    На панели инструментов вкладки "Вычисления" нажмите кнопку "Представление сценария" и просмотрите последние добавленные команды (рисунок 11.48)

    (рис 11.48) Добавленные в представление сценария команды

    Обратите внимание, что каждая команда сценария появляется в виде, введенном в области "Выражения вычислений", однако в конце ее стоит точка с запятой. Также обратите внимание, что службы SSAS вставили примечание перед каждой командой сценария, которое позволяет понять смысл отдельной команды.

    Определение и проверка нового вычисления квоты продаж для финансового года 2005

    Далее в сценарий будет добавлена новая команда, вычисляющая размер квоты продаж на 2005 финансовый год по всем элементам измерения " Employee ". Однако вместо представления "Форма" команда будет добавлена прямо в представление сценария. В представлении "Сценарий" между командами сценария необходимо ставить точку с запятой.

    В представлении "Сценарий" введите следующую инструкцию на новой строке в конце сценария вычисления:

    /* Applying a calculation to the subcube */

    THIS = [Date].[Fiscal Date].[Fiscal Year].[2004] * 1.25;

    Инструкция THIS присваивает мере " Sales Amount Quota " новое значение на пересечении элементов " Employee " и " FY 2005 " вложенного куба. Новое значение основано на значении, существующем на пересечении элемента " Employee " и меры " Sales Amount Quota " для финансового года 2004, умноженного на 1,25.

    В области "Выражения вычислений" щелкните границу слева от инструкции THIS, чтобы задать точку останова (рисунок 11.49)

    (рис 11.49) Точка останова

    Заметьте, что на этой границе появилась красная точка, а инструкция выделена красным цветом. При выполнении проекта в режиме отладки измененный проект будет развернут на экземпляре служб SSAS, куб будет обработан и сценарий вычисления будет выполнен до точки останова. Затем можно продолжить выполнение по шагам. Если не задать точку останова и выполнить проект в режиме отладки, то сценарий вычисления прервется на первой инструкции сценарии, то есть на инструкции CALCULATE.

    В меню "Отладка" выберите команду "Начать отладку". Также можно нажать клавишу F5. Проект будет развернут и обработан, а сценарий вычисления будет выполнен вплоть до точки останова (рисунок 11.50)

    (рис 11.50) Сценарий, выполненный до точки останова

    Скрыв все закрепленные окна, можно освободить больше площади для просмотра области "Сводная таблица", отображаемой в нижней части вкладки" Вычисления". Область "Сводная таблица" помогает в отладке. В области "Сводная таблица" в раздел данных добавьте меру " Sales Amount Quota ", в область столбцов добавьте определяемую пользователем иерархию " Fiscal Date ", а затем в область строк - иерархию атрибута " Employee Name " из измерения " Employee ". Выполните прокрутку до нижней части сводной таблицы и просмотрите сотрудников, для которых назначены квоты продаж (рисунок 11.51)

    (рис 11.51) Сотрудники, для которых назначены квоты продаж

    Обратите внимание, что в элементе " FY 2005 " уровня " Fiscal Year " для меры " Sales Amount Quota " ни у одного сотрудника нет значения в области данных меры " Sales Amount Quota ". По умолчанию в режиме отладки в области "Сводная таблица" отображаются пустые ячейки.

    Нажмите клавишу F10, чтобы выполнить инструкцию THIS и вычислить квоты продаж для финансового года 2005 (рисунок 11.52)

    Обратите внимание, что теперь в области "Сводная таблица" вычислены ячейки на пересечении меры " (рис 11.52) на панели инструментов. По умолчанию, измененные ячейки выделены.

    В области "Сводная таблица" снимите флажки " FY 2002 ", " FY 2003 " и " FY 2004 i", чтобы удалить эти элементы из области столбцов.

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

    (рис 11.53) Сотрудники, имеющие значения для квоты суммы продаж

    Попытайтесь развернуть узел " FY 2005 " в разделе столбцов области "Сводная таблица". Обратите внимание, что раскрыть элемент " FY2005 " не удается, так как значения элемента " H1 FY 2005 " на пересечении меры " Sales Amount Quota " и иерархии атрибута " Employee Name " не были вычислены (поскольку они оказались вне текущей области).

    Чтобы просмотреть пустые ячейки для значений элементов " H1 FY 2005 ", щелкните в любом месте области "Сводная таблица" и в контекстном меню выберите команду "Показывать пустые ячейки", чтобы показать все пустые ячейки.

    В меню "Отладка" выберите команду "Остановить отладку" (или нажмите сочетание клавиш Shift-F5). Удалите точку останова в сценарии вычисления, щелкнув красную точку на левом поле.

    Распределение квоты суммы продаж по полугодиям и кварталам финансового года 2005

    Далее будет изменена область расчетов, чтобы включить элементы финансового полугодия 2005 финансового года вместо элемента 2005 финансового года, для каждого из которых будет выделена половина значения квоты продаж для 2005 финансового года. Затем в область вместо элемента 2005 финансового года включаются элементы кварталов 2005 финансового года, и для каждого из них выделяется четверть значения квоты продаж на 2005 финансовый год. В завершение будет произведена проверка выделенных значений.

    В представлении "Сценарий" области "Выражения вычислений" введите следующую инструкцию в новой строке в конце сценария вычисления:

    /* Allocation of Sales Amount Quota to the 2005 Fiscal Semesters */

    SCOPE ( [Date].[Fiscal Semester].[Fiscal Semester].Members );

    Эта инструкция SCOPE вложена в другую инструкцию SCOPE, поскольку инструкция END SCOPE расположена между данной инструкцией SCOPE и предыдущей инструкцией SCOPE. При вложении инструкции SCOPE вложенная инструкция SCOPE наследует область родительской инструкции для атрибутов, область которых не изменяется. Предыдущая инструкция SCOPE не изменяет меру " Sales Amount Quota ", пользовательскую иерархию " Employees " или пользовательскую иерархию " Fiscal Date " непосредственно. Она добавляет в определение вложенного куба все элементы иерархии атрибута " Fiscal Semester " (с помощью функции Members ). В результате выполнения вложенной инструкции SCOPE пространство куба будет включать все элементы на пересечении элемента " Employee " и меры " Sales Amount Quota " в любом финансовом полу годии 2005 финансового года. Обратите внимание, что в данный момент этот финансовый год содержит всего одно полугодие.

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    THIS = [Date].[Fiscal Date].CurrentMember.Parent / 2;

    Эта инструкция присваивает каждому финансовому полугодию в определенном пространстве куба значение, вычисленное для этого финансового квартала. Функция CurrentMember.Parent выделяет каждому элементу половину значения его родителя.

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    /* Allocation of Sales Amount Quota to the 2005 Fiscal Quarters */

    SCOPE ( [Date].[Fiscal Quarter].[Fiscal Quarter].Members );

    Эта инструкция SCOPE также вложена в другую инструкцию SCOPE, поскольку инструкция END SCOPE расположена между данной инструкцией SCOPE и предыдущей инструкцией SCOPE. Предыдущая инструкция SCOPE не изменяет меру " Sales Amount Quota ", пользовательскую иерархию " Employees " или пользовательскую иерархию " Fiscal Date " непосредственно. Она добавляет в определение вложенного куба каждый элемент иерархии атрибута " Fiscal Quarter " (с помощью функции Members ). В результате пространство куба включает все элементы на пересечении элемента " Employee " и меры " Sales Amount Quota " каждого финансового квартала 2005 финансового года (в данный момент этот финансовый год содержит всего один квартал).

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    THIS = [Date].[Fiscal Date].CurrentMember.Parent / 2

    Эта инструкция присваивает каждому финансовому кварталу в определенном пространстве куба значение, вычисленное для этого финансового квартала. Функция CurrentMember.Parent используется, чтобы присвоить каждому элементу половину значения его родителя.

    На панели "Выражения вычислений" щелкните границу рядом с последней инструкцией SCOPE, чтобы установить точку останова, а затем нажмите клавишу F5 (рисунок 11.54)

    (рис 11.54) Точка останова

    Сценарий вычисления будет выполнен до этой точки останова. Щелкните сначала правой кнопкой мыши в любом месте раздела данных области "Сводная таблица", а затем в контекстном меню выберите пункт "Показывать пустые ячейки", чтобы скрыть пустые ячейки (рисунок 11.55)

    (рис 11.55) Область данных со скрытыми пустыми ячейками

    Обратите внимание, что область данных заполняется теми же мерами и иерархиями, которые использовались при последнем проходе отладчика, а значение элемента " H1 FY 2005 " вычисляется, как половина родительского.

    Обратите внимание, что значение для каждого элемента " FY 2005 " вычисляется заново на основе статистической обработки его элементов, в данном случае первого финансового полугодия финансового года. Значение элемента 2005-го финансового года зависит от вычисления элемента " Fiscal Semester 2005 ", так как каждый сценарий выполняется в отдельном проходе. Чтобы сделать существующее выражение не изменяемым последующими инструкциями сценария вычисления, используйте инструкцию FREEZE, которая фиксирует текущие значения ячеек заданного вложенного куба. Когда ячейки зафиксированы, изменения в других ячейках не влияют на них.

    В области столбцов раскройте элемент " H1 FY 2005 ". Обратите внимание, что значения элемента " Q1 FY 2005 " еще не вычислялись.

    Щелкните сначала в любом месте раздела данных области Сводная таблица, а затем значок "Показывать пустые ячейки" () в области инструментов вкладки "Вычисления". В области столбцов раскройте элемент " Q1 FY 2005 " (рисунок 11.56)

    (рис 11.56) Содержимое элемента "Q1 FY 2005"

    Обратите внимание, что двум месяцам первого квартала 2005 финансового года не присвоено значение, так как они пока не включены в область текущего вложенного куба (до тех пор, пока не выполнены последние две инструкции сценария). Измерение времени в кубе Analysis Services Tutorial содержит только два первых месяца финансового года 2005. Поэтому элементы " Q2 FY 2005 " отсутствуют.

    Нажмите клавишу F10, чтобы выполнить инструкцию SCOPE, после чего нажмите клавишу F10 снова, чтобы выполнить последнюю инструкцию сценария вычисления, которая применит данное вычисление к текущему вложенному кубу.

    (рис 11.57) Значения элемента Q1 FY 2005

    Обратите внимание, что вычисляется значение элемента " Q1 FY 2005 ", при этом значения элементов " H1 FY 2005i " и " FY2005 " вычисляются повторно (как результат статистической обработки их дочерних элементов). Кроме того, обратите внимание, что значение для каждого финансового месяца финансового года 2005 (июля и августа 2005-го года) не вычисляется. На следующем этапе будут присвоены соответствующие значения каждому из кварталов.

    В меню "Отладка" выберите команду "Остановить отладку" (или нажмите сочетание клавиш Shift + F5). Удалите точку останова в сценарии вычисления.

    Распределение квот продаж по месяцам

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    /* Allocate Quotas to Months */

    SCOPE ( [Date].[Fiscal Date].[Month Name].Members );

    Данная инструкция SCOPE является вложенной инструкцией области, она изменяет пространство куба, к которому применено многомерное выражение, чтобы присвоить квоты суммы продаж для каждого финансового месяца на основе значений, указанных для каждого финансового квартала. Эта инструкция SCOPE аналогична предыдущей вложенной инструкции SCOPE, однако в ней переопределяется область самой определенной пользователем иерархии " Fiscal Date ". Поэтому элементы пространства куба вместо элементов финансового месяца финансового года 2005 теперь будут включать в себя все элементы финансового месяца измерения " Date ".

    В области "Выражения вычислений" введите следующую инструкцию на новой строке в конце сценария вычисления:

    THIS = [Date].[Fiscal Date].CurrentMember.Parent / 3;

    Эта инструкция присваивает каждому элементу месяца иерархии " Fiscal Date " треть значения его родителя уровня квартала. Это вычисление будет применено ко всем финансовым месяцам куба.

    В области "Выражения вычислений" щелкните границу слева от последней инструкции THIS, чтобы установить точку останова, а затем нажмите клавишу F5 (рисунок 11.58)

    (рис 11.58) Просмотр значений для июля и августа 2004 года

    Обратите внимание, что для июля и для августа 2004 года значения не вычислены. Щелкните правой кнопкой мыши область "Данные" и к контекстном меню выберите команду "Показывать пустые ячейки", чтобы отобразить только ячейки, имеющие значения. Это позволит легче проследить, как последняя инструкция применяется в сценарии вычисления. Нажмите клавишу F10, чтобы выполнить последнюю инструкцию (рисунок 11.59)

    (рис 11.59) Вычисленные значения для июля и августа 2004 года

    Обратите внимание, что значение " Sales Amount Quota " для каждого сотрудника в каждом финансовом месяце равно трети значения родительского элемента. В области столбцов удалите элемент " FY 2005 " и добавьте элемент " Q4 FY 2004 ". Последовательно раскройте элементы " FY 2004 ", " H2 FY 2004 " и " Q4 FY 2004 " ().

    (рис 11.60)

    Заметьте, что значение для каждого финансового месяца равно трети итогового значения для финансового квартала. В меню "Отладка" выберите команду "Остановить отладку". Удалите точку останова в сценарии вычисления. На панели инструментов нажмите кнопку "Сохранить все".

    Контрольные вопросы

  • Дайте определение понятию "вычисление". Какие существуют виды вычислений в SSAS?
  • Дайте определение понятиям "вычисляемый элемент" и "вычисляемая мера".
  • Дайте определение понятию "именованный набор". Каким образом он создается?
  • Какие функции могут выполнять команды сценариев?
  • Вернуться к учебному плану