Multidimensional Expressions MDX Microsoft SQL Server OLAP Services



![Multi. Dimensional EXpressions DDL und DML für multidimensionale Daten [ Definieren, Ändern und Abfragen] Multi. Dimensional EXpressions DDL und DML für multidimensionale Daten [ Definieren, Ändern und Abfragen]](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-4.jpg)




![Beispiel [alle Messwerte der Städte in „CA“ und „WA“] n n „MEMBERS“ = alle Beispiel [alle Messwerte der Städte in „CA“ und „WA“] n n „MEMBERS“ = alle](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-9.jpg)
![Beispiel [alle Messwerte der Geschäfte in „CA“] n „DESCENDANTS“: DESCENDANTS (member, level[, flag]) „drill Beispiel [alle Messwerte der Geschäfte in „CA“] n „DESCENDANTS“: DESCENDANTS (member, level[, flag]) „drill](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-10.jpg)
![Beispiel - Spezifizierung der Messwerte [„Sales Average“ für alle Geschäftstypen in allen Staaten] n Beispiel - Spezifizierung der Messwerte [„Sales Average“ für alle Geschäftstypen in allen Staaten] n](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-11.jpg)











- Slides: 22

Multidimensional Expressions (MDX) Microsoft® SQL Server™ OLAP Services

Einleitung Was ist MDX? n Microsoft® Terminologie im OLAP Bereich n MDX – Basisabfragen Beispiele am „Food. Mart Sales Cube“ n MDX – DDL- und DML-Konstrukte n Fazit n 27. Januar 2000 Rolf Eichenberger 2

Multi. Dimensional EXpressions Ist SQL für OLAP genügend? ü JA. . . aber. . . nicht bequem und nicht schnell genug! [Übung: MDX-Beispiele in SQL umschreiben] ü NEIN was gibt es besseres? Microsoft® entwickelte MDX 27. Januar 2000 Rolf Eichenberger 3
![Multi Dimensional EXpressions DDL und DML für multidimensionale Daten Definieren Ändern und Abfragen Multi. Dimensional EXpressions DDL und DML für multidimensionale Daten [ Definieren, Ändern und Abfragen]](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-4.jpg)
Multi. Dimensional EXpressions DDL und DML für multidimensionale Daten [ Definieren, Ändern und Abfragen] n Standard im OLAP Bereich? n ü OLAP Systeme mit integrierter „OLE DB for OLAP“ Schnittstelle sind in der Lage „MDX“ zu verarbeiten. ü „OLE DB for OLAP“ und „MDX“ nicht-proprietäre Systemkonzepte ü Hersteller, die bereits heute diesem Konzept folgen: BAAN, Business Objects, Cognos, MIS AG, SAS Institute, . . . [ http: //www. microsoft. com/data/oledb/olap/indsupp. htm] 27. Januar 2000 Rolf Eichenberger 4

Konzepte - Microsoft® Terminologie n „Cubes“ • Grundkonzept in OLAP • multidimensionale Strukturen [maximal 64 Dimensionen] n „Dimensions“ • Beschreibung der Kategorien in (multiplen) Hierarchiestufen • „private“ oder „shared“ n „Measures“ • ist eine spezielle „Dimension“ • Werte für die Analyse 27. Januar 2000 Rolf Eichenberger 5

MDX – Basisabfragen n Achsen_Spezifizierung = Selektieren der „Members“ für die entsprechende Achse • ON COLUMNS ¦ ROWS ¦ PAGES ¦ CHAPTERS ¦ SECTIONS AXIS(0). . . AXIS(63) 27. Januar 2000 Rolf Eichenberger 6

„Food. Mart Sales Cube“ – „Dimensions“ 27. Januar 2000 Rolf Eichenberger 7

„Food. Mart Sales Cube“ – „Measures“ 27. Januar 2000 Rolf Eichenberger 8
![Beispiel alle Messwerte der Städte in CA und WA n n MEMBERS alle Beispiel [alle Messwerte der Städte in „CA“ und „WA“] n n „MEMBERS“ = alle](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-9.jpg)
Beispiel [alle Messwerte der Städte in „CA“ und „WA“] n n „MEMBERS“ = alle Elemente der „Dimension“ „CHILDREN“. . . mit der entsprechenden Bedeutung [Store]. [Store State]. [WA] ist kein „fully qualified name“ (nicht alle Stufen der Hierarchie) „unique name“ WHERE Slicer-Spezifizierung weggelassen = Filterung bezüglich des Standardelements 27. Januar 2000 Rolf Eichenberger 9
![Beispiel alle Messwerte der Geschäfte in CA n DESCENDANTS DESCENDANTS member level flag drill Beispiel [alle Messwerte der Geschäfte in „CA“] n „DESCENDANTS“: DESCENDANTS (member, level[, flag]) „drill](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-10.jpg)
Beispiel [alle Messwerte der Geschäfte in „CA“] n „DESCENDANTS“: DESCENDANTS (member, level[, flag]) „drill down“ zu einer tieferen Stufe in der Hierarchie § flag : : = [SELF] ¦ BEFORE ¦ AFTER ¦ BEFORE_AND_AFTER 27. Januar 2000 Rolf Eichenberger 10
![Beispiel Spezifizierung der Messwerte Sales Average für alle Geschäftstypen in allen Staaten n Beispiel - Spezifizierung der Messwerte [„Sales Average“ für alle Geschäftstypen in allen Staaten] n](https://slidetodoc.com/presentation_image_h/004b0520499bb2ad62ea0983a2ea2e84/image-11.jpg)
Beispiel - Spezifizierung der Messwerte [„Sales Average“ für alle Geschäftstypen in allen Staaten] n n Slicer_Spezifizierung = Selektieren des entsprechenden „Slice“ des „Cube“. . . weiteres Beispiel: WHERE (Measures. [Sales Average], [Time]. [Year]. [1997]) (entspricht einer AND-Verknüpfung) 27. Januar 2000 Rolf Eichenberger 11

MDX – DDL- und DML-Konstrukte „eine mächtige Abfragesprache“ n n n n „Calculated Members“ und „Named Sets“ Hierarchisches Navigieren Zeitserien „Tuples“ und „CROSSJOIN“ Filtern und Sortieren „Top“ und „Bottom“ Analysen Numerische und bedingte Abfragen 27. Januar 2000 Rolf Eichenberger 12

„Calculated Members“ und „Named Sets“ n „Calculated Members“ = mit MDX berechnete Elemente WITH MEMBER parent. name AS 'expression' § WITH MEMBER Measures. Profit. Percent AS '(Measures. [Store Sales] – Measures. [Store Cost]) / (Measures. [Store Cost])', FORMAT_STRING = '#. 00%' SELECT. . . FORMAT_STRING = Anzeigeformat n „Named Sets“ = mit MDX berechnete Sammlungen WITH SET set. name AS 'expression' 27. Januar 2000 Rolf Eichenberger 13

Hierarchisches Navigieren 1. PREVMEMBER | CURRENTMEMBER | NEXTMEMBER | PARENT | FIRSTCHILD | LASTCHILD 1. WITH MEMBER Measures. Percent. Sale AS '([Product]. CURRENTMEMBER, Measures. [Unit Sales]) / ([Product]. CURRENTMEMBER. PARENT, Measures. [Unit Sales])', FORMAT_STRING = '#. 00%' 2. SELECT. . . 2. LEAD(-1) | LEAD(0) | LEAD(1) |. . . LAG(1) | LAG(0) | LAG(-1) |. . . 1. MEMBER. LEAD(number) 27. Januar 2000 Rolf Eichenberger 14

Zeitserien n PARALLELPERIOD = Element an gleicher Stelle in vorheriger Periode (bspw. gleiches Quartal im vorherigen Jahr) n OPENINGPERIOD = Element an erster Stelle in der Periode (bspw. erstes Quartal im Jahr) n CLOSINGPERIOD = Element an letzter Stelle in der Periode (bspw. letztes Quartal im Jahr) n PERIODSTODATE = alle Elemente bis an eine spezifierte Stelle (bspw. alle Quartale bis heute) n YTD | QTD | MTD | WTD 27. Januar 2000 Rolf Eichenberger 15

„Tuples“ und „CROSSJOIN“ n „Tuples“ = (in Klammern) kombinierte Elemente verschiedener „Dimensions“ Darstellung in der gleichen Achse (bspw. in einem 2 D-Diagramm) 1. (member_of_dim_1, member_of_dim_2, . . . ) n „CROSSJOIN“ = Kreuzprodukt zweier Elementmengen 1. CROSSJOIN([Customers]. [City]. MEMBERS, [Time]. [Quarter]. MEMBERS) 27. Januar 2000 Rolf Eichenberger 16

Filtern und Sortieren n Filtern „Slicing“ Selektieren der Elemente in einer Achse NON EMPTY | FILTER(set, search_condition) § FILTER({[Store]. [Store City]. MEMBERS}, (Measures. [Unit Sales], [Time]. [1997])>25000) n Sortieren ORDER(set, expression[, ASC | DESC |. . . ]) 27. Januar 2000 Rolf Eichenberger 17

„Top“ und „Bottom“ Analysen n HEAD = die ersten n Elemente in einem „Set“ TAIL = die letzten n Elemente in einem „Set“ TOPCOUNT | TOPPERCENT | TOPSUM = die n „besten“ Elemente in einem „Set“ n BOTTOMCOUNT | BOTTOMPERCENT | BOTTOMSUM = die n „schlechtesten“ Elemente in einem „Set“ 27. Januar 2000 Rolf Eichenberger 18

Numerische und bedingte Abfragen n SUM AVG IIF | | = COUNT MEDIAN | MAX | MIN | VAR | STDDEV Immediate IF . . . weitere MDX-Konstrukte sind in der abgegebenen Liste zu finden! 27. Januar 2000 Rolf Eichenberger 19

Fazit MDX ist für „IT-Entwickler“ ein sehr angenehmes und leistungsfähiges Werkzeug. n MDX ist für „IT-Anwender“ hingegen kompliziert und schwierig erlernbar. Absicht dieser Sprache ist die Einbettung in Anwendungen, die dem „Business-Entscheider“ vordefinierte Analysen zur Verfügung stellen! n 27. Januar 2000 Rolf Eichenberger 20

Literaturempfehlungen n Brosius, Gerhard. Microsoft OLAP Services: Multidimensionale Datenverwaltung im Microsoft SQL Server 7. Addison-Wesley-Longman, Bonn 1999. n Nolan, Carl. Introduction to Multidimensional Expressions (MDX). Microsoft Corporation, 1999. http: //msdn. microsoft. com/library/techart/intromdx. htm 27. Januar 2000 Rolf Eichenberger 21

Besten Dank und viel Vergnügen beim Suchen der Schätze, die in den „Cubes“ verborgen sind! 27. Januar 2000 Rolf Eichenberger 22