Zugriff auf SSAS via DynamicMDX

Hintergrund der Umsetzung

Hintergrund für die Umsetzung von Abfragen via Data-Provider in Kombination von Stored Procedures und Functions war die fehlnde Möglichkeit komplexere Abfragen (MDX) aus Cognos (Report Studio) heraus an die SSAS anzusenden.

Daraus hat sich die Idee entwickelt, die entsprechenden MDX-Anfragen in optimierter Ausprägung direkt aus dem SQL Server heraus über dafür speziell angelegte Stored Procedures über einen Data-Provider abzusetzen und die von den SSAS zurückgelieferte Ergebnismenge in geeigneter Form zu verarbeiten und danach für die Darstellung in einem Frontend-System (z.B. Cognos Report Studio) bereitzustellen.

Grundelement von DynamicMDX

Die Grundelement sind folgende:

USE
AdventureWorksDW2008R2
GO
EXEC
sp_addlinkedserver
@server='Test',
@srvproduct='',
@provider='MSOLAP',
@datasrc='localhost',
@catalog='Adventure Works DW 2008R2'
Declare @MDXExpression as Varchar(MAX)
Select @MDXExpression =
'
SELECT
NON EMPTY
{
[Measures].[Sales Amount]
,[Measures].[Standard Product Cost]
,[Measures].[Tax Amount]
,[Measures].[Total Product Cost]
} ON 0,
NON EMPTY
{
[Sales Channel].[Sales Channel].[Sales Channel]
} ON 1
FROM
[Adventure Works]
';
Exec ('SELECT * INTO ##TestTemp FROM OpenQuery(TestTest1,''' + @MDXExpression + ''')')
SELECT
CONVERT(varchar,t."[Sales Channel].[Sales Channel].[Sales Channel].[MEMBER_CAPTION]") AS [Date],
(CONVERT(nvarchar,t."[Measures].[Sales Amount]")) AS [Sales Amount],
(CONVERT(nvarchar,t."[Measures].[Standard Product Cost]")) AS [Standard Product Cost],
(CONVERT(nvarchar,t."[Measures].[Tax Amount]")) AS [Tax Amount],
(CONVERT(nvarchar,t."[Measures].[Total Product Cost]")) AS [Total Product Cost]
from
##TestTemp t
--DROP Table ##TestTemp
Query Execution-
1- So above query first creates liked server with named as ‘Test’.
2- After that MDX query executed on linked server where we have kept the MDX query in MDXExpression variable.
3- Using OpenQuery function data gets dump in to ##TestTemp table.
4- Finally we get the data from ##TestTemp table.

Quelle: http://www.sqlservergeeks.com/blogs/suhas/personal/545/sql-mdx-in-one-apartment-hybrid-query


Vorgehen bei Rollout von DynamicMDX in Verbindung mit IBM-Cogos

Konfiguration von Cognos

    1. Konfiguration
      1. Datenquellenverbindungen
        1. Datenquelle „RCS_Relational“ anlegen
        2. Eigenschaften für Verbindung einstellen:
Typ:
-> Microsoft SQL-Server (SQL 2008 Native Client)
Verbindungszeichenkette:
-> ^User ID:^?Password:;LOCAL;OL;DBInfo_Type=MS;Provider=SQLNCLI10;User ID=%s;Password=%s;Data Source=SERVER123;Provider_String=Initial Catalog=DATABASE123;@COLSEQ=
        1. Datenbank-Nutzer “RCS_Relational”anlegen
          1. Anmeldung bearbeiten
        1. Datenquelle „RCS_Multidimensional“ anlegen
        2. Eigenschaften für Verbindung einstellen:
Typ:
-> Microsoft Analysis Services 2005
Verbindungszeichenkette:
-> ^User ID:^?Password:;LOCAL;YK;SERVER=SERVER123;UID=%s;PWD=%s;LCID=de
        1. Datenbank-Nutzer “RCS_Multidimensional ”anlegen
          1. Anmeldung bearbeiten
          2. DB-User mit ausreichend Berechtigungen (Zugriff auf Datenbank SSAS-Datenwürfel) verwenden

Konfiguration von SQL Server

    1. Linked Server anlegen/anpassen
    1. Datenbank-User konfigurieren
      1. Login setzen
      2. Datenbank-Mapping setzen
      3. Für Datenbank „RCS_DWH“ explizit Rechte setzen. (Wichtig, sonst kann Framework-Manager Stored Procedures nicht sehen und ausführen)

Rollout DDLs

  1. CREATE Stored Procedures, Funcktions (siehe Anhang)

Sicherung von Framework-Manager-Projekt auf Zielsystem

  1. Archivordner YYYYMMYY_Archiv anlegen und bisherigen Stand in diesem speichern

Rollout von aktuellen Stand von Framework-Manager (FM) – Projekt aus Repository

Öffnen von FM-Projekt und Test von Connections

  1. Connection prüfen
  2. Änderungen/Erweiterung kontrollieren
  3. Ggf. Stored Procedure neu einfügen
    1. Prompts für Filter definieren
#prompt('Von')#
#prompt('Bis')#
#prompt('Zeitraumtyp')#
#promptmany('pSortiment_param')#
#promptmany('pLieferant')#
#promptmany('pMarke')#
#promptmany('pSaisonjahr')#
#promptmany('pArtikeltyp')#

FM-Packages neu publizieren

Prüfung von publizierten FM-Packages in Cognos Connectios

  1. Test über Query Studio
  2. Test über Report Studio
    1. Test 1 für neuen Bericht
    2. Test 2 für vorhandenen Bericht und Kontrolle auf korrekte Aktualisierung des Berichtes (wird automatisch bei Änderung des FM-Packages durchgeführt)
Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s