+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 91.78 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

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

06.04.2010 16:28

Продолжаем рассказ о нововведениях в 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

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

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

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



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года