Определение оценивающих назначений с помощью команд сценариев
В службах Службы Analysis Services сценарии многомерных выражений могут применяться как к кубу в целом, так и к отдельным его секциям в отдельные моменты выполнения сценария. Команда сценария по умолчанию, инструкция CALCULATE, которая заполняет ячейки куба статистическими данными, основанными на области по умолчанию, была рассмотрена ранее.
Областью по умолчанию является весь куб, однако, как говорилось в предыдущем разделе, с помощью инструкции SCOPE можно задать более ограниченную область, называемую вложенным кубом, после чего применять сценарий многомерных выражений именно к этой области. Инструкция SCOPE определяет область всех последующих выражений и инструкций многомерных выражений в сценарии вычисления и действует, пока текущая область не будет завершена или переопределена. Затем инструкция THIS будет использована, чтобы применить многомерное выражение к текущей области. Можно использовать инструкцию BACK_COLOR, чтобы задать фоновый цвет ячеек в текущей области, что может быть полезно при отладке.
В задачах этого раздела применяются инструкции SCOPE и THIS, чтобы определить квоты продаж для каждого финансового квартала финансового года 2005. Затем квоты продаж распределяются по месяцам для всех финансовых годов в кубе. Также будет рассмотрено применение точек останова для отладки сценария вычисления.
Просмотр распределения квот на количество продаж по датам и сотрудникам
Просмотр распределения квот на количество продаж по датам и сотрудникам
Откройте конструктор кубов, выберите куб учебника по службам Службы Analysis Services и откройте вкладку Браузер.
Удалите все иерархии и измерения в панели Данные и все элементы измерений в панели Фильтр.
В раздел данных панели Данные добавьте меру Sales Amount Quota из группы мер Sales Quotas.
Добавьте определенную пользователем иерархию Fiscal Date из измерения Date в область столбцов.
Добавьте иерархию атрибута Имя сотрудника из измерения Сотрудник в область строк.
Обратите внимание, что для финансового года 2005 не задано никаких значений квот продаж.
В области столбцов нажмите кнопку со стрелкой рядом с иерархией Финансовый год, снимите флажки рядом с FY 2002 и FY 2003, а затем нажмите кнопку ОК.
В области столбцов последовательно разверните узлы FY2004, H2 FY 2004 и Q4 FY 2004.
Обратите внимание, что квота суммы продаж для каждого финансового месяца финансового квартала совпадает с квотой суммы продаж для этого финансового квартала. Это обусловлено тем, что гранулярность измерения времени в группе мер Sales Quota установлена на уровне квартала, что обсуждалось на занятии 5.
На следующем рисунке показана квота продаж по каждому из сотрудников, которые имеют квоту продаж на каждый месяц четвертого квартала 2004 финансового года.
.gif)
Определение области вычисления квоты суммы продаж в финансовом году 2005
В этой задаче будет просмотрена и изменена текущая область, а затем определено вычисление, которое отразит значения квот суммы продаж финансового года 2005, основываясь на значениях финансового года 2004.
Определение области вычисления квоты суммы продаж в финансовом году 2005
Выберите вкладку Вычисления, а затем нажмите кнопку Представление формы на панели инструментов.
В области Организатор сценариев выберите элемент Крупные посредники, а затем нажмите кнопку Создать команду сценария на панели инструментов вкладки Вычисления.
Обратите внимание, что в панели Выражения вычислений отображается пустой сценарий и что команда этого сценария отобразится с пустым заголовком в панели Организатор сценариев.
В панели Выражения вычислений введите следующую инструкцию:
/* Changing Scope to All or Default Member */ SCOPE (ROOT())Инструкция SCOPE изменит область куба на «Все» или по умолчанию на элемент всех атрибутов в этом кубе.
Нажмите кнопку Создать команду сценария в области инструментов вкладки Вычисления, а затем введите следующую инструкцию в панели Выражения вычислений:
/* Defining the cube scope for the sales amount quotas for FY2005 */ SCOPE ()Обратите внимание, что под последним выражением появится волнистая красная линия, которая указывает, что в скобках необходимо указать набор элементов для инструкции SCOPE. Затем добавьте меру Квота суммы продаж в инструкцию SCOPE, чтобы включить ее в область.
На вкладке Метаданные панели Средства вычисления разверните элементы Measures и Sales Amount Quota, затем перетащите элемент Sales Amount Quota в скобки инструкции SCOPE в панели Выражения вычислений.
Обратите внимание, что красная волнистая линия исчезла. После этого вы добавите элемент измерения FY 2005 в инструкцию SCOPE, чтобы внести этот элемент измерения времени в текущую область.
На вкладке Метаданные панели Средства вычисления раскройте измерение Date, затем элементы Fiscal, Fiscal Date, Fiscal Year и перетащите элемент FY 2005 в инструкцию SCOPE в панели Выражения вычислений сразу после элемента [Sales Amount Quota] определяемого набора.
Обратите внимание на волнистую красную линию под частью [Date] нового элемента набора. Эта линия указывает, что прямо перед этим элементом измерения имеется синтаксическая ошибка, так как в инструкции SCOPE все элементы набора должны отделяться запятыми.
Добавьте необходимую запятую перед частью [Date] элемента FY 2005 в измерении Date.
Обратите внимание, что красная волнистая линия исчезла. Затем из измерения Employee добавьте элементы пользовательской иерархии Employees в инструкцию SCOPE, чтобы добавить эти элементы в текущую область действия.
На вкладке Метаданные панели Средства вычисления раскройте измерение Employee и перетащите определяемую пользователем иерархию Employees в инструкцию SCOPE в области Выражения вычислений сразу после элемента [Date].[Fiscal Date].[Fiscal Year].&[2005] в определяемом наборе данных.
Обратите внимание на волнистую красную линию под частью [Employee] нового элемента набора, которая означает, что элементы инструкции SCOPE должны быть разделены запятыми.
Поставьте нужную запятую перед частью [Employee] нового элемента.
Обратите внимание, что красная волнистая линия исчезла.
В конце элемента [Employee].[Employees] этого набора в инструкции SCOPE добавьте следующее предложение, чтобы завершить определение третьего элемента набора:
.MembersЭто предложение указывает, что в текущую область куба должны быть включены все элементы иерархии Employees измерения Employee.
Убедитесь, что завершенная инструкция SCOPE соответствует следующему сценарию:
SCOPE ([Measures].[Sales Amount Quota],[Date].[Fiscal Date].[Fiscal Year].&[2005], [Employee].[Employees].Members)Была определена область, определяющая вложенный куб, к которому будет применяться многомерное выражение для вычисления квот продаж для финансового года 2005.
На панели инструментов вкладки Вычисления нажмите кнопку Представление сценария и просмотрите последние добавленные команды.
Обратите внимание, что каждая команда сценария появляется в виде, введенном в панели Выражения вычислений, однако в конце ее стоит точка с запятой. Также обратите внимание, что службы Службы Analysis Services вставили комментарий перед каждой командой сценария, которое позволяет понять смысл отдельной команды.
Определение и проверка нового вычисления квоты продаж для финансового года 2005
В этой задаче в сценарий будет добавлена новая команда, вычисляющая размер квоты продаж на 2005 финансовый год по всем элементам измерения Сотрудник. Однако вместо представления Форма команда будет добавлена прямо в представление сценария. В представлении Сценарий между командами сценария необходимо ставить точку с запятой.
Задание и проверка нового вычисления квоты продаж для финансового года 2005
В представлении Сценарий введите следующую инструкцию на новой строке в конце сценария вычисления:
/* Applying a calculation to the subcube */ THIS = [Date].[Fiscal Date].[Fiscal Year].&[2004] * 1.25;Инструкция THIS присваивает мере Квота суммы продаж новое значение на пересечении элементов Employee и FY 2005 вложенного куба. Новое значение основано на значении, существующем на пересечении элемента Employee и меры Sales Amount Quota для финансового года 2004, умноженного на 1,25.
В панели Выражения вычислений щелкните границу слева от инструкции THIS, чтобы задать точку останова.
Заметьте, что на этой границе появилась красная точка, а инструкция выделена красным цветом. При выполнении проекта в режиме отладки измененный проект будет развернут на экземпляре служб Службы Analysis Services, куб будет обработан и сценарий вычисления будет выполнен до точки останова. Затем можно продолжить выполнение по шагам. Если не задать точку останова и выполнить проект в режиме отладки, то сценарий вычисления прервется на первой инструкции сценарии, то есть на инструкции CALCULATE.
В меню Отладка выберите команду Запустить отладку. Такжеможно нажать клавишу F5.
Проект будет развернут и обработан, а сценарий вычисления будет выполнен вплоть до точки останова.
Скрыв все закрепленные окна, можно освободить больше площади для просмотра панели Сводная таблица, отображаемой в нижней части вкладки Вычисления.
Панель Сводная таблица помогает в отладке.
В панели Сводная таблица в область данных добавьте меру Sales Amount Quota, в область столбцов добавьте определяемую пользователем иерархию Fiscal Date, а затем в область строк — иерархию атрибута Employee Name из измерения Employee. Выполните прокрутку до нижней части сводной таблицы и просмотрите сотрудников, для которых назначены квоты продаж.
Обратите внимание, что в элементе FY 2005 уровня Fiscal Year для меры Sales Amount Quota ни у одного сотрудника нет значения в области данных меры Sales Amount Quota. По умолчанию в режиме отладки в панели Сводная таблица отображаются пустые ячейки.
Нажмите клавишу F10, чтобы выполнить инструкцию THIS и вычислить квоты продаж для финансового года 2005.
Обратите внимание, что теперь в панели Сводная таблица вычислены ячейки на пересечении меры Sales Amount Quota, элемента измерения FY 2005 и элемента Employee Name. Заметьте также, что ячейки, затронутые инструкцией THIS, выделены желтым цветом. Включить или отключить выделение измененных ячеек можно с помощью значка на панели инструментов. По умолчанию, измененные ячейки выделены.
В панели Сводная таблица снимите флажки FY 2002, FY 2003 и FY 2004, чтобы удалить эти элементы из области столбцов.
Щелкните правой кнопкой мыши в любом месте области данных и выберите пункт Показывать пустые ячейки, чтобы удалить флажок, поставленный для этого параметра, и скрыть пустые ячейки (эта функция доступна также на панели инструментов вкладки Вычисления). Это упростит просмотр всех сотрудников, имеющих значения для квоты суммы продаж.
Попытайтесь развернуть узел FY 2005 в области столбцов панели Сводная таблица.
Обратите внимание, что раскрыть элемент FY2005 не удается, так как значения элемента H1 FY 2005 на пересечении меры Sales Amount Quota и иерархии атрибута Employee Name не были вычислены (поскольку они оказались вне текущей области).
Чтобы просмотреть пустые ячейки для значений элементов H1 FY 2005, щелкните в любом месте панели Сводная таблица и выберите команду Показывать пустые ячейки на панели инструментов вкладки «Вычисления», чтобы показать все пустые ячейки.
В меню Отладка выберите команду Остановить отладку (или нажмите сочетание клавиш Shift-F5).
Удалите точку останова в сценарии вычисления, щелкнув красную точку на левом поле.
Распределение квот суммы продаж по полугодиям и кварталам финансового года 2005
В этой задаче будет изменена область, чтобы включить элементы финансового полугодия 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 непосредственно. Она добавляет в определение вложенного куба все элементы иерархии атрибута Финансовое полугодие (с помощью функции Members). Дополнительные сведения см. в разделе Members (набор) (многомерные выражения). В результате выполнения вложенной инструкции SCOPE пространство куба будет включать все элементы на пересечении элемента Сотрудник и меры Квота суммы продаж каждого финансового полугодия 2005 финансового года. Обратите внимание, что в данный момент в кубе для 2005 финансового года содержится только одно финансовое полугодие.
В панели Выражения вычислений введите следующую инструкцию на новой строке в конце сценария вычисления:
THIS = [Date].[Fiscal Date].CurrentMember.Parent / 2;Эта инструкция присваивает каждому финансовому полугодию в определенном пространстве куба значение, вычисленное для этого финансового квартала. Функция CurrentMember.Parent выделяет каждому элементу половину значения его родителя. Дополнительные сведения см. в разделах 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 непосредственно. Она добавляет в определение вложенного куба каждый элемент иерархии атрибута Финансовый квартал (с помощью функции Members). В результате пространство куба включает все элементы на пересечении элемента Сотрудник и меры Квота суммы продаж каждого финансового квартала 2005 финансового года. Обратите внимание, что в данный момент в кубе для 2005 финансового года содержится только один финансовый квартал.
В панели Выражения вычислений введите следующую инструкцию на новой строке в конце сценария вычисления:
THIS = [Date].[Fiscal Date].CurrentMember.Parent / 2;Эта инструкция присваивает каждому финансовому кварталу в определенном пространстве куба значение, вычисленное для этого финансового квартала. Функция CurrentMember.Parent используется, чтобы присвоить каждому элементу половину значения его родителя.
На панели Выражения вычислений щелкните границу рядом с последней инструкцией SCOPE, чтобы установить точку останова, а затем нажмите клавишу F5.
Сценарий вычисления будет выполнен до этой точки останова.
Щелкните сначала в любом месте раздела данных панели Сводная таблица, а затем пункт Показывать пустые ячейки на панели инструментов вкладки «Вычисления», чтобы скрыть пустые ячейки.
Обратите внимание, что панель данных заполняется теми же мерами и иерархиями, которые использовались при последнем проходе отладчика, а значение элемента H1 FY 2005 вычисляется, как половина родительского, как показано на рисунке ниже.
Обратите внимание, что значение для каждого элемента FY 2005 вычисляется заново на основе статистической обработки его элементов, в данном случае первого финансового полугодия финансового года. Значение элемента 2005-го финансового года зависит от вычисления элемента Fiscal Semester 2005, так как каждый сценарий выполняется в отдельном проходе. Чтобы сделать существующее значение не изменяемым последующими инструкциями сценария вычисления, используйте инструкцию FREEZE. Дополнительные сведения см. в разделе Инструкция FREEZE (многомерные выражения).
.gif)
В области столбцов разверните элемент H1 FY 2005.
Обратите внимание, что значения элемента Q1 FY 2005 еще не вычислялись.
Щелкните сначала в любом месте раздела данных панели Сводная таблица, а затем пункт Показывать пустые ячейки в области инструментов вкладки «Вычисления».
В области столбцов разверните элемент Q1 FY 2005.
Обратите внимание, что двум месяцам первого квартала 2005 финансового года не присвоено значение, так как они пока не включены в область текущего вложенного куба (до тех пор, пока не выполнены последние две инструкции сценария). Измерение времени в кубе учебника по службам Службы Analysis Services содержит только два первых месяца финансового года 2005. Поэтому элементы Q2 FY 2005 отсутствуют.
Нажмите клавишу F10, чтобы выполнить инструкцию SCOPE, после чего нажмите клавишу F10 снова, чтобы выполнить последнюю инструкцию сценария вычисления, которая применит данное вычисление к текущему вложенному кубу.
Обратите внимание, что вычисляется значение элемента Q1 FY 2005, при этом значения элементов H1 FY 2005 и FY2005 вычисляются повторно (как результат статистической обработки их дочерних элементов), что показано на следующем рисунке. Кроме того, обратите внимание, что значение для каждого финансового месяца финансового года 2005 (июля и августа 2005-го года) не вычисляется. На следующем этапе будут присвоены соответствующие значения каждому из кварталов.
.gif)
В меню Отладка выберите команду Остановить отладку (или нажмите сочетание клавиш Shift + F5).
Удалите точку останова в сценарии вычисления.
Распределение квот продаж по месяцам
На этом этапе предстоит изменить область таким образом, чтобы включить в нее уровень финансовых месяцев для всех финансовых годов (предыдущая область ограничивалась вычислениями для финансового года 2005). Затем каждому финансовому месяцу будет присвоена треть квартального значения квоты суммы продаж по каждому из сотрудников.
Распределение квот продаж по месяцам
В панели Выражения вычислений введите следующую инструкцию на новой строке в конце сценария вычисления:
/* 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.
Просмотр значений для июля и августа 2004 года.
Обратите внимание, что для июля и для августа 2004 года значения не вычислены.
Щелкните правой кнопкой мыши панель Данные и выберите команду Показывать пустые ячейки, чтобы отобразить только ячейки, имеющие значения.
Это позволит легче проследить, как последняя инструкция применяется в сценарии вычисления.
Нажмите клавишу F10, чтобы выполнить последнюю инструкцию.
Обратите внимание, что значение Sales Amount Quota для каждого сотрудника в каждом финансовом месяце равно трети значения родительского элемента.
В области столбцов удалите элемент FY 2005 и добавьте элемент Q4 FY 2004.
Последовательно разверните элементы «FY 2004», «H1 FY 2004» и Q4 FY 2004.
Заметьте, что значение для каждого финансового месяца равно итоговому значению для финансового квартала.
В меню Отладка выберите команду Остановить отладку.
Удалите точку останова в сценарии вычисления.
На панели инструментов нажмите кнопку Сохранить все.
См. также