Report Builder для користувача, Різне, Інтернет-технології, статті

Малопомітний інструмент створення звітів, корисний для всіх

З моменту випуску служб звітів SQL Server 2000 Reporting Services в січні 2004 р. я мав можливість провести більше 100 демонстрацій цього продукту. Одна з часто повторювалися прохань, які мені доводилося чути, полягала в тому, що добре б в Reporting Services мати засіб звітів для кінцевих користувачів. Фахівці Microsoft прислухалися до цього побажання і створили в SQL Server 2005 Reporting Services новий, спеціально пристосований для даної ситуації інструмент Report Builder. Спочатку ви використовуєте Business Intelligence Development Studio з пакета Visual Studio 2005 – це набір типів проектів в Visual Studio 2005, – щоб створити і налаштувати модель звітів (що лежить в основі рівень метаданих, який дозволяє кінцевим користувачам створювати звіти). Як тільки модель встановлена, користувачі можуть задіяти Report Builder, щоб складати власні звіти. Report Builder спроектований таким чином, щоб користувачі, які не мають великого досвіду роботи з базами даних, могли створювати звіти, не вдаючись у подробиці написання запитів для отримання даних.


Я розділив процес створення звіту на три фази: створення моделі звітів в Visual Studio 2005 (що має на увазі настройку джерела даних, налаштування візуального представлення джерела даних і настройку моделі звітів), впровадження моделі звітів на сервері звітів і власне написання звіту. Нам знадобляться наступні інструменти: Visual Studio 2005, SQL Server 2005 Reporting Services і .NET Framework 2.0.


Фаза 1. Створюємо модель звітів в Visual Studio 2005


Як і у випадку з іншими компонентами SQL Server 2005, спочатку використовується Visual Studio 2005, щоб створити новий проект для моделі звітів. Виберіть у якості типу проекту Business Intelligence Projects і використовуйте Report Model Project як шаблон.


Створюємо джерело даних. Приступивши до створення нового проекту, на наступному кроці необхідно визначити в Report Model Project один або декілька джерел даних. Report Builder на сьогодні підтримує в якості джерела даних SQL Server версії 7.0 і вище. Analysis Services 2005 також може служити джерелом даних (хоча ви не побачите цього варіанту в Report Model Project – додаткові відомості можна знайти в урізанні «Способи створення моделей звітів »). Щоб створити джерело даних, слід запустити майстер Data Source Wizard, клацнувши правою кнопкою на папці Data Source у вікні Solution Explorer. У нашому прикладі використовується зразок реляційної бази даних AdventureWorks, яка поставляється разом з SQL Server 2005.


Створюємо подання джерела даних. Як видно з назви, подання джерела даних (Data Source View, DSV) – це спосіб вибрати підмножина таблиць і уявлень з джерела даних. Щоб створити уявлення джерела даних, потрібно запустити майстер DSV, клацнувши правою кнопкою на папці Data Source Views у вікні Solution Explorer і вибравши в контекстному меню пункт Add New Data Source View. Майстер дозволяє відібрати потрібні таблиці та подання з певної бази даних. Після завершення роботи майстра можна буде додавати обчислювані стовпці до існуючої таблиці або поданням, а також створювати нові уявлення (які називаються Named Queries – іменовані запити, щоб не плутати з актуальними уявленнями, уже існуючими в базі даних). В даному випадку я вибираю все таблиці і не роблю додаткових налаштувань.


Екран 1. Правила генерації звітів


Створюємо модель звітів. Модель звітів – це опис джерела даних і відносин між його об’єктами на рівні метаданих. Щоб створити модель звітів, необхідно запустити майстер Report Model Wizard, клацаючи правою кнопкою на папці Report Models у вікні Solution Explorer і вибираючи в контекстному меню пункт Add New Report Model. При появі сторінки Select Data Source View потрібно вибрати відповідне подання джерела даних. Коли з’явиться форма Select report model generation rules (правила генерації моделі звітів), слід залишити настройки за замовчуванням, як показано на екрані 1. Хоча майстер надає опис кожного правила, необхідно взяти до уваги кілька важливих, на мій погляд, зауважень.

Об’єкти і атрибути. Слід розрізняти об’єкти та атрибути. Таблиці, подання та іменовані запити є об’єктами в моделі звітів (і в клієнтської частини Report Builder). Наприклад, вибір варіанту в двох перших правилах визначає те, як майстер створюватиме об’єкт на основі подання Data Source View. Стовпці таблиць є атрибутами.


Обчислення. За замовчуванням майстер Report Model Wizard буде автоматично створювати суму, мінімум, середнє значення і максимум для числових атрибутів. Крім того, майстер може створити поля для обчислень з датами і лічильники числа унікальних екземплярів чогось в рамках одного об’єкта. Ці обчислення дають додаткову інформацію, корисну з аналітичної точки зору і з точки зору ведення звітів (наприклад, число замовлень, яке було в минулому місяці).


Ролі. Роль в моделі звітів стосується відносин між об’єктами, і не слід плутати поняття ролі в моделі звітів з поняттям ролі в системі безпеки. Коли кінцевий користувач створює звіт, Report Builder використовує ці ролі, щоб автоматично фільтрувати об’єкти, що спрощує користувачеві навігацію і вибір потрібних елементів в моделі звітів.


Далі, після того як були обрані правила, майстер Report Model Wizard пропонує зібрати статистику моделі (Model Statistics). Майстер використовує Model Statistics, щоб генерувати і встановлювати в моделі звітів властивості за замовчуванням. Процес генерації моделі даних зберігає ці статистичні обчислення в поданні джерела даних. Наприклад, в процесі створення моделі звітів Report Model Designer вважає число унікальних екземплярів кожного об’єкта і використовує ці дані, щоб визначити, коли при введенні параметра повинен відображатися список доступних значень, а коли сам користувач повинен підшукувати значення.


Нарешті, на сторінці завершення роботи майстра (Completing the Wizard) потрібно ввести ім’я моделі звітів і натиснути Run, щоб завершити роботу. Після цього майстер створює модель, що займе декілька хвилин (Залежно від розміру моделі звітів). Перш ніж відобразити результати створення моделі звітів, майстер робить два проходи до бази даних – джерела. На першому проході він обробляє правила, відповідальні за створення об’єктів, атрибутів, різновидів даних, полів обчислень і ролей. Другий прохід сходить до додаткової і більш складною обробці правил.

Екран 2. Результати роботи майстра генерації звітів


У вікні результатів роботи майстра по створенню моделі звітів, показаному на екрані 2, потрібно знайти запис Status. Зверніть увагу на попередження про відсутність у таблиці первинного ключа (екран 3). Це важливо: якщо у якоїсь таблиці немає первинного ключа, слід встановити первинний ключ для всіх нижележащих таблиць, так щоб кожен рядок даних однозначно визначалася, коли запускається звіт в Report Builder. Можна встановити логічний первинний ключ, використовуючи Data Source View Designer; просто виділіть один або декілька стовпців і скористайтеся пунктом меню Data Source View-Set Logical Primary.

Як вже говорилося вище, на екрані 2 показано вікно готових моделей звітів. Об’єкти розташовані в лівій панелі, а атрибути та ролі – у правій. Недоступне безпосередньому сприйняттю внутрішній устрій моделей звітів використовує XML-мова, яка називається Semantic Model Definition Language (SMDL), тому файли моделей звітів мають розширення. smdl.


Фаза 2. Впроваджуємо модель звітів на сервер звітів


Після того як ми вибрали джерело даних, створили уявлення джерела даних і модель звітів, саме час налаштувати деякі параметри впровадження і завантажити файли джерела даних і моделі звітів на сервер звітів. Щоб встановити параметри впровадження, потрібно клацнути в Solution Explorer правою кнопкою на елементі Project і ввести URL цільового сервера в адресний рядок сервера звітів (наприклад, localhost/ReportServer ). Якщо ви раніше використовували SQL Server 2000 Reporting Services, то побачите новий параметр впровадження – папку TargetDataSourceFolder, яка спрощує централізовану роботу і повторне використання джерел даних в декількох проектах.


Фаза 3. Пишемо звіт


Тепер адміністратор має можливість приміряти на себе роль кінцевого користувача. Для цього він повинен запустити в своєму браузері менеджер звітів Report Manager шляхом введення адреси комп’ютера, на якому працює Reporting Services (наприклад, localhost/Reports ). Потім, натискаючи нову кнопку Report Builder в менеджері звітів, слід запустити клієнтську частину Report Builder. Упорядник звітів Report Builder спирається на нову модель впровадження Visual Studio 2005 ClickOnce, що означає його автоматичну установку на комп’ютер кінцевого користувача. Слід мати на увазі, що для установки Report Builder на клієнтському комп’ютері потрібна бібліотека.NET Framework 2.0.

Екран 3. Попередження про відсутність первинного ключа


Вибираємо джерело даних і спосіб відображення звіту. Перед генерацією звіту необхідно вибрати джерело даних і спосіб відображення звіту (таблиця, матриця, діаграма), оскільки Report Builder не підтримує звітів у вільній формі. Для першого зразка звіту з розподілом продажів за часом ми вибрали джерело даних Example1 і спосіб відображення у вигляді матриці. Потім натискаємо ОК. Список об’єктів моделі відображається у віконці зі списком з назвою Entities в панелі Explorer, показаної на екрані 4. (Щоб побачити панель Explorer, потрібно вибрати View, Explorer в інструментарії Report Builder.)

Вибираємо у віконці зі списком Entities об’єкт Sales Territory (територія продажів). Зверніть увагу, що віконце зі списком Fields відображає поля, характерні саме для Sales Territory.

Екран 4. Вікно для побудови звітів


Далі слід виділити поле Group і перетягнути його в секцію угруповання рядків у вікно проектування зовнішнього вигляду звіту, як показано на екрані 4. Інший спосіб досягнення того ж результату – подвійний клацання на полі Group. Потрібно мати на увазі, що після того, як ви помістіть поле Group у вікно проектування зовнішнього вигляду звіту, Report Builder відфільтрує об’єкти у віконці Entities і відобразить тільки ті з них, які мають відношення до Sales Territory. Така фільтрація призначена для того, щоб спростити користувачеві навігацію по моделі звітів і вберегти його від об’єднання об’єктів, які не мають ніякого відношення один до одного. Тепер слід помістити поле Name праворуч від поля Group в секції угруповання рядків у вікні проектування зовнішнього вигляду звіту.

Далі у віконці зі списком Entities під об’єктом SalesTerritory потрібно виділити роль Sales Order Header, як показано на екрані 5. У віконці зі списком Fields слід розкрити поле Ship Date і перетягнути атрибут Ship Year в секцію угруповання стовпців, яка розташована на правій стороні вікна проектування зовнішнього вигляду звіту. Нарешті, ми повинні додати чисельні дані в секцію обчислення сум у вікно проектування зовнішнього вигляду звіту. Необхідно у віконці Fields вибрати поле Total Sub Total і перетягнути його в секцію обчислення сум, як показано на екрані 5. Чисельні дані можна форматувати шляхом виділення всіх шести числових полів одночасно, натискання правої кнопки миші і вибору Format. Введіть заголовок звіту. Приблизний зовнішній вигляд звіту показаний на екрані 5.


Екран 5. Налаштування заголовків звіту


Запускаємо звіт. Запустимо звіт, натискаючи кнопу Run Report на панелі інструментів Report Builder. Детально розглянувши результат, ви побачите, що Report Builder додає деякі цікаві деталі: він обчислює проміжні і повні суми в рядках і стовпцях, додає сортування на рівні рядків по полям Group і Territory і динамічно генерує гіперпосилання для кожного проміжного значення Sub Total. Помістіть курсор на Sub Total і натисніть гіперпосилання – з’явиться новий звіт (Sales Order Headers). Реально цей звіт не існує; Report Builder створює його по ходу виконання шляхом вилучення відносин між об’єктами звіту. Аналогічно можна виділити Sales Order Number і побачити ще один новий звіт, потім натиснути # Sales Order Details і т. д. Ця функція надає кінцевим користувачам можливість необмеженої деталізації, щоб досліджувати дані звіту.

Зберігаємо звіт. Щоб зберегти звіт на сервері звітів, виберемо в меню Report Builder пункт File, потім Save. Після того як звіт збережений, його можна переглядати, настроювати і захищати точно так само, як якщо б ми створювали цей звіт, використовуючи Visual Studio 2005 Report Designer.


Створюємо звіт у вигляді таблиці


Тепер скористаємося відображенням у вигляді таблиці, щоб створити другий звіт, параметри якого на цей раз будуть повертати список осіб Sales Persons по полю Territory для заданої групи Territory Group. Ми обрали цей звіт для того, щоб звернути увагу читачів на кілька важливих аспектів первісної моделі звітів Report Model. Виберіть на панелі інструментів Report Builder пункти File, New. Вкажіть джерело даних Example1 і табличний зовнішній вигляд звіту. Знайдіть і виділіть об’єкт Sales Person у віконці Entities, потім перетягніть поле # Commission Pct в секцію стовпців у вікно проектування зовнішнього вигляду звіту. (Якщо ви не бачите цього поля, розкрийте групу Total Commission Pct.) Як і в попередньому випадку, Report Builder відфільтровує список у віконці Entities, щоб відображати тільки ті об’єкти, які мають відношення до Sales Person. Перетягнемо поля Total Sales Quota і Total Sales YTD у вікно проектування зовнішнього вигляду звіту правіше Commission Pct.


Далі у віконці Entities необхідно виділити найменування Sales Person в списку об’єкта Sales Person – ця роль вказує на об’єкт Employee, але майстер Report Model Wizard іменує цю роль Sales Person. Під найменуванням Sales Person розкриється інший список ролей. Виділимо роль Contact і перетягнемо поля об’єктів Last Name і First Name (Ім’я та Прізвище) в вікно проектування зовнішнього вигляду звіту зліва від поля Total Commission Pct. У вікні проектування слід натиснути правою кнопкою на кожній вкладці стовпців сірого кольору і скасувати вибір параметра Show Group Sub Totals («Показувати проміжні суми по групах »), щоб з полями First Name і Commission Pct не пов’язувалося поле обчислень проміжної суми. Наостанок додамо одну клітинку зі списком, щоб можна було фільтрувати звіт за територіальним ознакою (Sales Territory). Натисніть піктограму Filter на панелі інструментів Report Builder (або виберіть у меню Report Builder пункти Report, Filter). З’явиться вікно Filter Data. У віконці Entities потрібно виділити роль Territory (у списку об’єктів Sales Person) і перетягнути поле Name на панель Filter. Виділіть у клітинці зі списком пункт Northwest, клацніть на панелі фільтра правою кнопкою Territory і виділіть пункт меню Prompt. Поруч зі словом Territory з’явиться зелений знак питання, яке показує, що допускається настройка цього фільтра при перегляді звіту. Тепер звіт має виглядати приблизно так, як показано на екрані 6.

Екран 6. Остаточний етап налаштування звіту


Виникає запитання, що б ми могли зробити в нашій моделі, щоб цей звіт стало писати ще простіше? Наприклад, початківцям така міра, як включення поля Employee’s Name (Ім’я співробітника) в об’єкт Sales Person, допомогла б заощадити час. Також непогано було б включити поле Full Name, щоб було простіше відображати повне ім’я співробітника, не турбуючись при цьому про зайві полях проміжних сум. І нарешті, хоча Report Builder дозволяє кінцевим користувачам форматувати числові значення, було б краще, якби ці значення форматувати Report Builder.

Напевно багато хто може запропонувати й інші вдосконалення, але для початку вистачить і цього. Щоб продовжити вивчення правильної організації і налаштування об’єктів, використання атрибутів і зміни форматів.


Report Builder – це довгоочікуване доповнення до служб Reporting Services. І хоча, по-моєму, малоймовірно, що фахівці з інформаційних технологій небудь перестануть займатися створенням звітів, Report Builder надає підтримку тим користувачам, які мають доступ до даних на бізнес-рівні, але не відчувають себе досить впевнено з Visual Studio 2005, щоб писати звіти.


Способи створення моделей звітів


Зазвичай для побудови моделі звіту використовується Report Model Project в Visual Studio 2005. Але модель звітів можна згенерувати і безпосередньо з джерела даних, який уже запроваджено на сервері звітів. Наприклад, якщо ви використовуєте SQL Server Management Studio (SSMS), то можете підключитися до примірника Reporting Services 2005, розкрити папку Data Sources, натисканням правої кнопки вибрати джерело даних і відзначити в меню пункт Generate Model. Аналогічно в Report Manager на вкладці Properties будь-якого джерела даних можна побачити кнопку Generate Model, яка виконує ту ж функцію. Цікаво відзначити, що використання джерела даних для створення моделі звітів – єдиний спосіб створити модель в разі бази даних Analysis Services 2005. Сенс цього стає ясний, якщо врахувати, що куб сам по собі вже є моделлю даних. Але залишимо куби осторонь – адже, швидше за все, адміністратори зволіють витратити час на використання проекту Report Model Project, щоб створювати і настроювати моделі для більшості звітів реляційних баз даних.


Тонка настройка моделі звітів


Report Builder – це відмінний інструмент для написання простих звітів. Але коли ми створювали другий звіт в розділі «Створюємо звіт у вигляді таблиці», у вас напевно виникла думка, що, хоча і немає необхідності в глибокому розумінні термінології баз даних, для того щоб створити звіт, повинен існувати більш простий спосіб витягти дані у відповідному форматі. Давайте повернемося до тієї моделі звітів і внесемо кілька змін. Почнемо з відкриття проекту Report Model Project в Visual Studio 2005.


Розподіляємо об’єкти по папках. У вікні готових моделей звітів можна побачити, що кореневий вузол Model має багато об’єктів. Можна впорядкувати ці об’єкти, розподіливши їх по папках і спростивши таким чином їх пошук.

Екран А. Створення нової папки


Щоб створити нову папку, слід виділити кореневий вузол Model, натиснути праву кнопку в області проектування моделі (див. екран А) і вибрати New, Folder. Озаглавим папку Product Details. Щоб додати об’єкти в папку Product Details, потрібно знову виділити кореневий вузол Model і прокрутити вікно до самого низу, поки не з’явиться папка Product Details. У списку подробиць праворуч від дерева слід перетягнути всі об’єкти, які починаються зі слова Product (крім об’єкта Product), в папку Product Details. Продовжуйте цей процес, щоб створити додаткові папки, впорядковують залишилися об’єкти.

Налаштування об’єкта Sales Person. Нагадаємо: для створення джерела даних ми використовували зразок реляційної бази даних AdventureWorks. У базі даних AdventureWorks всі люди, що мають відношення до продажів, – співробітники. І було б добре, крім іншого, мати можливість бачити властивості Employee, коли ми дивимося на об’єкт Sales Person. Також багато деталей, що відносяться до якої-небудь записи Employee (ім’я людини), розташовані в об’єктах Contact. Щоб зробити властивість Full Name частиною об’єкта Sales Person, потрібно виконати дві додаткові настройки.


У вікні готових моделей звітів потрібно клацнути на об’єкті Employee. Натисніть правою кнопкою в області проектування моделі і виберіть New, Expression. Встановіть значення виразу в (First Name & ««) & Last Name (див. екран В), встановіть властивість Nullable в значення True і перейменуйте вираз в Full Name.


У вікні готових моделей звітів слід клацнути на об’єкті Sales Person. Знайдіть на панелі Properties властивість Inheritance (успадкування властивостей). Потім виділіть атрибут InheritsFrom (успадковує від) і виберіть в комірці зі списком варіант Employee. Далі необхідно виділити атрибут Binding (під властивістю InheritsFrom) і вибрати в комірці зі списком варіант FK_SalesPerson_Employee_SalesPersonID – це відношення, яке ми будемо використовувати, щоб об’єднати об’єкти Sales Person і Employee.


Переформатують атрибут Commission Percentage. У вікні готових моделей звітів потрібно натиснути об’єкт Sales Person, виділити атрибут # Commission Pct і змінити властивість Format на P (тобто відсотки), як показано на екрані А. Встановіть значення властивості DefaultAggregateAttribute в None, оскільки комісійні не є адитивними (ми хочемо, щоб значенням за умовчанням була величина комісії, а не якийсь результат підсумовування). При бажанні можна продовжити і змінити властивість Format атрибутів Sales (таких, як Sales YTD Sales Quota), встановивши їх у значення C (валюта), щоб відображати ці значення як валюту. Також можна змінити у цих атрибутів властивість Width, щоб автоматично підстроюватися під великі суми.


Встановіть для об’єктів атрибути деталізації за замовчуванням. Якщо придивитися до якого-небудь об’єкту у вікні готових моделей звітів, то можна побачити на панелі Properties кілька властивостей, що відносяться до атрибутам (наприклад, DefaultDetailAttributes, IdentifyingAttributes, SortAttributes). Ці властивості використовуються, коли система генерує звіти з нескінченною деталізацією і коли користувач перетягує об’єкт (а не поля об’єкта) у вікно проектування зовнішнього вигляду звіту в клієнтської частини Report Builder. Щоб змінити атрибут Details, пов’язаний з об’єктом Sales Person, потрібно виділити об’єкт Sales Person, виділити властивість DefaultDetailAttributes і натиснути кнопку, яка з’являється праворуч від властивості. Необхідно замінити елемент National ID Number на Full Name і перемістити Full Name у верхню частину списку (Поверх Commission Pct).


Пишемо звіт. Можна було б зробити і більше, але давайте подивимося на внесені тільки що зміни. Щоб побачити зміни, потрібно повторити впровадження моделі звітів (див. розділ «Фаза 2. Впроваджуємо модель звітів на сервер звітів »в головній статті) і запустити Report Builder.

Екран В. Налаштування об


Виберіть на панелі інструментів Report Builder пункти File, New. Потім виберіть джерело даних Example 2 і табличний зовнішній вигляд звіту. Далі слід знайти і перетягнути об’єкт Sales Person у вікно проектування зовнішнього вигляду. Зверніть увагу, що поля Full Name і Commission Pct – зазначені нами атрибути деталізації за замовчуванням – відображаються автоматично. Перетягніть поля Total Sales Quota і Total Sales YTD (З панелі Fields на екрані В) так, щоб вони виявилися праворуч від Commission Pct. Пояснення способу додавання осередку зі списком, щоб фільтрувати звіт по Sales Territory, наводиться в розділі «Створюємо звіт у вигляді таблиці »головної статті. Треба сказати, що ці зміни можуть дечому навчити нас в сенсі створення звітів.

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


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

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

Ваш отзыв

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

*

*