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


Создание отчета Customers_Near_Stores_2008R2 (SSRS)

Этот учебник поможет в построении отчета Customers_Near_Stores_2008R2 из набора образцов отчетов AdventureWorks 2008R2.

В этом отчете отображается список клиентов и демографические данные отдельных клиентов AdventureWorks, проживающих в пределах указанного радиуса от указанного географического расположения. Географическое расположение передается в качестве параметра типа String, который содержит хорошо известный текст (WKT) представления географического положения. Дополнительные сведения о комплекте отчетов и их связях см. в разделе Учебники. Создание образцов отчетов 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)
    

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

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

Создание списка допустимых значений для параметра 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. Измените Тип данных на Integer.

  4. В области Значения по умолчанию добавьте значение 100.

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

  1. Разверните во всю высоту верхний колонтитул страницы.

  2. Добавьте под логотипом текстовое поле tbBackInstructions со следующим текстом: Для возврата в родительский отчет используйте кнопку «Назад» браузера.

  3. Отформатируйте текстовое поле.

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

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

    Демографические сведения для [NCustomers] [Customers],

    проживающих в пределах [@Radius] миль от магазина

    [@GeoLocation.Label]

    Сгруппированы по полю 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. В нижнем колонтитуле страницы замените текст в текстовом поле описания следующим текстом:

    Назначение: Детализированный отчет на основе маркеров магазинов в отчете Sales_by_Region_2008R2. Отображает сведения о клиентах, проживающих в пределах указанного расстояния от магазина. Географическое расположение магазина задается параметром типа String, содержащим значение WKT.

  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. При изменении значения радиуса изменяется количество клиентов.

    4. Если в пределах указанного расстояния нет клиентов, отображается значение свойства NoRowsMessage.

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

Построение отчета завершено. Сведения о построении других образцов отчетов AdventureWorks см. в разделе Учебники. Создание образцов отчетов AdventureWorks 2008R2 (SSRS).

См. также

Другие ресурсы

Журнал изменений

Обновленное содержимое

  • Измененный отчет будет основан на файле AdventureWorks2008R2_Base.rdl