Действия и полезные CLR-процедуры для SSAS

OLAP, SSAS  Действия Категория:  OLAP, SSAS
Опубликовал:         12.06.2011               print

Если Вы работаете с SQL Server Analysis Services (SSAS), то должно быть Вы знакомы с Open source проектом Analysis Services Stored Procedure Project (ASSP). Это библиотека расширенных хранимых процедур, базирующихся на использовании серверной объектной модели SSAS. Это хороший образец для разработки собственных внешних хранимых процедур. В библиотеке ASSP немало полезных функций, часть из которых покажу как подключить к своему OLAP-проекту.


Проследуем на web-страницу проекта и скачаем его. Открываем проект в Microsoft Visual Studio, компилируем, а полученный ddl-файл укладываем где-нибудь рядом с папкой проекта OLAP.


Открываем среду SQL Server Management Studio (SSMS), подключаемся к серверу SSAS с полномочиями администратора, в контекстном меню (щелчок правой кнопкой мыши на узле сервера) выбираем пункт Facets (Аспекты) и проверяем / устанавливаем свойство UserDefinedFunctionsEnabled=True.


В среде Business Intelligence Management Studio (BIDS) открываем OLAP-проект, правой кнопкой мыши жмем на узел Assemblies и подключаем скомпилированную сборку, не забывая установить соответствующие свойства:




Сборку можно подключить прямо к серверу SSAS, а затем, открыв в SSMS окно нового MDX-запроса, удостовериться, что внешние процедуры работают:

CALL ASSP.Discover("DISCOVER_CONNECTIONS") ;
CALL ASSP.discoverXmlMetaData("\Database\Cubes\Cube\MeasureGroups\MeasureGroup\Partitions\Partition") ;

Хорошо бы еще, чтобы подобные функции были доступны с OLAP-клиента, причем некоторые из них только администратору системы.


Создадим скрытое, непривязанное ни к одной размерной группе измерение "_Пользователи OLAP". Такие измерения я называю вспомогательными. В этом измерении ключевой атрибут сделаем неагрегируемым и добавим свойства атрибута "Роль пользователя OLAP" (возможные значения: администратор, начальник, рядовой, ...), "Состояние пользователя OLAP" (возможные значения: активный, заблокирован, уволен). Также, можно добавить другие атрибуты, для удобства создать пользовательские иерархии, наполнить измерение данными из Active Directory - исходя из Ваших реалий:




Переключаемся на вкладку "Calculations" в режиме "Script View" и создаем скрытую вычисляемую меру:

ALTER CUBE CURRENTCUBE UPDATE DIMENSION [_Пользователи OLAP], DEFAULT_MEMBER = 
StrToMember('[_Пользователи OLAP].[Пользователь OLAP].[' + UserName() + ']');

-- или устанавливаем явно:
-- ALTER CUBE CURRENTCUBE UPDATE DIMENSION [_Пользователи OLAP], DEFAULT_MEMBER = 
--    StrToMember('[_Пользователи OLAP].[Пользователь OLAP].[конкретныйПользователь]');


CREATE MEMBER CURRENTCUBE.[MEASURES].[Тип пользователя сессии]
AS
[_Пользователи OLAP].[Пользователь OLAP].Properties("Состояние пользователя OLAP", typed) + "_" +
  [_Пользователи OLAP].[Пользователь OLAP].Properties("Роль пользователя OLAP", typed)
,ASSOCIATED_MEASURE_GROUP = 'Показатели'
,DISPLAY_FOLDER = 'Системные'
,VISIBLE = 0 ;

Переключаемся на вкладку "Acttions" и создаем возвращающие набор (Rowset) действия:






которые, благодаря условию:
           IIF([MEASURES].[Тип пользователя сессии]='активный_администратор', "True", "False")
будут доступны только администратору системы.


Осталось только развернуть проект на сервере, подключиться клиентским OLAP-приложением, поддерживающим Actions (такие как, MS Excel, Office Web Components (OWC), ProClarity), и проверить работоспособность столь замечательных и полезных внешних процедур из проекта ASSP:





Надеюсь, Вам понравилось :)


Энергия идеи   dvbi.ru                    Последнее изменение: 2017-10-15 19:05:44Z         Возрастная аудитория: 14-70         Комментариев:  0
Теги:  DLL для SSAS MDX
Связанные статьи:

Пожалуйста, проголосуйте и ниже поставьте лайк:   rating
2 2 0


  Comments


Следующая статья:    Работа с web-службами в SQL Server Integration Services на примере сервисов ЦБ РФ
Предыдущая статья:  Витрина данных кредитного портфеля