(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Элемент управления "разряд" в Reporting Services 2008 R2

Продолжаем рассказ о нововведениях в Reporting Services 2008 R2 из серии пустячок, а приятно. В прошлой серии мы посмотрели, как можно подстраивать внешний вид отчета в зависимости от того, в какой формат идет рендеринг, при помощи новой глобальной переменной RenderFormat. Сегодня мы рассмотрим новый тип Report Item под названием Sparkline, который я самонадеянно перевел как разряд. Имеется в виду не битик в позиции и не спортивная квалификация, а электрический шарах. Когда выйдут русские Books On-Line, мы узнаем, как он переводится правильно, а пока пусть будет так.

Разряды - это маленькие графички без осей, подписей и легенды, предназначенные умещаться в одной ячейке таблицы, чтобы за единый взгляд получить представление о поведении некоторой численной характеристики.

Абсолютно типовым сценарием для использования разряда является селлсет о двух измерениях. Первое пускается вниз по оси Y, рядом с ним, допустим, отображается мера, свернутая по второму измерению, а рядом с ней делаем еще одну ячейку, в которой в виде графика-разряда раскрываем поведение меры вдоль второго измерения. Первое измерение в этом графике, разумеется, будет порезано по своему мемберу из первой ячейки. Кто-нибудь понял, что я сказал? Неважно, сейчас будет все предельно ясно. Открываем новый проект в Report Designer, создаем новый датасет против БД AdventureWorksDW2008R2. Кто не знает, где она берется, читают здесь. В AdventureWorksDW2008R2 нас будут интересовать следующие таблицы:

image

Рис.1

Датасет будет получаться из следующего запроса:

select pc.EnglishProductCategoryName Род, psc.EnglishProductSubcategoryName Вид, d.CalendarYear Год, d.MonthNumberOfYear Месяц, sum(s.SalesAmount) Деньги from dbo.FactInternetSales s

join dbo.DimProduct p on s.ProductKey = p.ProductKey

join dbo.DimProductSubcategory psc on p.ProductSubcategoryKey = psc.ProductSubcategoryKey

join dbo.DimProductCategory pc on psc.ProductCategoryKey = pc.ProductCategoryKey

join dbo.DimDate d on s.OrderDateKey = d.DateKey

group by pc.EnglishProductCategoryName, psc.EnglishProductSubcategoryName, d.CalendarYear, d.MonthNumberOfYear

order by 1, 2, 3, 4

Скрипт 1

image

Рис.2

В результате запроса, как мы видим, получается подкубик из двух измерений: Товар с уровнями Род и Вид и Время с уровнями Год и Месяц. По детальному уровню Продукт делается свертка, т.к. он нужен только для связывания с фактами и непосредственно в отчете представлен не будет. Деньги являются мерой.

В Report Designere создадим матрицу. Перетащите из датасета (левая панель) в первую колонку поле Род. Если панель с датасетом не видна, скажите в меню View -> Report Data (последний пункт), он же Ctrl-Alt-D.

image

Рис.3

Теперь ступайте в панель групп внизу. Если она не видна, нажмите обведенную на Рис.3 кнопку. Добавьте к группе Род, автоматически образовавшейся при перенесении поля Род из датасета в матрицу, дочернее группирование по полю Вид.

image

Рис.4

Перенесите поле Деньги в ячейку фактов с блеклой серой надписью Data. По умолчанию в кач-ве агрегатной ф-ции будет выбрана сумма. Отцентрируйте заголовки колонок табликса, покрасьте их в жирный цвет, наведите прочие красивости по вкусу.

image

Рис.5

Смотрите, какой классный отчет у нас с вами получился.

image

Рис.6

Отчет показывает суммы продаж в разрезе по уровням измерения Товар. Однако в датасете Рис.2 имеется еще измерение Время. Давайте его задействуем в графике-разряде, чтобы показать, как сумма продаж по каждому товару складывалась из продаж по периодам времени.

Добавьте в таблицу еще одну колонку в пределах группы Вид:

image

Рис.7

Перетащите в нее из панели инструментов элемент управления Разряд.

image

Рис.8

Выберем тип графика, допустим, линии:

image

Рис.9

Кликните на ячейку, в которую вы поместили разряд, чтобы справа появилась всплывающая панель его свойств Chart Data. В верхнюю часть (Values) перетащите из датасета поле Деньги. В среднюю часть (Category Groups = ось Х) перетащите поля Год и Месяц. Год нужен для того, чтобы месяца за разные годы не перемешивались, т.к. поле Месяц - не содержит признака года, это просто номер месяца. Наличие родительской группы Год позволит разделить месяцы по годам. Нижнюю часть (Series Groups) оставьте пустой - у нас не будет несколько графиков на одной координатной плоскости.

image

Рис.10

Для пущей красоты можете разделить заголовочную ячейку, которую она по умолчанию сделала общей, т.к. масштаб группирования добавленной колонки совпадал с соседней, и надписать колонку с графиками чем-нибудь вроде "Динамика продаж".

image

Рис.11

Все, смотрим Preview:

image

Рис.12

По мне, так красота неописуемая. Отчет показывает продажи в разрезе по товарной продукции, в то же время колонка Динамика продаж содержит график, позволяющий судить о динамике продаж каждого товара в разрезе по времени. Сравните, допустим, график в первой строчке (Accessories - Bike Racks) с помесячными цифрами Рис.2. По-моему, похоже.

Нельзя сказать, что разряды, равно как и столбики (Bars), появившиеся в R2, являются чем-то принципиально новым. Те, кто примерно год назад заходил на покойный sqlclub.ru, должны помнить мою статью "Комплексная вводная дема по BI", где при помощи SSIS в кубик собирался размер каждого файла на диске, агрегировался по папкам в измерении parent-child и отображался численно и визуально в виде полосок разной длины в отчете. Ввиду отсутствия в то время всяких bars, sparklines и прочих украшательств я затаскивал в ячейку обычный Chart в виде горизонтальных баров, удаляя легенду, оси, подписи и прочую оснастку, как описано здесь. Следует иметь в виду, что при описанном в посте раскладе график нельзя кидать в детальную ячейку, что, к сожалению, недостаточно четко отражено у Шона. Из-за этого будет возникать ошибка Detail members can only contain static inner members, несколько раз упомянутая в комментах. Аналогично, если положить в детальную ячейку разряд, будет выдана ошибка Unsupported Action. Cannot insert a multi-value item into a detail cell. Это происходит потому, что график, очевидно, требует наличия нескольких значений. Однако в той же строке могут находиться в ячейках скалярные величины. Чтобы уместить последовательность в такую же ячейку, строка должна быть сгруппирована. Если в строке таблицы создать группу, график-разряд спокойно ляжет в групповую ячейку. Единственно, таблица обязана иметь детали, что означает, что рядом с групповыми колонками и графиком будет находиться детализированная колонка, что хорошо с точки зрения выверки тренда, т.к. детальные данные как раз и означают помесячные продажи (ср. с Рис.2), но не очень хорошо с точки зрения визуальности, поэтому в предыдущей иллюстрации под такого рода многомерный датасет была положена не таблица, а матрица.

image

image

Рис.13

Для нужд отладки лучше использовать другую возможность. Разряд, будучи по своей природе графиком, может быть преобразован в полноценный Chart. Предположим, мы обнаружили, что тренды на Рис.12 не слишком совпадают с количественной динамикой Рис.2. Допустим, забыли добавить категорию Год на Рис.10 или добавили не в том порядке, и месяцы перемешались. Но мы об этом еще не знаем. Чтобы выяснить причину, положим отдельный разряд не в матрицу, а рядом на тело отчета. Создадим новый датасет, добавив условие

where psc.EnglishProductSubcategoryName = 'Bike Racks'

Скрипт 2

Это то, что лежит у нас в первой строчке. Перетащим на график аналогично Рис.10 поля датасета в значения и категории, после чего выберем из контекстного меню пункт Convert to Full Chart. Это однонаправленное действие, зато мы можем теперь видеть подписи вдоль осей, контролировать, каким значениям соответствуют всплески и падения на разряде, и своевременно исправить допущенные неточности.

image

image

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 06.04.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Apps for business (corporate)
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft 365 Business Standard (corporate)
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Basic (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Работа в Windows и новости компании Microsoft
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100