第 1 课:创建共享数据集和配置报表参数 (SSRS)
在本课中,您将基于针对 Employee_Sales_Summary_2008R2 报表的数据集查询参数创建共享数据集和配置报表参数。
学习内容
在本教程中,您将了解如何执行下列操作:
首先创建基本报表的副本。
向项目和报表中添加多个共享数据集。
配置自动为每个数据集查询参数自动创建的报表参数。
添加用于向报表用户说明报表用途的应用场景说明。
添加有条件隐藏的文本,以显示数据源和数据集查询信息。
添加有条件隐藏的文本,以显示报表用户选择的参数值。
添加有条件隐藏的文本,以显示报表说明。
添加报表标题。
预览并验证报表。
部署报表。
本教程的预计学时:15 分钟。
打开项目并制作报表的副本
在 Business Intelligence Development Studio 中,打开报表服务器项目 AdventureWorks 2008R2 示例报表。
在解决方案资源管理器中,执行下列操作:
右键单击报表 AdventureWorks2008R2_Base.rdl,然后单击**“复制”**。
右键单击项目节点,然后单击**“粘贴”**。
将复制的报表重命名为 Employee_Sales_Summary_2008R2.rdl。
创建共享数据集
此报表项目使用四个共享数据集,这些数据集基于共享数据源 AdventureWorks2008R2。
创建 EmployeeSalesYearOverYear2008R2
为各年同比销售添加共享数据集
在解决方案资源管理器中,添加名为 EmployeeSalesYearOverYear2008R2 的共享数据集。
该数据有助于回答以下问题:我的季节性销售额各年同比增长如何?
在该报表中,折线图和迷你图将显示此数据。
指向 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)
共享数据集将显示在解决方案资源管理器中。
在“报表数据”窗格中,创建名为 EmployeeSalesYearOverYear2008R2 的数据集。
在**“数据集属性”对话框中选择“使用共享数据集”**,并单击您刚刚在解决方案资源管理器中创建的数据集。
数据集查询包括查询变量 @ReportMonth、@ReportYear 和 @EmployeeID。
在**“数据集属性”**中,确保为每个查询变量都创建了数据集参数。
在“报表数据”窗格中,确保为每个数据集参数都创建了报表参数。
“报表数据”窗格中的数据集是对解决方案资源管理器中的共享数据集的引用。发布该报表后,该引用将指向报表服务器或 SharePoint 站点上的共享数据集。
创建 EmployeeSalesDetail2008R2
添加包含每个销售订单的数据的共享数据集
在解决方案资源管理器中,添加名为 EmployeeSalesDetail2008R2 的共享数据集。
该数据有助于回答以下问题:我是否达到了全月和每个类别的销售定额?
在该报表中,矩阵和嵌入指示器将显示此数据。
使用 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
共享数据集将显示在解决方案资源管理器中。
在“报表数据”窗格中,创建名为 EmployeeSalesDetail2008R2 的数据集。
在**“数据集属性”对话框中选择“使用共享数据集”**,并单击您刚刚在解决方案资源管理器中创建的数据集。
创建 EmpSalesMonth2008R2
为各月环比销售添加共享数据集
在解决方案资源管理器中,添加名为 EmpSalesMonth2008R2 的共享数据集。
该数据有助于回答以下问题:本月的分类销售与往年同月相比情况如何?
在该报表中,柱形图和数据条形图将显示此数据。
使用 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
共享数据集将显示在解决方案资源管理器中。
在“报表数据”窗格中,创建名为 EmpSalesMonth2008R2 的数据集。
在**“数据集属性”对话框中选择“使用共享数据集”**,并单击您刚刚在解决方案资源管理器中创建的数据集。
创建 SalesEmployees2008R2
为雇员可用值列表创建数据集
在解决方案资源管理器中,添加名为 SalesEmployees2008R2 的共享数据集。
此数据为 EmployeeID 参数提供有效值。
使用 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]
共享数据集将显示在解决方案资源管理器中。
在“报表数据”窗格中,创建名为 SalesEmployees2008R2 的数据集。
在**“数据集属性”对话框中选择“使用共享数据集”**,并单击您刚刚在解决方案资源管理器中创建的数据集。
配置报表参数
共享数据集包含数据集查询以及针对 ReportYear、ReportMonth 和 EmployeeID 的查询变量。将自动为每个查询变量创建对应的报表参数。默认情况下,将针对数据类型 String、单个值、无默认值或有效值列表的情况设置每个报表参数的属性。必须根据需要手动配置每个参数。
更改参数的顺序
更改报表查看器工具栏上参数的顺序
在“报表数据”窗格中,双击 ShowAll。
在工具栏上的“报表数据”窗格中,单击**“下移”**,直至参数处于列表中的最后。
单击 ReportMonth。
单击**“上移”**,直至参数显示在列表中的第一位。
配置 ReportMonth
将 @ReportMonth 配置为仅接受来自您单独指定的一组值的值。默认值必须为这些值之一,否则报表将不会自动运行。
配置报表参数 @ReportMonth
在“报表数据”窗格中,展开**“参数”**。
打开 @ReportMonth 的**“参数属性”**。
在**“常规”页上,将“数据类型”改为“整数”**。
在**“可用值”页上,选择“指定值”**。
为一年中的每个月分别添加一个条目。将**“标签”设置为月份名,将“值”**设置为月份的序号。例如,第一个条目为 January 和 1。最后一个条目为 December 和 12。填写全部 12 个值。
在**“默认值”页上,选择“指定值”。在“值”**中,键入 7。
这会将默认值设置为 July。如果每个报表参数均具有默认值,则报表将在第一次查看时自动运行。
配置 ReportYear
配置报表参数 @ReportYear
打开 @ReportYear 的**“参数属性”**。
在**“常规”页上,将“数据类型”改为“整数”**。
在**“默认值”页上,选择“指定值”**。
添加值。在**“值”**中,键入 2007。
配置 EmployeeID
配置报表参数 @EmployeeID
打开 @EmployeeID 的**“参数属性”**。
在**“常规”页上,将“提示”**改为 Employee。
将**“数据类型”改为“整数”**。
在**“可用值”页上,选择“从查询中获取值”**。
在**“数据集”**中,选择 SalesEmployees2008R2。
在**“值”**中,选择 BusinessEntityID。
在**“标签”**中,选择 Employee。
在**“默认值”页上,选择“指定值”。在“值”**中,键入 283。此值即 David Campbell 的雇员 ID。
添加应用场景说明
添加应用场景说明
在应用场景说明文本框中,将现有文本替换为以下文本:
作为 AdventureWorks 的销售人员,我想知道如何将我的销售额与前几年的季节性销售额进行比较。
折线图和迷你图显示了所有类别各年的销售额。
具有指示器的矩阵显示当前销售额与定额的对比。在报表查看器工具栏上更改定额值。
柱形图和数据条形图显示每个类别的销售额。
在后面的课程中,您将从文本中的单词链接到相关的数据区域。
显示数据源、数据集和参数值
您可以显示数据集查询命令文本以及用户为每个报表参数选择的值。为了减少报表中的混乱,请将文本框中的此信息放在最后一页上的有条件隐藏的矩形容器中。
添加矩形
在报表底部页脚上方添加一个矩形。
在**“矩形”**属性中,执行以下操作:
在**“常规”页上,选择“在组件前面添加分页符”**。
在**“可见性”页上,选择“基于表达式显示或隐藏”**,然后键入:=NOT Parameters!ShowAll.Value
在以下步骤中,当您完成文本框后,将每个文本框添加到此矩形。根据需要扩展该矩形。通过将矩形用作容器,您可以轻松地将所有文本框作为一个单元进行移动。
添加显示参数值的文本框
向表体添加一个文本框以及以下文本(在单独的行上):
报表月份:[@ReportMonth] [@ReportMonth.Label]
报表年度:[@ReportYear]
员工 ID:[@EmployeeID] [@EmployeeID.Label]
将该文本框拖至此矩形并根据需要调整大小。
添加显示数据源和数据集信息的文本框
向表体添加一个名为 DataSourceandDatasets 的文本框以及以下文本:
-
数据源 AdventureWorks2008R2:
创建一个名为 AdventureWorks2008R2 的占位符,其值为:=DataSources!AdventureWorks2008R2.DataSourceReference
数据集 EmployeeSalesYearOverYear2008R2:
创建一个名为 EmployeeSalesYearOverYear2008R2 的占位符,其值为:=DataSets!EmployeeSalesYearOverYear2008R2.CommandText。
数据集 EmployeeSalesDetail2008R2:
创建一个名为 EmployeeSalesDetail2008R2 的占位符,其值为:=DataSets! EmployeeSalesDetail2008R2.CommandText。
数据集 EmpSalesMonth2008R2。
创建一个名为 EmpSalesMonth2008R2 的占位符,其值为:=DataSets! EmpSalesMonth2008R2.CommandText。
按需设置文本格式。例如,在数据集名称之下添加下划线。
将该文本框拖至此矩形并根据需要调整大小。
添加说明
添加说明
在页脚中,将说明文本框中的文本替换为以下文本:
用途:汇总报表。显示针对所有类别、单个类别和定额的各年同比销售情况。包括图表(线图、迷你图、具有刻度分隔符的柱形图、数据条)、Tablix(切换行、行组、表和组级别的指示器)、组和报表变量、矩形容器、共享数据集、共享数据源、图表线条颜色的自定义代码、书签、钻取操作、多值参数,以及用于控制文本框和切换行的条件可见性的参数。
单击报表背景以便在属性窗格中显示**“报表属性”**。
在**“说明”**中,粘贴说明文本。
添加报表标题
添加报表标题
在页眉中,添加具有以下两行文本的文本框:
Sales Report for [@EmployeeID.Label]
[@ReportMonth.Label], [@ReportYear]
按需设置格式。
预览报表
预览并检查报表
预览报表。
检查报表是否自动运行。
在报表查看器工具栏上,检查以下事项:
Report Month 具有包含所有月份的下拉列表。默认情况下,该值为 July。
Report Year 具有默认值 2007。
Employee 具有包含所有雇员姓名的下拉列表。默认情况下,该值为 David Campbell。
在页眉中,将显示徽标、报表名称和报表标题。
单击切换项时,将显示应用场景文本。
当您将 ShowAll 设置为 True 并运行报表时,参数值、数据源和数据集信息以及说明将显示在报表的最后一页上。
部署报表
部署报表
在解决方案资源管理器中,右键单击该项目,再单击**“部署”**。检查 BI Development Studio 的状态行中或“输出”窗格中是否显示错误。
注意 由于该报表依赖于共享数据集,因此,首次部署该报表时,必须部署整个项目。
在浏览器中,导航到报表服务器或 SharePoint 站点,确保共享数据源、共享数据集和报表显示在正确的文件夹中,并且您可以查看这些报表。