SSAS - контекстные SQL запросы к реляционным источникам

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

Предположим, Вы хотите быстро предоставить своим бизнес-пользователям возможность отправлять предопределенные запросы к оперативным источникам данных прямо из Вашего OLAP-куба, используя контекстные значения текущей ячейки в качестве входных параметров параметизированных запросов (например, для текущего клиента из CRM системы получить активности/контакты с ним за последние 4 часа текущего дня).


Прежде всего в Microsoft Visual Stududio пишем и компилируем ddl-ку SQLQuery, исходный код которой кратко (без обработки исключений) приведен ниже:

 using System; using System.Data; using System.Data.OleDb; namespace ASSP { public class SQLQuery { public static DataTable ExecuteSQL(string connectionString, string sql) { OleDbConnection conn = new OleDbConnection(connectionString); DataTable dt = new DataTable("Rslt"); OleDbDataAdapter da = new OleDbDataAdapter(sql, conn); da.Fill(dt); return dt; } } } 

Затем подключаем данную сборку к SSAS проекту.
В проекте SSAS создаем новое действие (Action) как показано на рисунке ниже:




В одной из предыдущих статей говорилось о разграничении прав доступа к OLAP измерениям с использованием таблиц метаданных, хранящихся и ведомых в реляционной базе данных, и внешней .Net функции. Так вот, в той же базе данных можно создать ещё одну таблицу для хранения прав доступа OLAP-пользователей к параметизированным запросам RDBMS, а в сборку OLAP_ACCESS добавить функцию CheckPermission_SQLQuery. Тогда в разделе Condition можно будет прописать следующие условие:

IIF(OLAP_ACCESS.CheckPermission_SQLQuery(USERNAME(), "SQLQueryCodeName"), "True", "False")


Возможно (в зависимости от информационного ландшафта) пойти еще дальше: переработать таблицы метаданных и CLR процедуру таким образом, что в Action expression качестве параметров потребуется передавать лишь кодовое наименование запроса, переменную (динамическую) часть запроса / параметры процедуры / параметры функции, USERNAME(), а строки соединения к OLTP-источникам, постоянная часть запроса / процедуры / функции, права доступа будут храниться в метаданных реляционной базы данных.


Особенность действий (Actions) в том, что их можно добавлять в проект и разворачивать (deploy) на действующем сервере SSAS, и это не приведет к необходимости процессить куб.


Энергия идеи   dvbi.ru                    Последнее изменение: 2021-12-12 22:44:06Z         Возрастная аудитория: 14-70         Комментариев:  0
Теги:  DLL для SSAS
Связанные статьи:

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


  Комментарии



Следующая статья:    Разграничение доступа к элементам измерений и мерам
Предыдущая статья:  Профилирование данных - необходимый шаг к построению хранилищ данных
К списку статей