Елемент управління “розряд” в Reporting Services 2008 R2, Інші СУБД, Бази даних, статті

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


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


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



Рис.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



Рис.2


В результаті запиту, як ми бачимо, виходить подкубік з двох вимірів: Товар з рівнями Рід і Вид і Час з рівнями Рік та Місяць. За детальному рівню Продукт робиться згортка, т.к. він потрібний тільки для зв’язування з фактами і безпосередньо в звіті представлений не буде. Гроші є заходом.


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



Рис.3


Тепер ідіть в панель груп внизу. Якщо її не видно, натисніть обведену на Рис.3 кнопку. Додайте до групи Рід, автоматично утворилася при перенесенні поля Рід з датасета в матрицю, дочірнє групування по полю Вид.



Рис.4


Перенесіть поле Гроші в клітинку фактів з бляклої сірої написом Data. За замовчуванням в кач-ве агрегатної ф-ції буде обрана сума. Відцентруйте заголовки колонок таблікса, пофарбуйте їх в жирний колір, наведіть інші красивості за смаком.



Рис.5


Дивіться, який класний звіт у нас з вами вийшов.



Рис.6


Звіт показує суми продажів у розрізі за рівнями вимірювання Товар. Проте в датасете Рис.2 є ще вимір Час. Давайте його задіємо у графіку-розряді, щоб показати, як сума продажів по кожному товару складалася з продажів по періодах часу.


Додайте в таблицю ще одну колонку в межах групи Вид:



Рис.7


Перетягніть в неї з панелі інструментів елемент управління Розряд.



Рис.8


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



Рис.9


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



Рис.10


Для більшої краси можете розділити заголовну клітинку, яку вона за замовчуванням зробила загальної, тому що масштаб групування доданої колонки збігався з сусідньої, і надписати колонку з графіками чимось кшталт “Динаміка продажів”.



Рис.11


Все, дивимося Preview:



Рис.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), але не дуже добре з точки зору візуальності, тому в попередній ілюстрації під такого роду багатовимірний датасет була покладена не таблиця, а матриця.




Рис.13


Для потреб налагодження краще використовувати іншу можливість. Розряд, будучи за своєю природою графіком, може бути перетворений в повноцінний Chart. Припустимо, ми виявили, що тренди на Рис.12 не дуже збігаються з кількісною динамікою Рис.2. Припустимо, забули додати категорію Рік на Рис.10 або додали не в тому порядку, і місяці перемішалися. Але ми про це ще не знаємо. Щоб з’ясувати причину, покладемо окремий розряд не в матрицю, а поруч на тіло звіту. Створимо новий датасет, додавши умова


where psc.EnglishProductSubcategoryName = “Bike Racks”

Скрипт 2


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



Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*