Пожалуй, в каждом языке программирования, среде разработки есть возможность создания гибких параметризованных формул, макроподстановочных выражений. SQL Server Analysis Services (SSAS) не является исключением. Несмотря на собственные возможности OLAP клиентских приложений, часто требуется дополнительная функциональность. Рассмотрим пример реализации параметризованных вычисяемых аналитических показателей.
Прежде всего сформируем таблицу - список мер куба, в которую для дальнейшего удобства использования добавим такие поля как: бизнес-классификация меры, порядок представления (сортировки), формат представления, переводы, а также описательные характеристики.
На основе этой таблицы создадим измерение "Список показателей", а в нём - пользовательскую иерархию "Классификация показателей"
Также создадим измерение «_Числовые параметры» - последовательность чисел 1, 2, 3, 4, 5, 10, 15, 20, ... 50 и измерения «_Начало периода», «_Окончание периода» - список дат.
Все эти измерения будут иметь вспомогательный характер, и не будут привязаны ни к одной группе мер куба. Наименования служебных измерений будут начинаться с префикса "_", чтобы подчеркнуть их особое предназначение и хоть как-то сгруппировать в клиентских OLAP-приложениях.
Вспомогательные измерения подлежат размещению в области фильтров сводной таблицы, а выбранные элементы служат параметрами для вышеприведенных вычисляемых показателей:
- - выбранный элемент (и только один элемент) измерения «_Список показателей» как бы подставляется вместо многоточия в названии вычисляемой меры или динамического набора, т.е. указывает к какому показателю применить заданную формулу вычисления ;
- - выбранный элемент измерения «_Числовые параметры» (целое число) подставляется вместо символа "X" ;
- - выбранный элемент измерения «_Начало периода» определяет дату начала для вычисляемой меры [С даты нарастающий итог...]
Развернем проект на сервере OLAP, спроцессим куб, включим что-нибудь веселенькое от Magic Slim, подключимся к кубу из Excel 2010 и проверим, что всё работак так, как нам нужно.
«К месяцу назад относительное изменение...» (аналогично можно создать формулы «К неделе назад относительное изменение...», «К кварталу назад относительное изменение...», «К году назад относительное изменение...») - это вычисляемый показатель: разместив вспомогательное измерение «_Список показателей» в область фильтров, можно определить относительное изменение значение показателя, определяемого выбранным элементом в измерении «_Список показателей», по отношению к значению этого же показателя месяц (неделю / квартал / год) назад:
«С даты нарастающий итог...» - вычисляемый показатель: разместив вспомогательные измерения «_Список показателей», «_Начало периода» в область фильтров, рассчитаем нарастающий итог с указанной отчетной даты по показателю, определяемого выбранным элементом в измерении «_Список показателей», например, с 16.04.2010г. нарастающий итог количества выходов в просрочку основного долга по кредиту:
Наряду с использованием любых обычных физических мер можно вытянуть максимальные / минимальные значения среди дочерних элементов, непосредственно не раскрывая / не спускаясь к уровню ниже:
Подобных параметризованных формул можно создать сколь фантазии хватит (особенно, если еще изучить рецепты универсальных формул от Tomislav Piasevoli):
- - На контракт среднее...
- - На отчетный день среднее...
- - Универсальное среднее...
- - Волатильность...
- - Доля %...
- - Элементов уровня медиана...
- - Дочерних элементов медиана...
- - Ранг...
- - По месяцам простое скользящее среднее...
- - По кварталам простое скользящее среднее...
- и так далее.
И все эти вычисляемые меры будут работать в любом OLAP клиентском приложении. Главное, не забываем документировать свои разработанные формулы.