Debuggen des MDX-Scripts

9. November 2012
Eine häufig auftretende Aufgabenstellung beim Designen von SSAS-Cubes ist neben den Calculated Measures das sog. Scoping, also das gezielte Überschreiben von Zellwerten eines Cubes oder Cubeausschnitts, meist in einem fachlichen Kontext. Wie mittels des MDX Debuggers die Wirksamkeit und Korrektheit der Scopes überprüft werden kann, soll dieser kurze Artikel zeigen.
Innerhalb des MDX Skripts kann es mit zunehmenden fachlichen Anforderungen schon einmal unübersichtlich werden. Wer #Regions sucht, sucht leider vergebens, aber das nur am Rande. Mit Hilfe des Einzelschrittmodus kann man einigermaßen gut prüfen, welche Auswirkungen die jeweiligen Scoping-Anweisungen haben. Es gibt auch noch einen anderen Kniff, dazu aber später.
Zunächst navigiert man zur Scope-Anweisung im MDX Skript, die getestet werden soll, setzt einen Breakpoint (F9) und startet den Debug-Modus.
01_StartDebugging
Während des Debuggings können bis zu 4 MDX-Statements deklariert werden.
02_DeclareMDX
Für jedes einzelne MDX-Resultset kann man dann sehen, wie sich das formulierte Scope auswirkt. In diesem Beispiel wird der Betrag des Measures “Sales Amount Quota” für jedes Quartal des Fiskaljahres 2008 um 35% erhöht und das Ergebnis den entsprechenden Quartalen des Fiskaljahres 2009 zugeordnet.
Die betroffenen Zellen werden standardmäßig gelb hervorgehoben (deaktivierbar im Kontextmenü), sodass BI Entwickler diese sowohl bei kleinen als auch bei größeren Resultsets schnell erkennen können.
03_Scoping
Für das nächste Scoping wird das 2. MDX mit anderem Kontext genutzt. Die Quartalswerte des Fiskaljahres 2006 werden linear auf die darunterliegenden Monate verteilt.
04_Scoping2
Zusätzlich kann (wie auch im Cube Browser) der Security Context gewechselt und die im Cube definierten Rollen getestet werden.
Wie anfangs erwähnt kann man das Scoping auch noch mit einer anderen Methode testen, indem direkt hinter der Scope-Anweisung ein Formatierungsbefehl folgt, der die Änderungen erkennbar macht.
In diesem Beispiel wurde der Scope-Befehl um die Back_Color-Property ergänzt:

Scope 

( 

[Date].[Fiscal Year].&[2009],

[Date].[Fiscal].[Fiscal Quarter].Members,

[Measures].[Sales Amount Quota]

);    


This = ParallelPeriod                             

( 

[Date].[Fiscal].[Fiscal Year], 1,

[Date].[Fiscal].CurrentMember 

) * 1.35; 


Back_Color(This) = RGB(0,255,0);

Schickt man nun im Management Studio ein simples MDX ab, kann man die Änderungen, die das Scope-Kommando vornimmt, sehr gut nachvollziehen. Wichtig hierbei ist die Angabe der Cell-Properties BACK_COLOR und FORMATTED_VALUE.
05_ScopingBackgroundColor
Fazit:
Das nicht allzu bekannte MDX-Script-Debugging bietet gute Möglichkeiten Berechnungen innerhalb von SSAS-Cubes zu testen. Trotzdem vermisst man Überwachungsfunktionen oder hilfreiche Performance-Indikatoren, die man jedoch zumindest teilweise mit den Query Processing Events im SQL Profiler tracen kann.
Insofern sind Debugging-Möglichkeiten für MDX-Scripts vorhanden, jedoch im Vergleich zu denen bei der .NET-Entwicklung recht bescheiden ausgeprägt.