Рубрика:
Администрирование /
Технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Павел Купцов
Reporting Services: составляем отчеты
Ваш начальник требует отчета о трафике? Об итогах инвентаризации сети? Бухгалтерия умоляет помочь с отчетом в Excel? А вы можете предоставить только маловразумительный текстовый файл и рассуждаете о приобретении ERP-системы? Тогда, возможно, вы ещё не знаете о современных технологиях разработки отчетов.
Во многих организациях широко применяется MS SQL Server. Сегодня он может использоваться вместе с такими приложениями, как 1C, SharePoint Portal Server, WSUS, всевозможными корпоративными приложениями (Symantec Backup Exec, продукты Surf Control, Citrix, SAP BO), в собственных разработках компании, для сайта компании и т. п., вы можете и дальше продолжит этот список для себя. Об удобствах использования этой базы данных можно говорить долго, пока дело не дойдет до составления удобочитаемых отчетов.
Конечно, программист всегда сможет открыть Query Analyzer и выполнить заготовленный запрос, для того чтобы получить интересующую его информацию, но что делать рядовым пользователям, желающим получить доступ к информации из базы данных? На помощь приходит служба Reporting Services.
Служба составления отчетов SQL Server 2000, выпущенная в январе 2004 года, вероятно, стала одним из самых широко используемых компонентов.
Почти всем организациям приходится создавать отчеты на основе данных, и с помощью Reporting Services компания Microsoft заполнила этот пробел в инструментарии.
Установка
Для того чтобы установить службу Reporting Services, необходимо:
- Windows Server 2003, Windows XP или Windows 2000 с самыми последними пакетами обновлений.
- Microsoft IIS, так как Reporting Services запускаются как веб-службы XML (плюс должен быть установлен ASP.NET).
- SQL Server 2000 или 2005 в редакции Standard, Enterprise или Developer (Reporting Services несовместимы с более ранними версиями SQL Server).
- Разработчикам отчетов требуется среда Visual Studio.NET 2003 или 2005, которая управляет компонентом Reporting Services Report Designer.
Администраторов, которые не разрабатывают отчеты, Reporting Services обеспечивают различными пользовательскими интерфейсами, что позволяет создавать каталоги, источники данных, учетные записи пользователей и предоставлять пользователям права.
Компоненты 1 и 2 должны стоять на одном компьютере, в то время как 3 и 4 компоненты могут быть установлены где угодно.
Во время установки Reporting Services (далее RS) нужно будет выбрать, где будет установлена БД сервера отчетов.
Для этого вы укажите:
- сервер SQL;
- пользователя с соответствующими привилегиями (для создания новых БД);
- имя БД (можно оставить по умолчанию).
Инсталлятор, проверив введенные данные, создаст необходимые БД на указанном вами SQL-сервере.
Службы RS используют две базы данных SQL-сервера для внутреннего хранения экземпляра сервера отчетов: одну для хранения данных, а другую в качестве временного хранилища.
Эти базы данных создаются одновременно и связываются по имени.
По умолчанию базам данных присваиваются имена соответственно reportserver и reportservertempdb.
Когда все необходимые компоненты установлены – можно приступать к установке RS. Добавлю, что в процессе установки инсталлятор проверит все необходимые компоненты, и в случае если какого-то из них не будет обнаружено, выдаст предупреждение. Когда вы будете устанавливать RS на сервер, то инсталлятор не найдет 4-ый компонент (если конечно вы не ведете разработку на сервере), это сообщение можно смело игнорировать. Для того чтобы в Visual Studio (далее VS) появились шаблоны для создания отчетов – необходимо запустить установку RS на компьютере для разработки отчетов, инсталлятор установит только шаблоны, и они станут доступны при создании проектов в VS.
Созданные отчеты можно просматривать с помощью веб-соединения или как часть приложения Microsoft Windows или портала SharePoint. Если на сервере, куда вы устанавливаете RS, уже развернута служба SharePoint, то потребуется дополнительная настройка IIS, подробности будут сообщены инсталлятором в процессе установки.
Думаю, что с установкой службы RS вы справитесь. Примерную картину после установки смотрите на рис. 1.
Рисунок 1. Вид главной страницы веб-узла службы RS
О функционале этой страницы я скажу позже. Перейдем к самому интересному – созданию отчетов.
Первый отчет
Итак, установка службы на сервер прошла удачно, добавление шаблона для разработки отчетов в VS выполнено. Теперь можно приступать к написанию первого отчета. Запускаем VS и открываем новый проект (см. рис 2.).
Рисунок 2. Создание нового проекта в VS
Новый шаблон, который добавился в VS, называется Business Intelligence Project. Запустить создание этого проекта можно в двух режимах, в режиме мастера и в обычном режиме.
Для первого отчета запустим создание проекта в режиме «мастера» (Report Project Wizard). Перед запуском мастера можно выбрать название для отчета (это будет название папки проекта), и его расположение.
Первый шаг «мастера» предлагает нам выбрать название для источника данных (это может быть любое название), и параметры соединения (см. рис .3).
Рисунок 3. Определение источника данных для проекта
Источник данных можно сделать общим (Shared), это удобно, когда в проекте несколько видов отчетов используют одну и ту же базу данных. Параметры соединения задаются по нажатию кнопки «Edit» (см. рис .4).
Рисунок 4. Окно редактирования свойств подключения
В окне свойства связи с данными нас интересует вкладка «Подключение». Здесь можно задать расположение сервера SQL, имя пользователя/пароль и выбрать базу данных для отчета.
Для наших примеров будем использовать тестовую базу данных Northwind, которая создается на сервере MSSQL в процессе его установки. Структуру этой базы я не буду описывать, при желании, изучить структуру этой базы, вы сможете самостоятельно. Название сервера баз данных в наших примерах будет CTX (у вас это может быть localhost или любое другое), в зависимости от того, где вы будете устанавливать службу RS. Для примеров можете использовать тот же SQL-сервер, где установили RS или любой другой в вашей сети, главное – наличие на нем базы Northwind. Никаких особых настроек для этой БД делать не требуется.
Следующий шаг определяет строку запроса. По нажатию на кнопку «Edit» вызывается редактор Query Builder, хотя мне кажется это лишнее, запрос можно просто вставить в окно мастера (см. рис. 5).
Рисунок 5. Строка запроса SQL, определяющая выборку данных для отчета
Для первого отчета используем такой запрос:
SELECT OrderID AS 'Номер заказа', OrderDate AS 'Дата заказа', RequiredDate AS 'Дата исполнения', Freight AS 'Стоимость'
FROM Orders
WHERE CustomerID =
(SELECT CustomerID
FROM Customers
WHERE CompanyName LIKE 'Familia%')
Названия полей можно определять через псевдонимы (ключевое слово AS), если не делается выборка * (ALL), в последнем случае мастер сам назначит псевдонимы для полей.
В следующем шаге мастера выберите тип отчета Tabular (табличный). Тип отчета Matrix (матричный) используется для отчетов с перекрестными ссылками, о нем мы не будем говорить в нашей статье.
Шаг Design the Table определяет, какие поля запроса будут доступны для просмотра в отчете, каким образом они будут группироваться.
Поле Page определяет название страницы отчета, и в этом случае на каждой странице отчета будет очередной результат выборки.
Поле Group определяет поля запроса, по которым осуществляется группировка значений.
Поле Details определяет поля запроса, которые будут выводится в отчете (см. рис. 6).
Рисунок 6. Выбор группировки полей в отчете
Следующий шаг определяет:
- внешний вид таблицы;
- возможность раскрывающихся списков (Enable drilldown), полезная опция в случае большого количества сгруппированных данных;
- возможность расчета промежуточных итогов (Include subtotals).
Последнюю опцию лучше выставлять вручную, так как мастер расставляет формулы для промежуточных итогов автоматически для всех полей, содержащих цифры, что некорректно (зачем нам складывать номера заказов?).
Последний шаг, который мы выполним, будет – определение внешнего вида отчета. Здесь уже все зависит от ваших цветовых и стилистических предпочтений. На выбор дается пять вариантов оформления. После этого шага нажмем в «мастере» кнопку «Finish» (пропустим шаг публикации отчета на сервере RS). Теперь назовем наш отчет «Информация о заказах» и, поставив галочку в «Preview report», нажмем «Finish».
Как видите, отчет у нас получился слишком простой, но не спешите с выводами. Красоту и удобочитаемость только предстоит настроить. Описывать все возможности разработки отчетов в среде VS не хватит и книги, поэтому я кратко опишу то, что нам потребуется в первую очередь.
Работать с отчетом нам предстоит в основном в трех вкладках, это:
- Preview – для просмотра отчета.
- Layout – для редактирования свойств таблицы и внешнего вида отчета.
- Data – для редактирования тела запроса и источника данных.
В поле Layout находится наибольшее количество полезных для нас настроек. Их я опишу подробнее позже, когда мы будем создавать более сложный отчет. Сейчас же мы лишь немного подкорректируем ширину столбцов (это выполняется простым перетаскиванием «мышкой» границ полей, как в Excel), и отформатируем свойства полей с датой и стоимостью. Для этого кликнем правой кнопкой «мыши» в соответствующих полях и перейдем на пункт «Properties» (свойства). Откроется окно, в котором можно задать формат для данной ячейки (см. рис. 7).
Рисунок 7. Выбор формата ячейки
После того как мы отформатировали вывод, изменили размеры столбцов и ячеек, немного можно добавить оформления и получится отчет, который можно показать начальству, впрочем, не очень строгому (см. рис. 8).
Рисунок 8. Предпросмотр готового отчета в VS
Второй отчет
Теперь, когда базовые понятия определены, можно разработать отчет сложней и с большим функционалом. Плюс к этому рассмотрим публикацию отчета на сервере RS.
Если при создании проекта в «мастере» вы пометили источник данных как общий, то в окне Solution Explorer у вас должна быть картинка примерно как на рис. 9.
Рисунок 9. Добавление нового отчета в проект
Кликнем, правой кнопкой мыши на папке Reports и выберем пункт «Add New Report». Откроется привычный «мастер», но мы уже можем использовать «Общий» источник данных. Проходим все шаги «мастера» точно так же как и для первого отчета, только изменим немного строку запроса:
SELECT OrderID AS 'Номер заказа', OrderDate AS 'Дата заказа', RequiredDate AS 'Дата исполнения', Freight AS 'Стоимость'
FROM Orders
WHERE CustomerID =
(SELECT CustomerID
FROM Customers
WHERE CompanyName LIKE @Company+'%')
Те, кто знаком с Transact SQL, сразу же заметят ошибку в запросе. Переменная @Company не объявлена и не типизирована. Но это особенность работы с VS и службой RS.
Теперь переходим на вкладку «Layout», и кликнем правой кнопкой мыши на поле ниже нашей таблицы (см. рис. 10). Переходим в пункт «Report Parameters». В открывшемся окне – вы увидите уже определенный параметр Company. Как видите, VS обработал наш запрос, и переменные с префиксом @ автоматически засчитал как параметры, передающиеся в запрос. В окне Report Parameters, можно определить несколько полезных свойств для переменной. Здесь мы уже определяем тип переменной, значение по умолчанию, список доступных значений, псевдоним для запроса пользователю и т. п. (см. рис. 11).
Рисунок 10. Доступ к списку параметров отчета
Рисунок 11. Редактирование свойств переменной
Немного отформатируем таблицу отчета, и перейдем к финальной стадии создания отчета – размещение его на сервере с RS.
Публикация отчета
Публиковать отчет на сервере можно двумя способами:
- Из VS (публикуется весь проект).
- Через веб-интерфейс RS.
Я рассмотрю второй способ, так как он дает большее понимание процесса публикации, чем непрозрачные действия VS.
Для размещения отчета, мы должны через браузер зайти на страницу RS. На этой странице есть меню для операций с отчетами, источниками данных, и некоторой настройки веб-узла. Первое, что я посоветовал бы сделать, – разместить в отдельной папке Источник данных. Для этого создаем папку Data. При этом ставим галочку «Hide in list view» (не отображать в списке), чтобы она не отображалась в обычном представлении на веб-узле (см. рис. 12).
Рисунок 12. Создание папки на веб-узле RS
Вернувшись на узел, мы не увидим созданную нами папку, до тех пор, пока не нажмем на кнопку «Show Details» (подробно). Перейдем в папку Data и нажмем кнопку «New Data Source» (новый источник данных). Откроется окно для создания источника данных. В поле Name, Description можно вводить произвольные данные, отметим пункт «Hide in list view и Enable data source», тип соединения выбираем SQL Server.
Данные в поле Connection String имеют следующий формат.
data source=CTX; initial catalog=Northwind
где:
- data source – Net-BIOS-имя сервера MS SQL (это может быть как IP-адрес, так полное доменное имя сервера);
- initial catalog – имя нашей БД на сервере.
Указываем имя пользователя и пароль для доступа к БД и жмем «ОК». Теперь можно загрузить оба наших отчета.
Для загрузки отчетов используем пункт «Upload File» (загрузка файла). Из нашего проекта мы должны загрузить файлы с расширением rdl. После загрузки файлов, перейдем в свойства одного из загруженных отчетов.
На вкладке «Data source» (источник данных) нужно указать созданный нами ранее источник данных и нажать «Apply» (см. рис. 13).
Рисунок 13. Назначение источника данных для отчета
Для отчета с параметром (второй отчет) будет доступна опция «Parameters», в которой можно переопределить некоторые значения. Каждому отчету можно установить лимит на выполнение, и разграничить доступ к нему по пользователям из Active Directory.
В свойствах доступно еще несколько опций, с ними я думаю, вы разберетесь сами.
Теперь можно запускать отчеты на выполнение, по вкладке «View» (см. рис. 14).
Рисунок 14. Так выглядит отчет, размещенный на сервере RS
Сформированный отчет можно экспортировать в 7 форматов, в их числе Excel, PDF, XML, html и т. п.
Резюме
Отчеты – важная составляющая функционала любой базы данных. Удобный инструмент для их разработки должен иметь, как минимум, 3 качества:
- Позволять пользователю выбирать параметры для запроса.
- Уметь разграничивать доступ к различным отчетам.
- Экспортировать в различные файловые форматы результаты запроса.
Всеми этими свойствами система обладает.
Минусы этой системы очевидны: высокая стоимость. Использование решений на основе Open Source гораздо дешевле для внедрения и использования, но лично мне неизвестны подобные Open Source-проекты, учитывая, что мы рассмотрели лишь вершину айсберга этой технологии.
- http://msdn2.microsoft.com/ru-ru/library/ms166344.aspx.
- http://citforum.ru/database/mssql/reporting_services.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|