В сводной таблице MS Excel (как и в некоторых других клиентских OLAP приложениях), подключенной к SQL Server Analysis Services (SSAS), при двойном щелчке на ячейке показателя возможно спуститься (продриллиться) к значениям уровня детализации (гранулярности), и, таким образом, посмотреть - из каких значений агрегировалось значение текущей ячейки. Однако, эта операция, называемая Drillthrough, доступна только для физических мер, но не для вычисляемых ячеек, формулы которых прописаны в MDX-скрипте куба. Это ограничение SSAS, и оно, как можно предположить, вызвано тем, что формулы вычисляемых мер могут быть весьма и весьма сложносоставными.
В своем блоге Моша Пасуманский приводит решение, позволяющее обойти данную проблему. Повторим решение и внесём небольшие дополнения.
В OLAP проекте создадим новое действие (Action) для целевого объекта "Все ячейки" (All cells) с типом "Rowset", поскольку данное действие будет возвращать набор строк. В поле ввода выражения (Action Expression) для интересуещей нас группы мер (в Вашем случае подставите свои наименования мер и атрибутов) пропишем инструкцию, как показано на рисунке ниже:
В выражении кастомизированного Drillthrough можно:
- * перечислить только требуемые атрибуты измерений, связанных с размерной группой;
- * атрибуты сгруппировать в желаемом порядке;
- * дать атрибутам читабельные заголовки (алиасы AS ...);
- * установить предельное количество возвращаемых записей.
В выражении действия используется внешняя процедура ASSP.CurrentCellAttributes(), определяющая контекст текущей вычисляемой ячейки. Скачаем ASSP проект. Открываем проект в Microsoft Visual Studio, убеждаемся, что все так, как показано на рисунке ниже, компилируем проект, а полученную ddl сборку подключаем к Analysis Services (см. статью "Действия и полезные CLR-процедуры для SSAS").
В условии инициализации (Condition) действия возможно указать критерии как для группы мер, для отдельной меры, так и для набора вычисляемых мер. Этот скрытый от пользователей набор необходимо определить в MDX-скрипте куба следующим образом:
----------------------------------------------------------------------------------------------- -- используется в Action для детализации (drillthrough) параметров кредитных контрактов в дату CREATE HIDDEN SET CURRENTCUBE.[Вычисляемые показатели контрактов в дату] AS ' { [MEASURES].[Общий остаток ОД] ,[MEASURES].[Сумма кредита] -- ............ и другие меры ,[MEASURES].[Общие платежи] } ' ; -----------------------------------------------------------------------------------------------
После того как опубликуем действие на сервере Analysis Services, в любом OLAP клиенте, поддерживающем действия, по щелчку правой кнопки мыши на ячейках вышеперечисленных мер в контекстном меню будет показываться пункт "Детализация...", выбор которого обеспечит выполнение операции детализации.