2011-01-07 8 views
1

Ich habe versucht, SSAS Cubes und MDX zu lernen. Bisher habe ich es geschafft, einen Würfel zu erstellen, der die richtigen Daten/Berechnungen zurückgibt, wenn er durch den Cube-Browser betrachtet wird.Hilfe zu verstehen OLAP MDX Query

Der Abfrage-Generator wurde verwendet, um eine Abfrage in Reporting Services zu erstellen, um den Cube abzufragen. Ich habe mir das generierte MDX angesehen und das Zeug herausgezogen, das die tatsächlichen Ergebnisse nicht zu verändern scheint. Die Abfrage sieht wie folgt aus:

SELECT NON EMPTY { [Measures].[AverageConnectedSeconds] } ON COLUMNS,  
NON EMPTY { ([Operator].[ACCESS DEF].[ACCESS DEF].ALLMEMBERS * [Calls].[Notification Time Bands].[Notification Time Bands].ALLMEMBERS) } ON ROWS  
FROM (SELECT (-{ [Calls].[Notification Time Bands].&[0] }) ON COLUMNS  
FROM (SELECT ({ [Calls].[Incoming YN].[N] }) ON COLUMNS  
FROM (SELECT (-{ [Calls].[Entity Type].&[6] }) ON COLUMNS 
FROM (SELECT (-{ [Calls].[Reason Text].&[Background Call] }) ON COLUMNS  
FROM (SELECT ({ STRTOMEMBER(@OperatorId) }) ON COLUMNS 
FROM [PNC5data]))))) 

Ich habe auf der Syntax lesen und ich THINK Ich verstehe, warum die Abfrage verschachtelt wählt tut. Bin ich richtig zu verstehen, dass die geschachtelten SELECT FROMs als eine WHERE-Klausel in SQL fungieren würde?

Wenn ja: Was ist die WHERE-Klausel in MDX verwendet und wann/warum sollte ich eine verwenden?

Wenn jemand mir eine Aufschlüsselung dessen geben kann, was tatsächlich in dieser Abfrage passiert, würde ich es wirklich schätzen! Oder wenn Sie in der Lage sind, mich zu einer Ressource zu leiten, die mein Verständnis von MDX fördert, wäre ich dankbar!

Danke,

James

Antwort

5

Verständnis WHERE-Klausel einfach. Sie werden in vielen Quellen sehen, dass sich Menschen über ihren irreführenden Namen beschweren. Der bessere Name ist Slicer. Mit einer where-Klausel können Sie ein Stück eines Würfels anstelle des gesamten Würfels abfragen (Sie haben natürlich eine gewisse Leistungssteigerung, wenn Sie ein Stück statt eines ganzen Würfels abfragen).

FROM-Klausel verwendete einen Würfel oderabzufragen eine andere MDX Abfrage d.h. Unterabfragen abzufragen. Unterabfragen sind in der Regel langsamer, aber auch leistungsfähiger. z.B. Wenn Sie eine Hierarchie als Slicer verwenden, können Sie sie nicht auf einer Achse verwenden, während Sie bei einer Unterabfrage z. Unterabfragen können die Struktur der Hierarchien ändern.

In der obigen Anweisung sehen Sie geschachtelte Unterabfragen. Wenn Sie eine MDX-Syntax kennen, ist es einfach, jede Unterabfrage zu unterbrechen und zu interpretieren oder sogar einige in den Slicer zu verschieben.

Ich bin relativ neu zu dem gesamten OLAP Thema auch. Die zwei Quellen, die ich benutzt habe, sind: icCube MDX reference (Ich bin kein Microsoft-Fan, icCube war eine gute, einfach zu bedienende Alternative) und Fast Track to MDX. Ich mag Fast Track besonders zu MDX, weil seine Erläuterung der wesentlichen MDX-Funktionen und die Terminologie (wie Satz, Tupel, Funktion usw.) einfach zu folgen ist, besonders wenn Sie Microsoft BI-Tools verwenden. Vielleicht möchten Sie auch einen Blick auf this post werfen.

+0

Auf jeden Fall sehr wichtig zu sagen, dass WHERE in SQL ist nicht das gleiche wie WHERE in MDX. –

0

Ich habe einen Link zu meiner MDX-Einführung vor und es wurde gut aufgenommen, aber es gibt viele andere gute Ressourcen in diesem Posting. the-best-mdx-references-on-the-net