Распределение квоты суммы продаж по полугодиям и кварталам финансового года 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 (Рисунок 496).
Рисунок 512. Точка останова
Сценарий вычисления будет выполнен до этой точки останова. Щелкните сначала правой кнопкой мыши в любом месте раздела данных области «Сводная таблица», а затем в контекстном меню выберите пункт «Показывать пустые ячейки», чтобы скрыть пустые ячейки (Рисунок 497).
Рисунок 513. Область данных со скрытыми пустыми ячейками
Обратите внимание, что область данных заполняется теми же мерами и иерархиями, которые использовались при последнем проходе отладчика, а значение элемента «H1 FY 2005» вычисляется, как половина родительского.
Обратите внимание, что значение для каждого элемента «FY 2005» вычисляется заново на основе статистической обработки его элементов, в данном случае первого финансового полугодия финансового года. Значение элемента 2005-го финансового года зависит от вычисления элемента «Fiscal Semester 2005», так как каждый сценарий выполняется в отдельном проходе. Чтобы сделать существующее выражение не изменяемым последующими инструкциями сценария вычисления, используйте инструкцию FREEZE, которая фиксирует текущие значения ячеек заданного вложенного куба. Когда ячейки зафиксированы, изменения в других ячейках не влияют на них.
В области столбцов раскройте элемент «H1 FY 2005». Обратите внимание, что значения элемента «Q1 FY 2005» еще не вычислялись.
Щелкните сначала в любом месте раздела данных области Сводная таблица, а затем значок «Показывать пустые ячейки» ( ) в области инструментов вкладки «Вычисления». В области столбцов раскройте элемент «Q1 FY 2005» (Рисунок 498).
Рисунок 514. Содержимое элемента «Q1 FY 2005»
Обратите внимание, что двум месяцам первого квартала 2005 финансового года не присвоено значение, так как они пока не включены в область текущего вложенного куба (до тех пор, пока не выполнены последние две инструкции сценария). Измерение времени в кубе Analysis Services Tutorial содержит только два первых месяца финансового года 2005. Поэтому элементы «Q2 FY 2005» отсутствуют.
Нажмите клавишу F10, чтобы выполнить инструкцию SCOPE, после чего нажмите клавишу F10 снова, чтобы выполнить последнюю инструкцию сценария вычисления, которая применит данное вычисление к текущему вложенному кубу.
Рисунок 515. Значения элемента Q1 FY 2005
Обратите внимание, что вычисляется значение элемента «Q1 FY 2005», при этом значения элементов «H1 FY 2005» и «FY2005» вычисляются повторно (как результат статистической обработки их дочерних элементов). Кроме того, обратите внимание, что значение для каждого финансового месяца финансового года 2005 (июля и августа 2005-го года) не вычисляется. На следующем этапе будут присвоены соответствующие значения каждому из кварталов.
В меню «Отладка» выберите команду «Остановить отладку» (или нажмите сочетание клавиш Shift + F5). Удалите точку останова в сценарии вычисления.