Customers_Near_Stores_2008R2 보고서 만들기(SSRS)

이 자습서에서는 일련의 AdventureWorks 2008R2 예제 보고서에서 Customers_Near_Stores_2008R2 보고서를 작성하는 방법을 배웁니다.

이 보고서에서는 지리적 위치의 지정된 반경 내에 거주하고 있는 개인 AdventureWorks 고객 및 이러한 고객에 대한 고객 인구 통계 목록을 표시합니다. 지리적 위치는 지리적 위치를 WKT(Well Known Text)로 표현하는 String 매개 변수로 전달됩니다. 일련의 보고서 및 해당 관계에 대한 자세한 내용은 자습서: AdventureWorks 2008R2 예제 보고서 만들기(SSRS)를 참조하십시오.

학습 내용

이 자습서에서는 다음 태스크를 수행합니다.

  • 집 주소와 지정된 위치 사이의 거리 등의 개인 고객 정보가 들어 있는 데이터 집합을 추가합니다.

  • 대리점 정보가 들어 있는 데이터 집합을 추가합니다.

  • 지리적 위치가 텍스트 형식으로 들어 있는 매개 변수를 구성합니다.

  • 상점에서의 거리를 지정하는 매개 변수를 구성합니다.

  • 보고서의 마지막 페이지에 데이터 원본, 데이터 집합 및 선택한 매개 변수 값을 표시합니다.

  • 보고서 용도에 대한 정보가 들어 있는 보고서 제목을 추가합니다.

  • 보고서 설명을 추가합니다.

  • 지정된 상점의 지정된 거리 내에 살고 있는 고객에 대한 고객 인구 통계를 표시하는 테이블을 추가합니다.

  • 지정한 거리 내에 고객이 거주하고 있지 않을 때 표시할 NoRowsMessage를 정의합니다.

  • 보고서를 미리 보고 확인합니다.

이 자습서에 소요되는 예상 시간: 15분

요구 사항

요구 사항 목록은 AdventureWorks 2008R2 예제 보고서의 사전 요구 사항(SSRS)을 참조하십시오.

이 자습서에서는 이전 단원인 보고서 서버 프로젝트 및 AdventureWorks2008R2_Base 보고서 만들기(SSRS)를 완료했다고 가정합니다.

프로젝트를 열고 보고서의 복사본을 만들려면

  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. 프롬프트를 Store location?으로 변경합니다.

  3. 사용 가능한 값에서 쿼리에서 값 가져오기를 선택합니다.

  4. 데이터 집합에 대해 StoreLocation을 선택합니다.

  5. 에 대해 GeoLocation을 선택합니다.

  6. 레이블에 대해 Store를 선택합니다.

  7. 기본값에서 값을 추가하고 해당 값을 다음 텍스트로 설정합니다.

    POINT (-82.4151596338717 40.7459610884615)

이 값은 이름이 The Bike Mechanics인 상점과 일치합니다.

보고서 매개 변수 @Radius를 구성하려면

  1. @Radius에 대한 매개 변수 속성을 엽니다.

  2. 프롬프트에서 Distance in miles?를 입력합니다.

  3. 데이터 형식정수로 변경합니다.

  4. 기본값에서 값을 추가하고 해당 값을 100으로 설정합니다.

페이지 머리글에 부모 보고서로 돌아가는 지침을 추가하려면

  1. 페이지 머리글의 높이를 확장합니다.

  2. 로고 아래에 다음 텍스트를 포함하며 이름이 tbBackInstructions인 입력란을 추가합니다. Use the browser Back button to return to the parent report.

  3. 필요에 맞게 입력란의 서식을 지정합니다.

보고서 제목을 추가하려면

  1. 보고서 위에 있는 페이지 머리글 아래에 다음 텍스트를 포함하는 이름이 tbTitle인 입력란을 추가합니다.

    Demographics for the [NCustomers] [Customers]

    living within [@Radius] miles of the store

    [@GeoLocation.Label]

    Grouped by Commute Distance

  2. [NCustomers]를 마우스 오른쪽 단추로 클릭하여 자리 표시자 속성 대화 상자를 열고 이름을 NCustomers로 설정하고 을 =CountDistinct(Fields!CustomerID.Value,"CustomerLocations")로 설정합니다.

  3. [Customers]를 마우스 오른쪽 단추로 클릭하여 자리 표시자 속성 대화 상자를 열고 이름을 Customers로 설정하고 을 =IIF(CountDistinct(Fields!CustomerID.Value,"CustomerLocations")=1,"Customer","Customers")로 설정합니다.

  4. 보고서에서 입력란을 가운데에 배치하고 필요한 대로 텍스트 각 줄의 형식을 지정합니다.

시나리오 입력란을 삭제하려면

  • ToggleInformation 입력란을 삭제하고 시나리오 텍스트가 포함된 입력란을 삭제합니다.

이 보고서에서는 방금 추가한 보고서 제목에 시나리오 정보가 포함되어 있습니다.

설명 추가

설명을 추가하려면

  1. 페이지 바닥글에서 설명 입력란의 텍스트를 다음 텍스트로 바꿉니다.

    Purpose: Drillthrough report from store markers in Sales_by_Region_2008R2. Displays information about customers who live within the specified number of miles from a store. The store geolocation is a String parameter that contains a Well Known Text (WKT) value.

  2. 보고서 배경을 클릭하여 속성 창에서 보고서 속성을 표시합니다.

  3. 설명에 설명 텍스트를 붙여 넣습니다.

테이블에 고객 인구 통계 표시

테이블을 추가하려면

  1. CustomerLocations 데이터 집합에 있는 다음 필드를 표시하는 이름이 tblxTable_Demographics인 테이블을 추가합니다.

    • [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. 반경 매개 변수 값을 변경하면 고객 수가 변경됩니다.

    4. 지정한 거리 내에 고객이 없을 때 표시되는 NoRowsMessage 값을 확인합니다.

다음 단계

이 보고서 작성을 완료했습니다. 다른 AdventureWorks 예제 보고서를 작성하려면 자습서: AdventureWorks 2008R2 예제 보고서 만들기(SSRS)를 참조하십시오.

참고 항목

관련 자료

변경 내역

업데이트된 내용

  • AdventureWorks2008R2_Base.rdl에 따라 보고서가 변경되었습니다.