Поделиться через


Занятие 1. Создание общих наборов данных и настройка параметров отчета (SSRS)

На этом занятии будут созданы общие наборы данных и настроены параметры отчетов на основании параметров запроса набора данных для отчета Employee_Sales_Summary_2008R2.

Обзор учебника

В этом учебнике рассматриваются следующие темы:

  • Создание копии базового отчета.

  • Добавление нескольких общих наборов данных в проект и в отчет.

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

  • Добавление описания сценария, в котором объясняется назначение отчета.

  • Добавление скрываемого по условию текста, содержащего сведения об источнике данных и запросе набора данных.

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

  • Добавление скрываемого по условию текста, содержащего описание отчета.

  • Добавление заголовка отчета.

  • Просмотр и проверка отчета.

  • Развертывание отчета.

Предполагаемое время выполнения заданий учебника: 15 минут.

Системные требования

Дополнительные сведения о требованиях см. в разделе Предварительные требования для образцов отчетов AdventureWorks 2008R2 (SSRS).

Прежде чем приступать к этому занятию, необходимо изучить учебник Создание проекта сервера отчетов и отчета AdventureWorks2008R2_Base (SSRS).

Открытие проекта и создание копии отчета

  1. В среде Business Intelligence Development Studio откройте проект сервера отчетов AdventureWorks 2008R2 Sample Reports.

  2. В обозревателе решений выполните следующие действия.

    1. Щелкните правой кнопкой мыши отчет AdventureWorks2008R2_Base.rdl и выберите команду Копировать.

    2. Щелкните правой кнопкой мыши узел проекта и выберите команду Вставить.

    3. Переименуйте скопированный отчет в Employee_Sales_Summary_2008R2.rdl.

Создание общих наборов данных

В этом проекте отчета используется четыре общих набора данных, основанных на общем источнике данных AdventureWorks2008R2.

Создание набора данных EmployeeSalesYearOverYear2008R2

Добавление общего набора данных для продаж в годовом исчислении

  1. В обозревателе решений добавьте общий набор данных с именем EmployeeSalesYearOverYear2008R2.

    Эти данные позволяют ответить на следующий вопрос. Как выглядят мои сезонные продажи по сравнению с продажами за предыдущий год?

    В отчете эти данные будут отображаться на обычном графике и спарклайн-графике.

  2. Укажите общий источник данных AdventureWorks2008R2 и добавьте следующий запрос:

    SELECT   P.FirstName + ' ' + P.LastName AS Employee, 
       DATEPART(Year, SOH.OrderDate) AS [Year], 
       DATEPART(Month, SOH.OrderDate) AS MonthNumber, 
       DATENAME(Month, SOH.OrderDate) AS [Month], 
       SUM(DET.LineTotal) AS Sales
    FROM [Sales].[SalesPerson] SP 
       INNER JOIN [Sales].[SalesOrderHeader] SOH ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
       INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID
       INNER JOIN [Sales].[SalesTerritory] ST ON SP.[TerritoryID] = ST.[TerritoryID] 
       INNER JOIN [HumanResources].[Employee] E ON SOH.[SalesPersonID] = E.[BusinessEntityID] 
       INNER JOIN [Person].[Person] P ON P.[BusinessEntityID] = SP.[BusinessEntityID]
    WHERE (DATEPART(Year, SOH.OrderDate) <= @ReportYear - 1 OR
       DATEPART(Year, SOH.OrderDate) = @ReportYear AND DATEPART(Month, SOH.OrderDate) <= @ReportMonth) AND 
       (SOH.SalesPersonID = (@EmployeeID))
    GROUP BY P.FirstName + ' ' + P.LastName, SOH.SalesPersonID, 
       DATEPART(Year, SOH.OrderDate), DATEPART(Month, SOH.OrderDate), 
       DATENAME(Month, SOH.OrderDate)
    

    Общий набор данных появится в обозревателе решений.

  3. В области данных отчета создайте набор данных с именем EmployeeSalesYearOverYear2008R2.

  4. В диалоговом окне Свойства набора данных выберите Использовать общий набор данных и щелкните набор данных, только что созданный в обозревателе решений.

    Запрос к набору данных включает в себя переменные @ReportMonth, @ReportYear и @EmployeeID.

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

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

Набор данных в области данных отчета является ссылкой на общий набор данных в обозревателе решений. После публикации этого отчета ссылка будет указывать на общий набор данных на сервере отчетов или на сайте SharePoint.

Создание набора данных EmployeeSalesDetail2008R2

Добавление общего набора данных с данными по каждому заказу на продажу

  1. В обозревателе решений добавьте общий набор данных с именем EmployeeSalesDetail2008R2.

    Эти данные позволяют ответить на следующий вопрос. Укладываюсь ли я в квоты продаж за весь месяц в каждой категории?

    В отчете эти данные будут отображаться в виде матрицы и внедренных индикаторов.

  2. Используйте общий источник данных AdventureWorks2008R2 и следующий запрос:

    SELECT PER.FirstName + ' ' + PER.LastName AS Employee,
       PS.Name AS Subcategory, SUM(DET.LineTotal) AS Sales, 
       SOH.SalesOrderID,  SOH.SalesOrderNumber, 
       P.Name AS Product, 
       SUM(DET.OrderQty) AS OrderQty, DET.UnitPrice, 
       PC.Name AS Category
    FROM Sales.SalesOrderHeader SOH 
       INNER JOIN [Sales].[SalesPerson] SP ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
       INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID
       INNER JOIN [HumanResources].[Employee] E ON SOH.[SalesPersonID] = E.[BusinessEntityID] 
       INNER JOIN [Person].[Person] PER ON PER.[BusinessEntityID] = SP.[BusinessEntityID]
       INNER JOIN Production.Product P ON DET.ProductID = P.ProductID 
       INNER JOIN Production.ProductSubcategory PS ON P.ProductSubcategoryID = PS.ProductSubcategoryID 
       INNER JOIN Production.ProductCategory PC ON PS.ProductCategoryID = PC.ProductCategoryID
    WHERE (DATEPART(Year, SOH.OrderDate) = @ReportYear) AND 
       (DATEPART(Month, SOH.OrderDate) = @ReportMonth) AND 
        (SOH.SalesPersonID = @EmployeeID)
    GROUP BY PER.FirstName + ' ' + PER.LastName, 
       DATEPART(Month, SOH.OrderDate), SOH.SalesOrderID, SOH.SalesOrderNumber, 
       P.Name, PS.Name, DET.UnitPrice, PC.Name
    

    Общий набор данных появится в обозревателе решений.

  3. В области данных отчета создайте набор данных с именем EmployeeSalesDetail2008R2.

  4. В диалоговом окне Свойства набора данных выберите Использовать общий набор данных и щелкните набор данных, только что созданный в обозревателе решений.

Создание набора данных EmpSalesMonth2008R2

Добавление общего набора данных для продаж в месячном исчислении

  1. В обозревателе решений добавьте общий набор данных с именем EmpSalesMonth2008R2.

    Эти данные позволяют ответить на следующий вопрос. Каковы результаты по каждой категории продуктов за данный месяц по сравнению с результатами за этот же месяц предыдущего года?

    В отчете эти данные будут отображаться в столбчатой диаграмме и гистограмме.

  2. Используйте общий источник данных AdventureWorks2008R2 и следующий запрос:

    SELECT PER.FirstName + ' ' + PER.LastName AS Employee, 
       DATEPART(Year, SOH.OrderDate) AS [Year], 
       DATEPART(Month, SOH.OrderDate) AS [MonthNumber], 
       DATENAME(Month, SOH.OrderDate) AS [Month], 
       PC.Name AS Category, SUM(DET.LineTotal) AS Sales
    FROM Sales.SalesOrderHeader SOH 
       INNER JOIN [Sales].[SalesPerson] SP ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
       INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID
       INNER JOIN [HumanResources].[Employee] E ON SOH.[SalesPersonID] = E.[BusinessEntityID] 
       INNER JOIN [Person].[Person] PER ON PER.[BusinessEntityID] = SP.[BusinessEntityID]
       INNER JOIN Production.Product P ON DET.ProductID = P.ProductID 
       INNER JOIN Production.ProductSubcategory PS ON P.ProductSubcategoryID = PS.ProductSubcategoryID 
       INNER JOIN Production.ProductCategory PC ON PS.ProductCategoryID = PC.ProductCategoryID
    WHERE
       (DATEPART(Year, SOH.OrderDate) <= @ReportYear) 
       AND (DATEPART(Month, SOH.OrderDate) = @ReportMonth)  
       AND (SOH.SalesPersonID = @EmployeeID)
    GROUP BY PER.FirstName + ' ' + PER.LastName, 
       DATEPART(Year, SOH.OrderDate), DATEPART(Month, SOH.OrderDate), 
       DATENAME(Month, SOH.OrderDate), PC.Name
    

    Общий набор данных появится в обозревателе решений.

  3. В области данных отчета создайте набор данных с именем EmpSalesMonth2008R2.

  4. В диалоговом окне Свойства набора данных выберите Использовать общий набор данных и щелкните набор данных, только что созданный в обозревателе решений.

Создание набора данных SalesEmployees2008R2

Создание набора данных со списком доступных значений для сотрудников

  1. В обозревателе решений добавьте общий набор данных с именем SalesEmployees2008R2.

    Этот набор данных предоставляет допустимые значения параметра @EmployeeID.

  2. Используйте общий источник данных AdventureWorks2008R2 и следующий запрос:

    SELECT s.[BusinessEntityID], p.[FirstName] + N' ' + p.LastName AS Employee, e.[JobTitle]
    FROM [Sales].[SalesPerson] s
       INNER JOIN [HumanResources].[Employee] e ON e.[BusinessEntityID] = s.[BusinessEntityID]
       INNER JOIN [Person].[Person] p ON p.[BusinessEntityID] = s.[BusinessEntityID]
    

    Общий набор данных появится в обозревателе решений.

  3. В области данных отчета создайте набор данных с именем SalesEmployees2008R2.

  4. В диалоговом окне Свойства набора данных выберите Использовать общий набор данных и щелкните набор данных, только что созданный в обозревателе решений.

Настройка параметров отчета

Общие наборы данных содержат запросы набора данных с переменными запроса для параметров ReportYear, ReportMonth и EmployeeID. Соответствующие параметры запроса создаются автоматически для каждой переменной запроса. По умолчанию для свойств каждого параметра отчета задается тип данных String, отдельное значение и список допустимых значений либо отсутствие значения по умолчанию. При необходимости можно настроить каждый параметр вручную.

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

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

  1. В области данных отчета щелкните ShowAll.

  2. На панели инструментов области данных отчета нажимайте кнопку Вниз, пока параметр не окажется на последнем месте в списке.

  3. Щелкните ReportMonth.

  4. Нажимайте кнопку Вверх, пока параметр не окажется на первом месте в списке.

Настройка параметра ReportMonth

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

Настройка параметра отчета @ReportMonth

  1. В области данных отчета разверните узел Параметры.

  2. Откройте Свойства параметра @ReportMonth.

  3. На странице Общие измените Тип данных на Integer.

  4. На странице Доступные значения выберите Указать значения.

  5. Добавьте записи для всех 12 месяцев. В поле Метка введите название месяца, а в поле Значение — порядковый номер месяца. Например, первой записью будет январь и 1. Последней записью будет декабрь и 12. Заполните все 12 значений.

  6. На странице Значения по умолчанию выберите Указать значения. В поле Значения введите 7.

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

Настройка параметра ReportYear

Настройка параметра отчета @ReportYear

  1. Откройте Свойства параметра @ReportYear.

  2. На странице Общие измените Тип данных на Integer.

  3. На странице Значения по умолчанию выберите Указать значения.

  4. Добавьте значение. В поле Значения введите 2007.

Настройка параметра EmployeeID

Настройка параметра отчета @EmployeeID

  1. Откройте Свойства параметра @EmployeeID.

  2. На странице Общие измените Запрос на Сотрудник.

  3. Измените Тип данных на Integer.

  4. На странице Доступные значения выберите Получать значения из запроса.

  5. В поле Набор данных выберите SalesEmployees2008R2.

  6. В поле Значение выберите BusinessEntityID.

  7. В поле Метка выберите Employee.

  8. На странице Значения по умолчанию выберите Указать значения. В поле Значения введите 283. Это значение является идентификатором для сотрудника по имени David Campbell.

Добавление описания сценария

Добавление описания сценария

  • В текстовом поле описания сценария замените имеющийся текст следующим текстом:

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

    Графики и спарклайн-графики отображают годовые продажи по всем категориям.

    Матрица с индикаторами отображает текущие продажи относительно квот. Измените значения квот на панели инструментов средства просмотра отчетов.

    Столбчатые диаграммы и гистограммы показывают продажи в каждой категории.

В следующих занятиях будут созданы ссылки слов в тексте на взаимосвязанные области данных.

Отображение источника данных, набора данных и значений параметра

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

Добавление прямоугольника

  1. Добавьте прямоугольник внизу отчета, над нижним колонтитулом.

  2. В свойствах Прямоугольника выполните следующие действия.

    1. На странице Общие выберите Вставить разрыв страницы.

    2. На странице Видимость выберите Отображать или скрывать в зависимости от выражения и введите: =NOT Parameters!ShowAll.Value

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

Добавление текстового поля со значениями параметра

  1. В текст отчета добавьте текстовое поле со следующим текстом на отдельных строках:

    1. Месяц отчета: [@ReportMonth] [@ReportMonth.Label]

    2. Год отчета: [@ReportYear]

    3. Идентификатор сотрудника: [@EmployeeID] [@EmployeeID.Label]

  2. Перетащите текстовое поле в прямоугольник и при необходимости измените размеры.

Добавление текстового поля со сведениями об источнике данных и наборе данных

  1. В тексте отчета добавьте текстовое поле с именем DataSourceandDatasets, содержащее следующий текст:

    1. Источник данных AdventureWorks2008R2:

    2. Создайте заполнитель с именем AdventureWorks2008R2 и следующим значением: =DataSources!AdventureWorks2008R2.DataSourceReference

    3. Набор данных EmployeeSalesYearOverYear2008R2:

    4. Создайте заполнитель с именем EmployeeSalesYearOverYear2008R2 и следующим значением: =DataSets!EmployeeSalesYearOverYear2008R2.CommandText.

    5. Набор данных EmployeeSalesDetail2008R2:

    6. Создайте заполнитель с именем EmployeeSalesDetail2008R2 и следующим значением: =DataSets! EmployeeSalesDetail2008R2.CommandText.

    7. Набор данных EmpSalesMonth2008R2.

    8. Создайте заполнитель с именем EmpSalesMonth2008R2 и следующим значением: =DataSets! EmpSalesMonth2008R2.CommandText.

  2. Отформатируйте текст нужным образом. Например, сделайте название набора данных подчеркнутым.

  3. Перетащите текстовое поле в прямоугольник и при необходимости измените размеры.

Добавление описания

Добавление описания

  1. В нижнем колонтитуле страницы замените текст в текстовом поле описания следующим текстом:

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

  2. Щелкните фон отчета, чтобы отобразить раздел Свойства отчета на панели свойств.

  3. В поле Описание вставьте текст описания.

Добавление заголовка отчета

Добавление заголовка отчета

  1. В заголовке страницы добавьте текстовое поле со следующим текстом из двух строк:

    Sales Report for [@EmployeeID.Label]

    [@ReportMonth.Label], [@ReportYear]

  2. Примените требуемое форматирование.

Предварительный просмотр отчета

Предварительный просмотр и проверка отчета

  1. Просмотрите отчет.

  2. Убедитесь, что отчет запускается автоматически.

  3. С помощью панели инструментов средства просмотра отчетов проверьте следующее.

    1. Поле Месяц отчета имеет раскрывающийся список со всеми месяцами. Значение по умолчанию — июль.

    2. Год отчета имеет значение по умолчанию 2007.

    3. Поле Сотрудник имеет раскрывающийся список с именами сотрудников. Значение по умолчанию — David Campbell.

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

  5. После щелчка переключателя отображается текст сценария.

  6. Если присвоить параметру ShowAll значение True и запустить отчет, значения параметра, сведения об источнике данных и наборе данных и описание появятся на последней странице отчета.

Развертывание отчета

Развертывание отчета

  1. В обозревателе решений щелкните правой кнопкой мыши проект и выберите Развернуть. Проверьте наличие ошибок в строке состояния среды BI Development Studio или на панели вывода.

    ПримечаниеПримечание

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

  2. В браузере перейдите на сервер отчетов или сайт SharePoint и убедитесь, что общие источники данных, общие наборы данных и отчеты находятся в нужных папках, а также что отчеты можно просматривать.

Следующие шаги

Создание проекта отчета и базового отчета завершено. Теперь можно создать образец отчета. Дополнительные сведения см. в разделе Учебники. Создание образцов отчетов AdventureWorks 2008R2 (SSRS).