Microsoft Datazen — новый инструмент, построенный на зрелом и проверенном временем фундаменте корпоративных служб и компонентов визуализации компании Component Art. Интерактивные, сенсорные, аналитические панели мониторинга, созданные экспертами в области данных, доступны пользователям настольных и почти всех современных мобильных устройств.
Около двух лет назад я помогал одной крупной консалтинговой компании оценить различные панели мониторинга мобильной бизнес-аналитики для применявшегося в ней решения Microsoft BI. Мой знакомый из группы платформы бизнес-аналитики Microsoft поинтересовался, какого я мнения относительно новой мобильной панели мониторинга, именуемой Datazen. На первый взгляд мне показалось, что продукт недостаточно зрелый, но уровень интерактивности и визуальные эффекты были великолепны. Я в шутку ответил, что Microsoft следует купить эту компанию и завершить ее интеграцию со своей платформой бизнес-аналитики. Каково же было мое удивление, когда в апреле я узнал, что именно это и произошло.
Зная, что Datazen спроектирован компанией Component Art, я был уверен, что продукту будет сопутствовать успех, так как компания выпускала превосходные средства визуализации данных и графического интерфейса для среды Visual Studio со времени выпуска. NET Framework. На рынке представлено множество пакетов компонентов для разработчиков, но специалисты Component Art смогли найти действительно удачное решение для уровня представления данных. Думаю, Datazen достиг зрелости. Да, задача проектирования запросов представления данных и панелей мониторинга нетривиальна, но полагаю, что усилия, затраченные на ее решение, окупятся.
Что такое Datazen?
Datazen — это мощная мобильная платформа мониторинга корпоративного масштаба, размещаемая на сервере и безупречно функционирующая на любой мобильной платформе (iPad и iPhone, Windows для настольных компьютеров, планшетов и телефонов, устройства Android и HTML5). Для работы с Datazen не требуется SharePoint, подписка на «облачную» службу, Office и т. д. Трудно поверить, но это так. Кроме того, продукт предоставляется бесплатно обладателям SQL Server Enterprise 2008 и более новых версий, а также участникам программы Software Assurance.
Каждая панель мониторинга может иметь три уровня, оптимизированных для работы на классических компьютерах, планшетах и смартфонах. В идеале для просмотра панелей мониторинга должно использоваться приложение, установленное на клиентском устройстве, однако их можно просматривать и в браузере при подключении к серверу. Приложения на клиентской стороне кэшируют наиболее свежие данные, и их можно рассматривать как работающие в режиме без подключения к сети. Серверная архитектура Datazen отчасти похожа на службы SQL Server Reporting Services. Сервер может быть просто отдельной машиной Windows Server с IIS или масштабироваться для обслуживания большего числа пользователей и интенсивного трафика.
Источники данных. Без дополнительной настройки Datazen совместим с SQL Server, SQL Server Analysis Services (многомерными и табличными), SharePoint Lists, Microsoft Azure SQL Database, OData Web Service, XML Web Service, Generic ODBC, MySQL (ODBC), Oracle (ODBC и OLE DB), PostgreSQL (ODBC и OLE DB) и документами Excel на сервере. Решение охватывает практически все варианты, кроме dBase и FoxPro.
Проверка подлинности и управление пользователями. Пользователи Windows организованы в группы вокруг «концентраторов» (hub), которые представляют собой сообщества для управления коллекциями панелей мониторинга, показателями KPI и коллективными дискуссиями. Контент можно настроить для анонимного использования и внешнего доступа через Интернет.
Кэширование, параметры и фильтры. Быстродействие панелей мониторинга высокое, когда данные кэшированы (на сервере или клиенте). Несколько элементов выбора данных используются для фильтрации кэшированных или динамических результатов с применением параметров запросов. Раскрывающиеся списки, списки флажков и селекторы диапазона дат — неотъемлемый элемент взаимодействия с панелью мониторинга.
Интерактивность и навигация
Сразу же после начала работы с панелью мониторинга бросается в глаза интерактивность всех элементов. Если элемент управления — не селектор диапазона дат, раскрывающийся список или контрольный список с несколькими значениями, то по крайней мере на экране появятся всплывающие подсказки с дополнительными сведениями. Элементы управления обеспечивают детализацию, передачу параметров контекста в другие панели мониторинга или веб-страницы с настраиваемыми URL-строками. С помощью действий на панели мониторинга можно уйти вглубь до детального рабочего отчета.
Начало работы
Ниже будет показано, как построить решение Datazen, чтобы опробовать продукт. Для полностью защищенного и масштабированного производственного решения потребуется выполнить несколько дополнительных шагов, чтобы получить реальную панель мониторинга с настоящими данными. Как выглядит интерактивная панель для классического компьютера или планшета, показано на экране 1.
Экран 1. Интерактивная панель Datazen для классического компьютера или планшета |
Та же панель для телефона представлена на экране 2.
Экран 2. Интерактивная панель Datazen для телефона |
Далее мы рассмотрим настройку сервера Datazen при подготовке к проектированию простейших панелей мониторинга, а затем перейдем к более сложным задачам и взаимодействию с панелями с использованием параметров и углубленной навигации.
Необходимые ресурсы
Datazen Enterprise Server устанавливается на Windows Server со службами Internet Information Services. Для текущей сборки не требуется даже экземпляра SQL Server. Серверу необходима связь с источниками данных для панелей мониторинга. В производственной среде потребуется доступ к службе SMTP, чтобы отправлять оповещения по электронной почте новым пользователям. На тестовом и демонстрационном серверах это требование можно обойти.
Для подготовки и публикации панелей мониторинга необходимо приложение Datazen Publisher, функционирующее на устройстве с Windows 8.x или Windows 10. Data Zen Publisher можно бесплатно загрузить из магазина Windows.
Для просмотра панелей мониторинга и KPI действуйте совместно с другими пользователями, а для кэширования данных панели мониторинга с целью автономного доступа потребуется приложение Datazen, которое можно бесплатно загрузить из магазинов Apple App Store, Google Play for Android, Windows Store или Windows Phone Store.
Мобильные панели мониторинга Datazen
Установочный пакет Datazen содержит три серверных компонента, среди которых Datazen Core Service, Data Acquisition Service и Rendering Service. Все три службы загружаются и настраиваются сразу же, но вы можете установить каждую из них отдельно на разных компьютерах, чтобы масштабировать среду в целях повышения безопасности или производительности. На моем демонстрационном сервере все компоненты размещены на одном компьютере, наряду с SQL Server и Analysis Services. Документ с именем Security and Deployment Best Practices.docx в пакете установки содержит дополнительные инструкции по развертыванию.
Создайте учетную запись пользователя для работы с учетными записями служб. На моем автономном компьютере это локальный пользователь, но в производственных условиях может быть и учетная запись домена. Создайте имя регистрации SQL Server для этого пользователя Windows с пользователем базы данных в роли db_datareader для вашего источника данных (в нашем случае AdventureWorksDW2014). При использовании SSAS создайте роль для пользователя или добавьте его к роли администраторов экземпляра в демонстрационных целях.
Загрузите и распакуйте zip-файл, а затем запустите исполняемый файл (Datazen.Enterprise.Server.3.0.2908.exe).
Если вы хотите разрешить доступ к серверу пользователям вне брандмауэра (что необходимо для использования мобильных устройств, подключенных к Интернету), то необходимо настроить IIS для внешнего доступа. При использовании моей виртуальной машины Azure для этого достаточно просто добавить конечную точку для порта 80. В производственных условиях, чтобы воспользоваться зашифрованными каналами связи, потребуется установить сертификат и разрешить доступ для порта 443. В ответ на запрос введите пароль для пользователя Admin. Он необходим для входа на панель управления.
Мастер установки предоставляет два важных элемента информации, которые потребуются для масштабирования развертываний и изменений настроек в будущем. Скопируйте и вставьте ключ шифрования репозитория и идентификатор экземпляра в текстовый файл и сохраните его в безопасной папке.
Предоставьте необязательные имя узла и порт или задействуйте стандартный порт 80 для доступа к серверу. Если используется заголовок узла или нестандартный порт, то эти данные служат для доступа к серверу. В противном случае адресом сервера является просто http://ServerName (http://servername/) или назначенное имя домена. В случае моей виртуальной машины Azure адрес сервера — http://ServerName.CloudApp.Net (http://servername.cloudapp.net/).
В ответ на запрос введите адрес SMTP-сервера. Этот шаг не обязателен, но это самый удобный способ создавать новых пользователей. Когда учетная запись пользователя создана, сервер отправляет автоматизированное почтовое сообщение со ссылкой и инструкциями для пользователей по подготовке их учетных записей и назначению паролей. Если у вас нет SMTP-сервера, то можно скопировать и вставить адрес пользователя и отправить его вручную.
Если вы назначаете пользователя самостоятельно, то сначала выполните завершения сеанса Admin, а затем используйте ссылку подготовки для назначения пароля. Всегда вводите надежный пароль, состоящий из букв разных регистров, цифр и специальных символов.
Адреса серверов
Существует две веб-страницы, которые следует сохранить в «Избранном». Панель управления используется для управления почти любыми параметрами сервера. Панель управления имеет адрес http://ServerName/CP, а адрес обозревателя HTML-панелей мониторинга совпадает с именем сервера, которое ведет к http://ServerName/Viewer.
Создание учетных записей пользователей
Выполните регистрацию в панели управления в качестве администратора с использованием назначенного пароля. Следует назначить одного пользователя владельцем концентратора. Его можно рассматривать как пользователя — администратора концентратора или группы панелей мониторинга. Первый шаг — создать учетную запись пользователя сервера. Введите имя пользователя и адрес электронной почты, а затем создайте учетную запись пользователя. Если вы не пользуетесь электронной почтой, щелкните ссылку Set password («Задать пароль»), перейдите по ссылке и задайте пароль (см. экран 3).
Экран 3. Создание учетной записи |
После того как создана новая учетная запись пользователя и назначен пароль, добавьте эту учетную запись пользователя в концентратор на странице Users («Пользователи»). Установите флажки Is Publisher («Издатель») и Is Owner («Владелец») (см. экран 4).
Экран 4. Настройка учетной записи |
Создание источников данных
Службы Datazen выполняются с правами учетной записи службы, которая имеет доступ к каждому источнику данных. Это упрощает настройку источников данных. Завершите сеанс администратора и войдите от имени пользователя, владельца концентратора.
Создайте новое соединение с данными, выберите поставщика данных (я использую SQL Server) и укажите имя. Для источника данных введите имя сервера или экземпляра и имя базы данных для начального каталога. Учетная запись службы имеет доступ на чтение к базе данных, поэтому не вводите имя пользователя или пароль; установите флажок Integrated Security («Встроенная система безопасности»). Проверка, выполняемая по щелчку на Test Connection («Проверить подключение»), должна завершиться успехом, после чего можно нажать кнопку Next («Далее»), чтобы назначить разрешения членам группы. Сначала можно воспользоваться группой Everyone («Все»), а впоследствии добавлять группы пользователей.
Щелкните имя подключения к данным, чтобы добавить представление данных. Это запрос, который будет направлять функционирование панели мониторинга или KPI (ключевой показатель эффективности). Нажмите кнопку New Data View («Новое представление данных») и запишите запрос в поле Data View Query («Запрос представления данных»). Я предпочитаю создавать запросы в SSMS, а затем вставлять сценарий после отладки и проверки результатов. Я подготовил представление данных с именем Internet Sales 2014 с использованием сценария T-SQL, приведенного в листинге 1.
На следующей странице должны быть показаны предварительные результаты. Нажмите кнопку Finish («Готово»), чтобы завершить и сохранить представление данных.
Я подготовлю еще один источник данных и представление данных для служб Analysis Services. Когда создается новый источник данных с использованием поставщика данных Microsoft SQL Server Analysis Services, к свойству поставщика добавляется MSOLAP. Такой прием действует для многомерной или табличной базы данных. Дайте подключению имя, введите имя сервера или экземпляра для свойства источника данных и введите имя базы данных для каталога. Как и в случае с источником данных SQL Server, не вводите имя пользователя и пароль, так как учетной записи службы уже предоставлен доступ на чтение к базе данных. Нажмите кнопку Next, убедитесь, что группа Everyone имеет доступ, а затем нажмите кнопку Finish для сохранения источника данных.
Щелкните новый источник данных, а затем New Data View… Я создаю запрос к представлению данных с именем Daily Reseller Sales by Category and Country с использованием сценария запроса многомерных выражений, приведенного в листинге 2. И вновь, выполните отладку и тестирование в SSMS, а затем скопируйте запрос в поле Data View Query («Запрос представления данных»).
Некоторые замечания
Datazen использует многомерные выражения (MDX) иначе, чем другие инструменты. Поэтому, чтобы элементы измерения, размещенные на оси Rows («Строки»), вошли в результаты запроса, необходимо вычислить элементы, а затем добавить эти значения на оси Columns («Столбцы»). Существуют другие приемы, но это самый гибкий из обнаруженных мною методов.
Для элемента управления панели мониторинга Time Navigator требуется истинное значение Date. По этой причине я создал вычисляемый элемент DateValue с помощью функции CDATE и свойства MEMBER_CAPTION. Когда конструктор обнаруживает подходящий тип данных, он включает фильтрацию по диапазону данных.
Ресурсы
Загрузить Datazen Enterprise Server можно по адресу: http://go.microsoft.com/fwlink/?LinkId=529426
Начало работы, документация и ресурсы Datazen: http://www.datazen.com/start/
http://www.datazen.com/docs/
Select sum(f.OrderQuantity) OrderQty, sum(f.[SalesAmount]) SalesAmt, sum(f.[TaxAmt]) TaxAmt, sum(f.[Freight]) Freight, p.EnglishProductName Product, ps.EnglishProductSubcategoryName Subcategory, pc.EnglishProductCategoryName Category, st.SalesTerritoryCountry, st.SalesTerritoryGroup, st.SalesTerritoryRegion, od.CalendarYear, od.EnglishMonthName MonthName, od.MonthNumberOfYear, od.FullDateAlternateKey DateValue from [dbo].[FactInternetSales] f inner join [dbo].[DimDate] od on f.OrderDateKey = od.DateKey inner join [dbo].[DimProduct] p on f.ProductKey = p.ProductKey inner join [dbo].[DimProductSubcategory] ps on p.ProductSubcategoryKey = ps.ProductSubcategoryKey inner join [dbo].[DimProductCategory] pc on pc.ProductCategoryKey = ps.ProductCategoryKey inner join [dbo].[DimSalesTerritory] st on f.SalesTerritoryKey = st.SalesTerritoryKey where od.CalendarYear = 2014 group by p.EnglishProductName, ps.EnglishProductSubcategoryName, pc.EnglishProductCategoryName, st.SalesTerritoryCountry, st.SalesTerritoryGroup, st.SalesTerritoryRegion, od.CalendarYear, od.EnglishMonthName, od.MonthNumberOfYear, od.FullDateAlternateKey
with member measures.DateValue as CDATE([Date].[Date].CurrentMember.MEMBER_CAPTION) member measures.DateName as [Date].[Date].CurrentMember.Name member measures.MonthName as [Date].[Month of Year].CurrentMember.Name member measures.CategoryName as [Product].[Category].CurrentMember.Name member measures.CountryName as [Sales Territory].[Sales Territory Country].CurrentMember.Name select { measures.DateValue, measures.DateName, measures.MonthName, measures.CategoryName, measures.CountryName, [Measures].[Reseller Sales Amount], [Measures].[Reseller Gross Profit] } on Columns, ( [Date].[Date].[Date].Members, [Date].[Month of Year].[Month of Year].Members, [Product].[Category].[Category].Members, [Sales Territory].[Sales Territory Country].[Sales Territory Country].Members ) on Rows from [Adventure Works] where {[Date].[Calendar Year].&[2012], [Date].[Calendar Year].&[2013]}