Datazen — удобная панель мониторинга с собственными приложениями для всех основных мобильных платформ. Вскоре после объявления Microsoft о приобретении этой мобильной панели мониторинга мною была опубликована статья «Начинаем работать с Datazen» (см. «Windows IT Pro/RE» № 8 за 2015 год). В статье, в частности, упоминались недостатки панели, проявлявшиеся при использовании служб аналитики Analysis Services в качестве источника данных. При написании запросов многомерных выражений MDX приходилось создавать вычисляемые элементы для всех компонентов строк и размещать их на оси columns (столбцы). C выпуском обновления в августе 2015 года запросы многомерных выражений MDX стали работать лучше, поэтому в применении обходных путей больше необходимости нет. В этой статье речь пойдет о панелях мониторинга с функцией детализации, использующих запросы MDX и навигацию для передачи параметров запросу MDX. Предлагаемый материал носит скорее обзорный характер, основное внимание уделяется запросам, параметрам и командам детализации. В следующей статье мы перейдем к созданию рабочего отчета с помощью служб Reporting Services.

В качестве источника данных я использовал базу данных текущей работы авиалиний бюро транспортной статистики. Любой, кто в течение последних пяти лет пользовался внутренними рейсами США, может быть уверен, что его рейс есть в этой базе данных среди примерно 35 млн других рейсов, связывающих всевозможные населенные пункты страны. Такая база данных не самый простой вариант для загрузки и применения в демонстрационных целях, но мне нравится ее использовать как пример реальных, понятных каждому данных о качестве работы.

Я начну со статистики задержек рейсов AirDelaysTabular в качестве источника данных для моей базы данных SSAS. На эти данные будет опираться табличный экземпляр SSAS на сервере разработки SQL Server 2014. Первая панель мониторинга на моем iPad отображает статистику задержек рейсов для выбранных аэропортов вылета и прилета. Например, за этот год было выполнено 8983 рейса из аэропорта Джона Кеннеди (Нью-Йорк) в аэропорт Лос-Анджелеса, а средняя задержка вылета составила девять минут. Согласно данным на панели мониторинга, самая длинная средняя задержка вылета была у авиакомпании Delta, а самая короткая — у JetBlue (см. экран 1).

 

Панель мониторинга
Экран 1. Панель мониторинга

Числовой индикатор Avg Departure Delay (средняя задержка вылета) имеет значок детализации в правом верхнем углу, указывающий на возможность перехода на панель, содержащую более подробные сведения. На второй панели (см. экран 2) представлены отдельные категории, из которых складывается задержка вылета, в частности время выруливания, задержки из-за погодных условий и задержки в связи с усиленными мерами безопасности. С помощью панели временной навигации диапазон данных можно сузить. Реакция панели мониторинга мгновенна и интуитивно понятна. Поставщиками данных для первой панели мониторинга служат запросы представления данных SolutionTwo. О подготовке представлений данных для панели мониторинга Datazen говорилось в статье «Начинаем работать с Datazen». Отдельный запрос я использую для составления списков средних и крупных узловых аэропортов в правильном порядке. Другой запрос поставляет данные в основную часть панели мониторинга, и эти данные фильтруются по двум спискам выбранных аэропортов.

 

Данные по отдельным категориям
Экран 2. Данные по отдельным категориям

Я составляю запросы в SQL Server Management Studio и сохраняю их в файл сценария (см. листинг). Каждый запрос начинается с имени, снабженного коротким комментарием. Каждый запрос с именем я вставляю в поле Data View Query (запрос представления данных) нового представления на панели управления Datazen. После этого я копирую его имя и вставляю в поле Data View Name (имя представления данных) на странице конструктора представления данных Data View (см. экран 3).

 

Составление запроса в SQL Server Management Studio
Экран 3. Составление запроса в SQL Server Management Studio

В приложении Datazen Publisher на компьютере Windows 10 я создаю новую панель мониторинга и импортирую оба запроса. Так как ни один из запросов не содержит параметров, я использую функцию кэширования Datazen для обновления данных с регулярными интервалами. Кстати, в Windows 10 приложение Datazen Publisher, используемое для проектирования панелей мониторинга, запускается в окне изменяемого размера (в Windows 8 и 8.1 оно всегда работает в полноэкранном режиме). В ближайшем будущем должен выйти совместимый с Windows 7 вариант конструктора, который уже некоторое время находится на стадии предварительной версии.

Листинг. Пример запросов
-- Med & Large Hub Airports
with member measures.AirportCode as [Origin].[Airport].CurrentMember.Name
select
{measures.AirportCode} on columns,
(
[Origin].[Airport].[Airport].Members,
[Origin].[CityName].[CityName].Members,
[Origin].[State].[State].Members
)
on rows
from [Model]
where
{[Origin].[Hub Size].&[Medium], [Origin].[Hub Size].&[Large]}

-- Perf Origin Dest 2015
select
{
[Measures].[Avg Dep Delay],
[Measures].[Avg Dep Delay Previous Year],
[Measures].[Late Aircraft Delay],
[Measures].[NAS Delay],
[Measures].[Security Delay],
[Measures].[Taxi Out Time],
[Measures].[Weather Delay],
[Measures].[Flight Count]
} on columns,
non empty
(
[Origin].[Airport].[Airport].Members,
[Destination].[Airport].[Airport].Members,
[Carrier].[CarrierName].[CarrierName].Members
) on rows
from [Model]
where
[Date].[Year].&[2015];