建立 Customers_Near_Stores_2008R2 報表

本教學課程可幫助您根據這一套 AdventureWorks 2008R2 範例報表建立 Customers_Near_Stores_2008R2 報表。

此報表針對住在某地理位置半徑內的個別 AdventureWorks 客戶顯示客戶清單和客戶人口統計資料。地理位置以 String 參數形式傳入,其中包含地理位置的已知文字 (WKT) 表示。如需有關報表以及其關聯性套件的詳細資訊,請參閱<教學課程:建立 AdventureWorks 2008R2 範例報表>。

學習內容

在本教學課程中,您將會執行下列工作:

  • 加入具有個別客戶資訊的資料集,包括從住家地址到指定位置的距離。

  • 加入具有轉售商店資訊的資料集。

  • 設定包含地理位置做為文字的參數。

  • 設定指定商店距離的參數。

  • 在報表的最後一頁上顯示資料來源、資料集和選擇的參數值。

  • 加入報表標題,其中包括報表用途的相關資訊。

  • 加入報表描述。

  • 加入資料表,以便針對住在離指定之商店指定距離內的客戶顯示客戶人口統計資料。

  • 定義當沒有客戶住在指定距離內時顯示的 NoRowsMessage

  • 預覽及驗證報表。

完成本教學課程的估計時間:15 分鐘。

需求

如需需求清單,請參閱<AdventureWorks 2008R2 範例報表的必要條件>。

本教學課程會假設您已完成<建立報表伺服器專案及 AdventureWorks2008R2_Base 報表>。

若要開啟專案並建立報表的複本

  1. 在 Business Intelligence Development Studio 中,開啟報表伺服器專案 AdventureWorks 2008R2。

  2. 在 [方案總管] 中,進行下列動作:

    1. 以滑鼠右鍵按一下報表 AdventureWorks2008R2_Base.rdl,然後按一下 [複製]

    2. 以滑鼠右鍵按一下專案節點,然後按一下 [貼上]

    3. 將複製的報表重新命名為 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

  1. 開啟 @Geolocation[參數屬性]

  2. [提示] 變更為商店位置?

  3. [可用的值] 上,選取 [從查詢取得值]

  4. 針對 [資料集] 選取 StoreLocation。

  5. 針對 [值] 選取 GeoLocation。

  6. 針對 [標籤],選取 Store。

  7. [預設值] 上加入值,並將它設定為下列文字:

    POINT (-82.4151596338717 40.7459610884615)

此值對應至名為 The Bike Mechanics 的商店。

若要設定報表參數 @Radius

  1. 開啟 @Radius 的參數屬性。

  2. [提示] 中輸入距離 (英里)?

  3. [資料類型] 變更為 [整數]

  4. [預設值] 上加入值,並將它設定為 100。

若要將返回父報表的指示加入至頁首

  1. 擴展頁首的高度。

  2. 在標誌下方,加入名為 tbBackInstructions 而且包含下列文字的文字方塊:使用瀏覽器的上一頁按鈕回到父報表。

  3. 視需要設定文字方塊的格式。

若要加入報表標題

  1. 在報表的頂端,於頁首底下加入名為 tbTitle 而且包含下列文字的文字方塊:

    [NCustomers] [Customers] 的人口統計資料

    住在商店的 [@Radius] 英里內

    [@GeoLocation.Label]

    依通勤距離分組

  2. 以滑鼠右鍵按一下 [NCustomers] 開啟 [預留位置屬性] 對話方塊,然後將 [名稱] 設定為 NCustomers 而將 [值] 設定為 =CountDistinct(Fields!CustomerID.Value,"CustomerLocations")。

  3. 以滑鼠右鍵按一下 [Customers] 開啟 [預留位置屬性] 對話方塊,然後將 [名稱] 設定為 Customers 而將 [值] 設定為 =IIF(CountDistinct(Fields!CustomerID.Value,"CustomerLocations")=1,"Customer","Customers")。

  4. 讓文字方塊在報表上置中對齊,並且視需要設定每行文字的格式。

若要刪除案例文字方塊

  • 刪除 ToggleInformation 文字方塊以及包含案例文字的文字方塊。

就這份報表而言,案例資訊會包含在您剛才加入的報表標題中。

加入描述

若要加入描述

  1. 在頁尾中,將描述文字方塊中的文字取代成下列文字:

    用途:Sales_by_Region_2008R2 中商店指標的鑽研報表。顯示有關住在離商店為指定英里數內之客戶的資訊。商店地理位置是包含已知文字 (WKT) 值的 String 參數。

  2. 按一下報表背景,在屬性窗格中顯示 [報表屬性]

  3. [描述] 中,貼上描述文字。

在資料表中顯示客戶人口統計資料

若要加入資料表

  1. 加入名為 tblxTable_Demographics 的資料表,其中顯示 CustomerLocations 資料集的下列欄位:

    • [Name2], [Name1]

    • [DistanceinMiles]

    • [NumberCarsOwned]

    • [EmailAddress]

  2. 加入以 [CommuteDistance] 為基礎的資料列群組。

  3. 視需要設定資料表格式。

若要加入沒有資料時顯示的訊息

  1. 選取資料表。

  2. 在 [屬性] 窗格中,尋找 NoRowsMessage 並輸入下列運算式:="No customers live within " & Parameters!Radius.Value & " miles. Display the parameters on the toolbar and enter a different distance."

預覽及驗證報表

若要預覽及驗證報表

  • 執行報表及驗證以下項目:

    1. 參數值出現在報表標題中。

    2. 資料表依通勤距離來組織。

    3. 當您變更 radius 參數值時,客戶數目也會變更。

    4. 當沒有客戶住在指定距離內時,您看到 NoRowsMessage 值。

後續步驟

您已經完成這份報表的建立工作。若要建立其他 AdventureWorks 範例報表,請參閱<教學課程:建立 AdventureWorks 2008R2 範例報表>。

請參閱

其他資源

變更記錄

更新的內容

  • 將報表變更為以 AdventureWorks2008R2_Base.rdl 為基礎