Отчеты
21
Май
2

Использование карт в отчетах

Не так давно состоялся релиз SQL Server 2008 R2, который включает в себя множество интересных нововведений. Одно из которых сейчас и рассмотрим – компонент Карты в Reporting Services.

Карты в отчеты можно добавлять из трех источников:

  • Предустановленные карты (у меня это только территория США 🙂 );
  • Карты на основе файлов ESRI Shapefile;
  • И на основе выборки специальных данных (по которым строится катра).

Т.к. среди предустановленных карт нет Российской Федерации, а набивать ручками координаты точек мне лень – воспользуемся готовыми картами ESRI Shapefile 🙂

Подготовка тестовых данных

В целом идея такова: вывести на карту несклолько регионов центральной части России и разукрасить их в разные цвета, в зависимости от интенсивности торговли в каждом из них.

  • Создайте в CRM несколько Территорий, например из центральной части России (назовите их в соответствии с названиями областей/краев/республик из центральной части Россиии);
  • Назначьте эти Территории нескольким Бизнес-партнерам;
  • Создайте несколько Заказов, в каждом из которых выберите разных Бизнес-партнеров. В Заказы добавьте продукты (любые) – это нужно чтобы у заказов появилась Общая сумма;
  • Скачайте карту Российской Федерации (в формате ESRI Shapefile) куда-нибудь на локальный диск.


Разработка отчета

  • В Visual Studio создайте новый отчет Reporting Services;
  • Добавьте в отчет новый Источник данных и Набор данных содержащий такй SQL-запрос:
    Этот запрос выбирает все заказы и суммы продаж по ним и группирует по Территории, которую он «вытаскивает» из записей Бизнгес-партнеров;
  • Перенесите из Toolbox в рабочую область компонент Map – тут же откроется визард настройки карты:


    • На первом шаге необходимо выбрать источник данных для карты – как было уже сказано это ESRI Shapefile – среди скаченных файлов выберите RUS_adm1.shp, содержащий деление страны на административные области;
    • Подкорректируйте визуальное расположение чтобы отобразить крупныи планом центральную область РФ;
    • На шаге Choose map viaualization необходимо выбрать тип аналитики. Т.к. мы будем разукрашивать наши области, то ставьте Color Analytical Map;
    • В качестве источника данных, на основе которых система будет разукрашивать карту, выберите датасет созданный на втором этапе;
    • Теперь нужно сопоставьть области на карте и области из датасета: в первой таблице поставьте галку напротив NL_NAME_1, а в столбце Analytical Dataset Fields выберите Территория. Таким оброзом мы сопоставили название (на русском) областей на карте и название областей из датасета. Но как Вы наверно уже заметили, название областей на карте выведено вопросиками, что говорит нам о проблеме с кодировкой. Не волнуйтесь, все нормальрно! 🙂 в последующих шагах мы это поправим, а пока идем дальше;
    • На следующем шаге нужно сделать две вещи:
      • во-первых выберите зависимость цвета области от поля «Сумма заказов» – в списке Field to vizualize выберите [Sum(Сумма_заказов)];
      • во-вторых нужно отобразить название областей на карте – поставьте галку Display labels и выберите в списке ниже все то же поле NL_NAME_1 (c вопросиками разберемся позже 🙂 ).

      Цветовую схему выберите на свой вкус;

    • Finish.



  • Работа с визардом закончена, теперь необходимо подправить кое-какие касячки и сделать мальнькие донастройки:
    • Сначала исправим «кракозябры»: два раза щелкните на какой-либо области карты и заново введите название территории в поле NL_NAME_1 на панели Properties. Повторите этот шаг для всех отображаемых областей. Только учтите, что введенное Вами название должно совпадать с тем, которое используется в CRM в объекте Территория, иначе система не сможет сопоставить данные из датасета и областями на карте;
    • Изменим шкалу градаций цвета (в которые будут разукрашиваться области) в сторону ее увеличения: щелкните два раза на пустом месте карты, чтобы отобразить панель Map Layers справа от карты — щелкните правой кнопкой мыши по PolygonLayer1 в списке слоев — Polygon Color Rule — перейдите на страницу Distribution и введите в поле Number of subranges значение 10, что означает что шкала будет разделена на 10 значений. А чтобы система никак не оптимизировала шкалу, выберите в первом списке значение Equal Interval, т.е. шкала будет разбита на 10 равных отрезков. Ок.
  • Нус, на этом все, теперь Вы можете посмотреть предварительный рендеринг карты на вкладке Preview (если изменение названий областей не отображается на вкладке Preview, подвигайте немного карту, чтобы VS сообразил что Вы внесли изменения 🙂 ), а затем опубликовать отчет в CRM (это я надеюсь Вы уже знаете как делать 🙂 ).



Пост скриптум

Т.к. файл отчета RDL, содержащий карту, получится довольно большим, то скорее всего CRM будет ругается при попытки его первоначальной загрузки (создании самого отчета в CRM). Чтобы это поправить сделайте два вещи:

  1. В файле <сайт CRM>\web.config в ключе httpRuntime секции <system.web> увеличьте показатели executionTimeout (максимальное врема загрзки) maxRequestLength (максимальный размер);
  2. В CRM перейдите Параметры — Администрирование — Системные параметры — вкладка Электронная почта — увеличтьте самый нижний параметр (максимальный размер загружаемого файла).


З.Ы. C другими возможностями карт Вы можете познакомится в статье на MSDN: http://msdn.microsoft.com/ru-ru/library/ee240828(SQL.105).aspx

Комментарии (2)
  • JHghhhhf 21.05.2010

    Приложите, пожалуйста, к статье архив базы данных. Чтобы отчет с картой можно было проверить.

  • slivka_83 21.05.2010

    Добрый день.

    Боюсь что это БД давно уже нет 🙂 И я не совсем понимаю что Вы собираетесь проверять? 🙂 На скриншотах видно что функционал работает 🙂

*

code