В сводной таблице 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 клиенте, поддерживающем действия, по щелчку правой кнопки мыши на ячейках вышеперечисленных мер
в контекстном меню будет показываться пункт "Детализация...", выбор которого обеспечит выполнение операции детализации.