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