创建 Customers_Near_Stores_2008R2 报表 (SSRS)
本教程帮助您基于全套 AdventureWorks 2008R2 示例报表生成 Customers_Near_Stores_2008R2 报表。
此报表显示居住在距某地理位置一定半径范围之内的 AdventureWorks 个人客户的列表及客户统计数据。该地理位置作为一个 String 参数传递,该参数包含地理位置的熟知文本 (WKT) 表示形式。有关全套报表及报表间关系的详细信息,请参阅教程:创建 AdventureWorks 2008R2 示例报表 (SSRS)。
学习内容
在本教程中,您将执行以下任务:
添加具有个人客户信息(包括从家庭地址到指定位置的距离)的数据集。
添加包含分销商商店信息的数据集。
配置一个包含地理位置作为文本的参数。
配置用于指定与商店的距离的参数。
在报表的最后一页上显示数据源、数据集和所选参数值。
添加一个报表标题,其中包含有关报表用途的信息。
添加报表说明。
添加一个报表,以显示居住在指定商店周围一定距离内的客户的统计数据。
定义在指定距离内无客户居住时将显示**“NoRowsMessage”**。
预览并验证报表。
本教程的预计学时:15 分钟。
打开项目并制作报表的副本
在 Business Intelligence Development Studio 中,打开报表服务器项目 AdventureWorks 2008R2。
在解决方案资源管理器中,执行下列操作:
右键单击报表 AdventureWorks2008R2_Base.rdl,然后单击**“复制”**。
右键单击项目节点,然后单击**“粘贴”**。
将复制的报表重命名为 Customers_Near_Stores_2008R2.rdl。
创建客户信息数据集
在“报表数据”窗格中,添加名为 CustomerLocations 的嵌入数据集。使用 AdventureWorks2008R2 共享数据源及以下查询:
SELECT [CustomerID] , [PersonID] as BusinessEntityID , p.FirstName as Name1 , p.LastName AS Name2 , ea.EmailAddress -- , t.Name as AddressType -- Home or Shipping , ad.City, ad.PostalCode , sp.Name as StateProvince , sp.StateProvinceCode , ad.SpatialLocation.STDistance((@GeoLocation))/1609.344 as DistanceinMiles , ad.SpatialLocation , p.Demographics.value('declare namespace awns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey"; (awns:IndividualSurvey/awns:NumberCarsOwned) [1]','int') as NumberCarsOwned , p.Demographics.value('declare namespace awns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey"; (awns:IndividualSurvey/awns:CommuteDistance) [1]','varchar(30)') as CommuteDistance FROM [Sales].[Customer] c INNER JOIN Person.Person p ON p.BusinessEntityID = c.PersonID INNER JOIN Person.BusinessEntityAddress a ON a.BusinessEntityID = p.BusinessEntityID INNER JOIN Person.AddressType t ON a.AddressTypeID = t.AddressTypeID INNER JOIN Person.[Address] ad ON ad.AddressID = a.AddressID INNER JOIN Person.EmailAddress ea ON ea.BusinessEntityID = p.BusinessEntityID INNER JOIN Person.StateProvince sp ON sp.StateProvinceID = ad.StateProvinceID WHERE -- StoreID IS NULL means Customer is an Individual StoreID IS NULL AND t.Name = N'Home' AND sp.CountryRegionCode = N'US' -- 1 Mile = 1609.344 Meters AND (ad.SpatialLocation.STDistance((@GeoLocation))/1609.344) < (@Radius)
此数据集查询将为居住在距 @GeoLocation @Radius 英里范围之内的客户返回客户信息,包括客户统计数据。
在该报表中,这些数据显示在矩阵中。
为 Geolocation 参数创建有效值列表
在“报表数据”窗格中,添加名为 StoreLocation 的嵌入数据集。使用 AdventureWorks2008R2 共享数据源及以下查询:
SELECT [StoreID] as BusinessEntityID , s.Name as Store -- , t.Name as AddressType -- Main Office or Shipping , ad.PostalCode -- , sp.CountryRegionCode --, sp.Name as StateProvince --, sp.StateProvinceCode , ad.SpatialLocation.ToString() as GeoLocation FROM [Sales].[Customer] c INNER JOIN Sales.Store s ON s.BusinessEntityID = c.StoreID INNER JOIN Person.BusinessEntityAddress a ON a.BusinessEntityID = s.BusinessEntityID INNER JOIN Person.AddressType t ON a.AddressTypeID=t.AddressTypeID INNER JOIN Person.[Address] ad ON ad.AddressID = a.AddressID INNER JOIN Person.StateProvince sp ON sp.StateProvinceID = ad.StateProvinceID WHERE -- PersonID IS NULL means Customer is a store PersonID IS NULL AND t.Name = N'Main Office' AND sp.CountryRegionCode = N'US'
该数据集查询将返回 AdventureWorks 商店的主要办公地址及其地理位置的列表。
在该报表中,这些数据显示为 @Geolocation 参数的有效值列表。在报表查看器工具栏上,您看到的是包含商店名称的参数标签而不是包含地理位置的值。
配置报表参数 @Geolocation
打开 @Geolocation 的**“参数属性”**。
将**“提示”**改为 Store location?
在**“可用值”上,选择“从查询中获取值”**。
对于**“数据集”**,选择 StoreLocation。
对于**“值”**,请选择 GeoLocation。
对于**“标签”**,选择 Store。
在**“默认值”**上,添加一个值并将该值设置为以下文本:
POINT (-82.4151596338717 40.7459610884615)
此值对应于名为 The Bike Mechanics 的商店。
配置报表参数 @Radius
打开 @Radius 的参数属性。
在**“提示”**中,键入 Distance in miles?
将**“数据类型”更改为“整数”**。
在**“默认值”**上,添加一个值并将其设置为 100。
添加页眉说明以返回到父报表
展开页眉的高度。
在徽标之下,添加一个名为 tbBackInstructions 的文本框以及以下文本:使用浏览器的“后退”按钮返回到父报表。
根据需要设置文本框的格式。
添加报表标题
在报表顶部的页眉下方,添加名为 tbTitle 的文本框以及以下文本:
Demographics for the [NCustomers] [Customers]
living within [@Radius] miles of the store
[@GeoLocation.Label]
按上下班路程分组
右键单击 [NCustomers] 以打开**“占位符属性”对话框,将“名称”设置为 NCustomers 并将“值”**设置为 =CountDistinct(Fields!CustomerID.Value,"CustomerLocations")。
右键单击 [Customers] 以打开**“占位符属性”对话框,将“名称”设置为 Customers 并将“值”**设置为 =IIF(CountDistinct(Fields!CustomerID.Value,"CustomerLocations")=1,"Customer","Customers")。
使报表上的文本框居中并根据需要格式化每行文本。
删除应用场景文本框
- 删除 ToggleInformation 文本框以及包含应用场景文本的文本框。
对于此报表,应用场景信息包含在您刚添加的报表标题中。
添加说明
添加说明
在页脚中,将说明文本框中的文本替换为以下文本:
用途:从 Sales_by_Region_2008R2 中的商店标记钻取报表。Displays information about customers who live within the specified number of miles from a store.商店地理位置是一个 String 参数,其中包含熟知文本 (WKT) 值。
单击报表背景以便在属性窗格中显示**“报表属性”**。
在**“说明”**中,粘贴说明文本。
在表中显示客户人口统计信息
添加表
添加一个名为 tblxTable_Demographics 的表,其中显示 CustomerLocations 数据集的以下字段:
[Name2], [Name1]
[DistanceinMiles]
[NumberCarsOwned]
[EmailAddress]
基于 [CommuteDistance] 添加行组。
按需设置表格式。
添加在不包含数据时所显示的信息
选择该表。
在“属性”窗格中,找到**“NoRowsMessage”**,然后键入以下表达式:="No customers live within " & Parameters!Radius.Value & " miles. Display the parameters on the toolbar and enter a different distance."
预览并验证报表
预览并验证报表
运行报表并验证以下事项:
参数值显示在报表标题中。
该表按往返距离来组织。
更改半径参数的值时,客户数随之更改。
在指定距离内无客户时,将会看到**“NoRowsMessage”**值。
更改历史记录
更新的内容 |
---|
|