Занятие 3. Добавление матриц, переменных и индикаторов в качестве ключевых индикаторов производительности (SSRS)
В этом занятии описывается добавление в отчет Employee_Sales_Summary_2008R2 элементов отчета, которые позволяют найти ответ на следующий вопрос менеджера по продажам компании Adventure Works.
Укладываюсь ли я в общие квоты продаж?
В каких категориях продуктов я укладываюсь в квоты продаж?
Employee_Sales_Summary_2008R2 представляет собой главный отчет, в котором отображены итоговые данные о продажах. К номеру заказа на продажу, который пользователь может щелкнуть, чтобы открыть отдельный отчет, содержащий все сведения об определенном заказе на продажу, следует добавить действие детализации.
Обзор учебника
В этом учебнике приведены следующие задачи, которые необходимо выполнить.
Добавление матрицы с группами строк, сгруппированными по категориям продуктов и номерам заказов на продажу.
Добавьте переключатель развертывания и свертывания для строк, связанных с дочерней группой на основе номеров заказов на продажу.
Добавьте логический параметр, который позволит пользователю управлять отображением и скрытием всех переключаемых строк при первом запуске отчета. По умолчанию переключаемое состояние отчета задается как свернутое.
Добавление действия детализации к номеру заказа на продажу. Позднее в этом учебнике будет создан целевой отчет. Дополнительные сведения см. в разделе Создание отчета Sales_Order_Detail_2008R2 (SSRS).
Добавьте набор данных с вычисляемым полем, чтобы определить величины квот на продажу для всех категорий и параметр с несколькими значениями, заполненный этим набором данных.
Добавьте к таблице два следующих индикатора для представления ключевых показателей эффективности:
Квота соблюдена для всех категорий. Индикатор определяется на уровне матрицы и указывает, превышают ли продажи во всех категориях квоту на месяц.
Квота соблюдена для каждой отдельной категории. Индикатор определяется на уровне группы категорий и отображает состояние, основанное на соответствии продаж процентному диапазону намеченной цели.
Пользователь может в интерактивном режиме менять квоты категорий путем изменения значений параметров, что позволяет ему наблюдать изменения состояний всех индикаторов.
Определение переменных уровня отчета и группы для использования при создании комплексных выражений.
При разработке и отладке рекомендуется отображать несколько результатов вычислений в текстовом поле. При задании видимости текстового поля в зависимости от параметра пользователь получает возможность управления отображением дополнительных сведений.
Добавьте к угловой ячейке табликса прямоугольник, содержащий несколько элементов отчета.
Добавьте ссылку на закладку из текста сценария в матрицу.
Добавьте пояснительный текст, описывающий назначение матрицы.
Предполагаемое время выполнения заданий учебника: 30 минут.
Требования
Дополнительные сведения о требованиях см. в разделе Предварительные требования для образцов отчетов AdventureWorks 2008R2 (SSRS).
Прежде чем приступать к этому занятию, необходимо сначала пройти Создание проекта сервера отчетов и отчета AdventureWorks2008R2_Base (SSRS), что позволит создавать проект отчета, общий источник данных, общие наборы данных и Занятие 2. Добавление графиков и спарклайн-графиков (SSRS).
Советы
На панели структуры документа ознакомьтесь с советами по просмотру иерархических связей между элементами отчета. Дополнительные сведения см. в разделе Советы по проектированию отчетов (построитель отчетов версии 3.0 и службы SSRS).
Открытие проекта и отчета
В среде Business Intelligence Development Studio откройте образцы отчетов AdventureWorks 2008R2 в проекте сервера отчетов, созданные на предыдущем занятии.
Откройте отчет Employee_Sales_Summary_2008R2.
Добавление матрицы
Если необходимо создать довольно сложную матрицу, используйте для ее создания область конструктора отчета, что позволит упростить выбор и настройку свойств матрицы. Затем матрицу необходимо добавить к прямоугольному контейнеру.
Добавление матрицы для отображения заказов на продажу
Добавьте Матрицу к области конструктора отчета.
В матрице выполните следующие действия.
Подведите курсор к ячейке Строки, нажмите тег поля, укажите Наборы данных, укажите EmployeeSalesDetail2008R2 и выберите Category.
В области данных отчета разверните наборы данных, а затем разверните EmployeeSalesDetail2008R2.
Перетащите SalesOrderNumber ниже Category на панели «Группы строк». Создается дочерняя группа строк.
В ячейке Данные нажмите тег поля, а затем выберите Sales. Задайте для текстового поля этой ячейки формат денежной единицы.
Щелкните правой кнопкой мыши ячейку Category, укажите Добавить итог и выберите После.
Задайте для матрицы необходимый формат.
Создание параметра для управления развертыванием и свертыванием
В области данных отчета добавьте параметр с именем ExpandAllTableRows.
В диалоговом окне Свойство параметров ответов выполните следующие действия.
Измените Запрос на Развернуть все строки таблицы?
Для Типа данных выберите Логический.
В области Значения по умолчанию задайте значение равным false.
Развертывание/свертывание представления дочерней группы строк
На панели группирования откройте Свойства группы для SalesOrderNumber.
На странице Видимость выберите Отображать или скрывать в зависимости от выражения и введите следующее выражение: =NOT Parameters!ExpandAllTableRows.Value.
Выберите пункт Отображение может переключаться и из раскрывающегося списка выберите имя текстового поля, имеющего выражение группы для родительской группы: Category.
Текстовое поле автоматически получает имя на основе первого поля, к которому оно было добавлено.
Создание ссылки детализации на другой отчет
В матрице щелкните правой кнопкой мыши SalesOrderNumber и откройте Свойства текстового поля.
На странице Действие нажмите кнопку Перейти к отчету.
В поле Указать отчет введите Sales_Order_Detail_2008R2.
Примечание
Поскольку целевой отчет еще не существует, необходимо точно ввести имя отчета и имена параметров вручную. Если целевой отчет уже существует в проекте, имена отчета и соответствующих параметров можно выбрать в раскрывающемся списке.
Нажмите кнопку Добавить.
В поле Имя введите SalesOrderIDStart.
В поле Значение введите [SalesOrderID].
Нажмите кнопку Добавить.
В поле Имя введите SalesOrderIDEnd.
В поле Значение введите [SalesOrderID].
На странице Шрифт установите для атрибута Цвет значение Синий, а для атрибута Эффекты установите значение Подчеркивание.
В отчете Sales_Order_Detail_2008R2 отображаются сведения обо всех заказах по продажам в диапазоне определенных номеров заказов на продажу. При задании для параметров целевого отчета одного и того же номера заказа на продажу в отчете будут отображены данные одного заказа на продажу.
Добавление набора данных для указания исходных квот и диапазонов
Добавление данных квоты
В области данных отчета добавьте набор данных с именем CategoryQuotas. Используйте существующий общий источник данных, укажите внедренный набор данных и используйте следующий запрос:
SELECT 1 as ID, 'Accessories' as Category, 1000 as Quota, 25 as PercentDeviation UNION SELECT 2 as ID, 'Bikes' as Category, 70000 as Quota, 5 as PercentDeviation UNION SELECT 3 as ID, 'Clothing' as Category, 2500 as Quota, 20 as PercentDeviation UNION SELECT 4 as ID, 'Components' as Category, 20000 as Quota, 10 as PercentDeviation
Поле Quota представляет валюту. Значения поля Quota будут заполнять исходные значения параметра отчета, имеющего имя @CategoryQuota, который будет создан в одном из последующих шагов. Чтобы выводить числа, не являющиеся целыми, параметр отчета должен иметь тип данных Float. На следующем шаге необходимо создать вычисляемое поле на базе поля Quota с типом Float.
Создание вычисляемого поля
В области данных отчета щелкните правой кнопкой мыши набор данных с именем CategoryQuotas и выберите команду Добавить вычисляемое поле.
Нажмите кнопку Добавить.
В поле Имя поля введите QuotaF.
В поле Источник поля задайте значение следующего выражения:
=CDbl(Fields!Quota.Value)
Добавление параметра, позволяющего пользователю указать значения квоты
Добавление многозначного параметра @CategoryQuota
В области данных отчета добавьте новый параметр.
На странице Общие выполните следующее.
Задайте для поля Имя значение CategoryQuota.
Задайте для поля Запрос значение Категории квот («Аксессуары», «Велосипеды», «Одежда», «Запасные части»):
Присвойте Типу данных значение Float.
Выберите Разрешить несколько значений.
На странице Значения по умолчанию выполните следующие действия.
Выберите Получать значения из запроса.
Для поля Набор данных выберите CategoryQuotas.
Для поля Значение поля выберите QuotaF.
Запустите отчет, чтобы проверить, правильно ли отображаются параметры и имеет ли каждый из них значение по умолчанию.
Чтобы пользователь мог в интерактивном режиме изменять квоты категорий, не указывайте доступные значения для набора данных. Доступные значения ограничивают выбор параметра.
Определите сложное выражение как переменную отчета.
Использование переменных позволяет реализовать способ однократного определения сложного выражения и последующего добавления ссылки на него в других выражениях. При обработке отчета переменная отчета вычисляется только один раз. Групповая переменная вычисляется один раз для экземпляра группы.
Создание переменной отчета
Чтобы создать переменную отчета, откройте диалоговое окно Свойства отчета.
На странице Переменные выполните следующее.
Нажмите кнопку Добавить.
В поле Имя введите значение SumofAllParameterThresholds.
В поле Значение введите =CDbl(Parameters!CategoryQuota.Value(0)+Parameters!CategoryQuota.Value(1)+Parameters!CategoryQuota.Value(2)+Parameters!CategoryQuota.Value(3)).
Данное выражение вычисляет общую квоту в виде суммы квот категорий. Эта переменная будет задействована при настройке индикатора, находящегося в области действия матрицы.
Задайте сложное выражение в качестве групповой переменной.
Создание групповой переменной
Выберите матрицу для отображения групп строк на панели группирования.
Щелкните правой кнопкой мыши группу Category и откройте Свойства группы.
Щелкните Переменные и выполните следующее.
Нажмите кнопку Добавить.
В поле Имя введите IndextoCategoryQuotas.
В поле Значение введите =Lookup(Fields!Category.Value,Fields!Category.Value,Fields!ID.Value,"CategoryQuotas").
Будет получен идентификатор для значения группы Category (1, 2, 3 или 4). Цифры соответствуют категориям, перечисленным в алфавитном порядке: Аксессуары, Велосипеды, Одежда, Части запасные.
Нажмите кнопку Добавить.
В поле Имя введите значение PercentDeviation.
В поле Значение введите =.01 * CDbl(Lookup(Fields!Category.Value,Fields!Category.Value,Fields!PercentDeviation.Value,"CategoryQuotas")).
Будет получено значение поля отклонения в процентах для значения группы Category (25%, 5%, 20% или 10%). Для категории «Велосипеды» и других ей подобных отклонения в процентах для квот меньше, поскольку объемы продаж предполагаются высокими. Для такой категории, как «Аксессуары», объемы продаж меньше, поэтому меньше отклонение для квоты в процентах.
Групповая переменная понадобится, когда вы захотите настроить индикатор, находящийся в области действия группы категорий.
На следующем шаге необходимо добавить скрываемый по условию текст для отображения частей выражения, вычисляющего наибольшее и наименьшее значения в диапазоне для каждой из квот категорий.
Добавление строки заголовка группы и отображение результатов вычисления
Можно вычислять и отображать выражения, которые помогут понять значения свойств во время выполнения. Чтобы скрыть эти значения в случаях, когда они не нужны, используйте условную видимость.
Добавление строки заголовка группы для Category
Щелкните правой кнопкой мыши текстовое поле, содержащее SalesOrderNumber, нажмите клавишу ESC, если нужно выделить текстовое поле и выйти из режима изменения, укажите пункт Вставить строку и выберите Снаружи группы — Выше.
В столбце «Продажи» щелкните тег поля для ячейки в добавленной строке, а затем выберите «Продажи». Выберите для текстового поля формат денежной единицы.
Будет добавлена строка заголовка, связанная с группой Category.
Добавление нескольких частей выражения в текстовое поле
Выберите пустое текстовое поле, расположенное над SalesOrderNumber в добавленной строке заголовка группы. Областью определения для данных в этой ячейке является группа «Категория».
Чтобы обеспечить дополнительное рабочее пространство, растяните строку по высоте и столбец по ширине для ячейки с прямоугольником.
В текстовом поле вставьте Прямоугольник с именем rectCategoryQuotas. С помощью прямоугольного контейнера пользователь может настроить стиль и цвет границы в соответствии с ячейками в матрице.
Добавьте в прямоугольник текстовое поле с именем tbCategoryQuotas, содержащее следующий текст:
Quota:
Создайте Заполнитель с именем Quota со следующим значением, отформатированным как Валюта: =CDbl(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))
В следующей строке введите знак минус (-), заполнитель с именем PercentDeviation, двоеточие (:) и заполнитель с именем MinimumThreshold.
Измените значение Заполнитель для PercentDeviation на следующее выражение: =FormatPercent(Variables!PercentDeviation.Value,0)
Измените значение Заполнитель для MinimumThreshold на следующее выражение: =(1.0-Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))
В следующей строке введите знак плюс (+), заполнитель с именем PercentDeviation, двоеточие (:) и заполнитель с именем MaximumThreshold.
Измените значение Заполнитель для PercentDeviation на следующее выражение: =FormatPercent(Variables!PercentDeviation.Value,0)
Измените значение Заполнитель для MaximumThreshold на следующее выражение: =(1.0+Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))
Отформатируйте текст нужным образом. Например, выровняйте текст по правому краю.
На странице Видимость выберите Отображать или скрывать в зависимости от выражения и введите следующее выражение: =NOT Parameters!ShowAll.Value
В текстовом поле выровняйте текст по правому краю.
Запустите отчет.
Для категории «Аксессуары» будет выведен следующий текст:
Quota: $1,000
-25%: $750
+25%: $1,250
Обратите внимание, что стиль границы прямоугольника не соответствуют стилю остальной части матрицы.
Задание свойств вложенного прямоугольника
Щелкните текстовое поле tbCategoryQuotas, затем нажимайте клавишу ESC, пока на панели «Свойства» не отобразятся свойства Прямоугольника для rectCategoryQuotas.
На панели свойств выполните следующие действия:
Измените значение Цвет границы на Светло-серый.
Выберите для Стиля границы вариант Непрерывный.
Запустите отчет.
Теперь границы ячейки матрицы совпадают.
Добавление индикатора для «Продажи во всех категориях»
Элементы отчетов, которые добавляются к угловой ячейке матрицы, относятся к данным в матрице. Можно воспользоваться возможностью слияния нескольких текстовых полей в угловой ячейке, добавить прямоугольный контейнер, а затем добавить к нему несколько элементов отчета. Угловую ячейку рекомендуется использовать для отображения значений, относящихся к данным в матрице. Видимостью всех элементов в прямоугольнике можно управлять по отдельности.
Дополнительные сведения см. в разделе Основные сведения о разделах области данных табликса (построитель отчетов версии 3.0 и службы SSRS).
Добавление индикатора, находящегося в области действия матрицы
Угловой ячейкой является ячейка в первой строке и первом столбце; она содержит текст Категория. Область действия данных элементов для элементов в угловой ячейке — это все данные в матрице после применения фильтров. Чтобы отобразить вычисленную общую квоту продаж определенной категории, необходимо добавить текстовое поле, индикатор и текстовое поле с условной видимостью.
Щелкните текстовое поле, укажите Вставить и выберите пункт Прямоугольник. Прямоугольник заменит текстовое поле.
Измените имя прямоугольника на rectMatrixCorner.
Растяните в угловой ячейке строку по высоте и столбец по ширине, чтобы обеспечить дополнительное рабочее пространство.
Добавьте к прямоугольнику текстовое поле. Введите в двух строках следующий текст: Удовлетворяет квоте?
Рядом с текстовым полем вставьте Индикатор. В поле Направляющие с помощью подсказки щелкните 3 треугольника вверх/вниз.
Выровняйте верхнюю часть индикатора по верхней части текстового поля.
Откройте окно Свойства индикатора.
На странице Значение и состояния выполните следующие действия.
В поле Значение выберите [Sum(Sales)].
В поле Единица измерения состояний выберите Число.
В поле Состояния индикатора удалите среднее состояние.
В области действия матрицы ограничьте отображение двумя состояниями: удовлетворяет или не удовлетворяет квоте.
Для первого состояния в поле Начало введите 0.
В поле Конец введите следующее выражение: =Variables!SumParameterThresholds.Value
Для второго состояния скопируйте в поле Начало то же выражение, которое вы использовали для поля Конец в первом состоянии.
В поле Конец введите следующее выражение: =Max(Sum(Fields!Sales.Value))
Под индикатором добавьте текстовое поле с именем tbMatrixQuotas и со следующим текстом:
Quota:
Создайте Заполнитель с именем Quota, значение которого отформатировано как Валюта: =Variables!SumofAllParameterThresholds.Value
Итого:
Создайте Заполнитель с именем Итого, значение которого отформатировано как Валюта: =Sum(Fields!Sales.Value).
На странице Видимость выберите Отображать или скрывать в зависимости от выражения и введите следующее выражение: =NOT Parameters!ShowAll.Value
В текстовом поле выровняйте текст по правому краю.
Quota:
Поместите курсор рядом с добавленным текстом, щелкните правой кнопкой мыши и выберите Создать заполнитель.
В поле Метка введите MAX.
В поле Значение введите =Variables!SumParameterThresholds.Value.
На странице Число в поле Категория выберите значение Денежная единица. Введите в поле Десятичные разряды значение 0.
Добавьте в прямоугольник текстовое поле, содержащее следующий текст: Total:
Поместите курсор рядом с добавленным текстом, щелкните правой кнопкой мыши и выберите Создать заполнитель.
В поле Метка введите Total.
В поле Значение введите Sum(Fields!Sales.Value).
На странице Число в поле Категория выберите значение Денежная единица. Введите в поле Десятичные разряды значение 0.
Откройте окно Свойства текстового поля. На странице Видимость выполните следующее:
Щелкните Отображать или скрывать в зависимости от выражения.
Используйте следующее выражение: =NOT Parameters!ShowAll.Value
Отформатируйте как требуется прямоугольник и содержащиеся в нем элементы отчета. Например, выполните следующие действия.
Задайте цвет Заливки для текстовых полей и панели датчиков, идентичный цвету фона заголовка строки.
Задайте для прямоугольника значения свойств ЦветГраницы и СтильГраницы в соответствии с аналогичными значениями ячеек матрицы.
Задайте значения свойства СтильГраницы панели датчиков равным Нет.
Добавление индикатора для «Продажи в каждой категории»
Добавление индикатора, находящегося в области действия группы строк Category
В матрице щелкните правой кнопкой мыши заголовок последнего столбца, укажите пункт Вставить столбец и щелкните Справа — снаружи группы.
В новом столбце в строке группы, связанной с Category, вставьте Прямоугольник с именем rectCategoryIndicator.
Вставьте в прямоугольнике Индикатор. В поле Символы с помощью подсказки щелкните 3 символа (без круга).
Данные этой ячейки будут соответствовать данным по всем категориям продуктов.
Добавленный индикатор располагается в элементе отчета панели датчиков. При необходимости измените ширину и высоту датчика на панели датчиков.
Откройте окно Свойства индикатора на странице Значение и состояния.
В поле Значение выберите [Sum(Sales)].
В поле Единица измерения состояний выберите Число.
Для первого состояния выполните следующие действия.
В поле Значок убедитесь, что отображается X.
В поле Цвет выберите Желтый.
В поле Начало введите 0.
В поле Конец введите следующее выражение: =(1.0-Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))
Для второго состояния выполните следующие действия.
В поле Значок, измените символ на √.
В поле Цвет выберите Салатовый.
Скопируйте в поле Начало то же выражение, которое было указано в поле Конец в первом состоянии.
В поле Конец введите следующее выражение: =(1.0+Variables!PctDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!QuotaIndex.Value)-1))
Для третьего состояния выполните следующие действия.
В поле Значок убедитесь, что отображается !.
В поле Цвет выберите Темно-фиолетовый.
Скопируйте в поле Начало то же выражение, которое вы использовали для поля Конец во втором состоянии.
В поле Конец введите следующее выражение: =Max(Sum(Fields!Sales.Value))
Задайте для текста заголовка столбца значение Квота категории выполнена?
Добавление прямоугольного контейнера к матрице
Добавьте прямоугольный контейнер для матрицы и пояснительный текст с описанием назначения матрицы.
Добавление прямоугольного контейнера
В поле Текст отчета вставьте Прямоугольник с именем rectMatrix.
Добавьте в прямоугольник текстовое поле, содержащее следующий текст: Сравнить продажи с квотами по категории.
Примените требуемое форматирование.
Выберите матрицу. Перетащите верхний левый угол матрицы в прямоугольник под текстовым полем. Прямоугольник расширится, чтобы вместить содержимое.
Выберите прямоугольник. На панели «Свойства» присвойте параметру Закладка значение QuotasRectangle.
Для выравнивания верхних областей прямоугольников rectCharts и rectMatrix используйте панель инструментов макета.
Добавление ссылки из текста сценария в матрицу
Добавление ссылки из текста на закладку
Выберите текст в текстовом поле, которое содержит текст сценария.
С помощью мыши выделите слово матрица.
Щелкните правой кнопкой мыши и откройте диалоговое окно Свойства текста.
На странице Шрифт установите для атрибута Цвет значение Синий, а для атрибута Эффекты установите значение Подчеркивание.
На странице Действие выберите Перейти к закладке.
В списке Выбор закладки введите QuotasRectangle.
Изменение значения по умолчанию параметра ReportMonth
Для проверки настроек индикатора группы используйте данные, входящие в три диапазона для индикатора.
Задание значения по умолчанию для параметра @ReportMonth
В области данных отчета откройте область Свойства отчета для параметра @ReportMonth.
На странице Значения по умолчанию в поле Значения введите 11.
Используются данные по продажам за ноябрь.
Предварительный просмотр отчета
Предварительный просмотр и проверка отчета
Просмотрите отчет.
Проверьте выполнение следующих условий.
Два основных прямоугольных контейнера отображаются рядом друг с другом.
По умолчанию строки матрицы заказов на продажу свернуты.
Чтобы развертывать и свертывать все строки в матрице во время выполнения отчета, изменяйте значение параметра @ExpandAllTableRows.
Индикатор в углу таблицы имеет зеленый цвет.
Индикаторы категории выводятся с использованием следующих изображений:
Аксессуары Желтая отметка (X)
Велосипеды Зеленый флажок (√ )
Одежда Желтая отметка (X)
Запасные части Сиреневый восклицательный знак (!)
Отображать или скрывать сведения о вычислениях можно, изменяя значение параметра @ShowAll.
Задавая различные значения для квот, проверьте, правильно ли отображает состояния индикатор.
Если планируется экспорт отчета в файл в формате PDF или другой формат, поддерживающий печать, используйте панель инструментов в средстве просмотра отчетов, чтобы убедиться, что отчет подготовлен к печати должным образом. Если обнаружится несколько лишних горизонтальных страниц, удалите пробелы и откорректируйте ширину контейнера по мере необходимости. Дополнительные сведения см. в разделе Советы по проектированию отчетов (построитель отчетов версии 3.0 и службы SSRS).