Kapitel 9: Operationen auf dem Cube Multidimensional Expressions (MDX) Was ist MDX? MDX Queryinterface und API. Konzepte - Microsoft Terminologie

Ähnliche Dokumente
definiert Dimension und Position in Hierarchie Name des Calculated Members Aufbau des Calculated Members -Statements:

6.5 Workshop: Operationen auf dem Cube Multidimensional Expressions (MDX)

Kapitel 9: Operationen auf dem Cube Multidimensional Expressions (MDX) Was ist MDX? MDX Queryinterface und API. Konzepte - Microsoft Terminologie

Anfragesprachen für On-Line Analytical Processing (OLAP)

Data Warehousing. Ausführung von OLAP Operationen. Ulf Leser Wissensmanagement in der Bioinformatik

Summarization-based Aggregation

Anfragen an multidimensionale Daten

Business Intelligence & Reporting. Michael Cordes Holger Oehring Matthias Rein

Multidimensionale Modellierung

Kapitel 5: Vom relationalen zum multidimensionalen Datenmodell

Kapitel 5: Vom relationalen zum multidimensionalen Datenmodell

Analytic Views: Einsatzgebiete im Data Warehouse

Es geht also im die SQL Data Manipulation Language.

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Einleitung. ROLLUP, CUBE und GROUPING. Markus Jägle Art der Info Technische Background Info (April 2002)

HTW Dresden Fakultät Informatik/Mathematik Prof. Dr.-Ing. A. Toll. Handbuch MDX. Arbeitsmaterial zur Lehrveranstaltung Business Intelligence

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Fortgeschrittene OLAP Analysemodelle

SQL: Abfragen für einzelne Tabellen

Online Kurse Modulbeschreibungen

Abfragen (Queries, Subqueries)

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007

Kapitel 3: Indices und Sichten

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

SAP BO Web Intelligence auf SQL Server [A4] Üetliberg,

Datenbanksysteme Kapitel 5: SQL - Grundlagen

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Datenbanksysteme Kapitel 5: SQL Grundlagen Teil 1

Modellierung in SAP HANA Teil 2

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Schlüssel. Definition: Ein Schlüssel (key) einer Relation r(r) ist eine Til Teilmenge K von R, so dass für je zwei verschiedene Tupeln t 1

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Aggregatfunktionen in SQL

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

ACCESS SQL ACCESS SQL

Datenbank und Tabelle mit SQL erstellen

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

1 Vorstellung Kursbeispiel

Vorlesung Datenbankmanagementsysteme

Inhaltsverzeichnis. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN:

XML Datenbanken Quickstart für die Anfragesprachen XPath und XQuery

Vorlesung Datenbanken I Zwischenklausur

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

Kapitel 5: Vom relationalen zum multidimensionalen Datenmodell

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Operationen auf Relationen

DOAG HC ApEx Workshop. OPITZ CONSULTING GmbH 2009 Seite 1

Developing SQL Data Models MOC 20768

Webbasierte Informationssysteme

Data Cubes PG Wissensmangement Seminarphase

18. Hinweise zur schriftlichen Abiturprüfung 2021 im Fach Informatik

Berechnung von Kennzahlen mit der SQL Model Clause

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Themenblock: Erstellung eines Cube

Datenzugriffskomponente mit JPA 2.1

Datenbanken Unit 9: OLAP, OLTP, Data Warehouse Ranking Algorithmen

Dimensionen, Measures

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

Wiederholung VU Datenmodellierung

Zellenbasierende Berechnungen und Spreadsheets in Oracle 10g

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

mit konventionellen Datenbanksystemen konventionellen Datenbanksystemen

SQL: Weitere Funktionen

Übung Datenbanken in der Praxis. Anfragen an Datenbanken mit SQL

Erzeugung und Veränderung von Tabellen

Wiederholung VU Datenmodellierung

Strukturierte Spezifikation: Anreicherung um nichtrekursive und rekursive Definitionen

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Objektorientierte Datenbanken

Vorlesung Wissensentdeckung in Datenbanken

Datenbanken zur Entscheidungsunterstützung - Data Warehousing. Prof. Dr. T. Kudraß 1

Christian Kurze BI-Praktikum IBM WS 2008/09

Einführung relationale Datenbanken. Themenblock: Erstellung eines Cube. Schlüssel. Relationenmodell Relationenname Attribut. Problem.

Übersicht der wichtigsten MySQL-Befehle

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Query-Manager Kurzanleitung Inhalt. Query-Manager. Kurzanleitung

Datenbanken Grundlagen und Design

5.8 Bibliotheken für PostgreSQL

Anfragen gegen das DataWarehouse

Datenbanken. Heute dreht sich alles um SQL-Abfragen mit JOINS

KlassifikationsBrowser

Oracle Indexing Primer

Microsoft Access Abfragen: Informationen anzeigen und sortieren

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

SQL Data Manipulation Language (DML) und Query Language (QL)

Teil II: Architektur eines Data-Warehouse-Systems... 57

Transkript:

Kapitel 9: Operationen auf dem Cube Multidimensional Expressions (MDX) Was ist MDX? Microsoft Terminologie im OLAP Bereich MDX Basiskonstrukte MDX weiterführende Konstrukte Fazit Was ist MDX? Ist SQL für OLAP genügend? Nicht bequem genug, unterstützt nicht die multidimensionale Sicht. Bisher hieß es, ein wichtiges Ziel seien intuitive Mechanismen für die Datenanalyse. Wieso brauchen wir jetzt eine komplexe Querysprache? Nicht jede Sicht läßt sich zusammenklicken, wie wir sehen werden. Man möchte Anwender vielleicht nicht immer mit generischem Interface belasten, sondern das Arbeiten durch Einschränkung auf spezielle anwendungsspezifische Interaktionsmöglichkeiten erleichtern. MDX ist kurz für Multidimensional Expressions, DDL und DML für multidimensionale Daten ( Definieren, Ändern und Abfragen ), MDX Microsoft-Entwicklung, Andere Hersteller von DBMSen/Data Warehouses (Oracle, SAP) bieten vergleichbare Anfragesprachen. Data Warehousing und Mining: MDX. 1 Data Warehousing und Mining: MDX. 2 MDX Queryinterface und API Konzepte - Microsoft Terminologie Query-Interface, mit dem im folgenden gearbeitet wird, illustriert nur das Querying. Query-Interface illustriert nicht den Zugriff über die Programmierschnittstelle, das Definieren von Hilfsstrukturen und das Wiederverwenden von Definitionen. Cubes Grundkonzept in OLAP multidimensionale Strukturen [maximal 64 Dimensionen] Dimensions Menge von Attributen, die Dimension sein können; sie können nicht Measures sein, Selektion über diese Attribute ist möglich, genau wie beim Microsoft OLAP-Browser, Dimension ist hierarchisch aufgebaut, private oder shared ( shared Dimension wurde für mehrere Cubes definiert) Data Warehousing und Mining: MDX. 3 Data Warehousing und Mining: MDX. 4

Konzepte - Microsoft Terminologie Hierarchien in einer Dimension - Erläuterung Measures Menge von Attributen, die nur Measures sein können (bis auf Spezialfälle), Measure ist eine spezielle Dimension in der MDX- Vorstellungswelt, flache Hierarchie Members Knoten der Hierarchie einer Dimension, vorgegeben vs. calculated, Beispiel: Halbjahr. Typ-Perspektive: Store Store Country Store State Store City Instanzen-Perspektive: Canada USA Mexico...... CA WA......... Store Name Data Warehousing und Mining: MDX. 5 Data Warehousing und Mining: MDX. 6 Data Warehousing und Mining: MDX. 7 Data Warehousing und Mining: MDX. 8

Sonderrolle der Measures in MDX Illustration für unsere erste MDX-Query Im allgemeinen hat man Vektor von Measures: SALES TIME Year 1996 1997 Month Jan Feb Jan Feb CATEGORY Part City (Cost, Sale) PC Montreal (5,6) (5,7) (4,6) (4,8) Toronto (5,7) (5,8) (4,8) (4,9) Inkjet Montreal (7,8) (7,9) (6,9) (6,8) New York (6,9) (6,9) (5,8) (5,9) Location ( Store ) Location ( Store ) MDX behandelt Gesamtheit der möglichen Measures wie eine Dimension. CATEGORY Store Type Store Type Unit Sales Measure Sales Avg. Measure Cost Sale MEASURES TIME Data Warehousing und Mining: MDX. 9 Data Warehousing und Mining: MDX. 10 Beispiele, die Aufbau von MDX-Queries illustrieren Query, die Ausschnitt des Data Cubes mit _herkömmlichen_ Dimensionen definiert: SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS WHERE (Measures.[Sales Average]) Measures ist spezielle Dimension im MDX-Kontext. Erläuterungen zum Aufbau der Ausdrücke in der SELECT-Klausel (vor ON COLUMNS bzw. ON ROWS ): Dimensionsname, gefolgt von Hierarchiebezeichnungen auf der Typebene (von oben nach unten), Hierarchiebezeichnungen auf der Typebene können ausgelassen werden (wenn eindeutig), Wiederholung des Dimensionsnamen, wenn keine richtige Hierarchie, Mengenklammern können hier weggelassen werden; werden gebraucht, wenn Ausschnitt in einer Dimension durch mehrere Ausdrücke definiert ist, eckige Klammern werden nur gebraucht, wenn Dimensionsname oder Hierarchiebezeichnung Leerzeichen enthält. Beispiel-Query von eben: SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS WHERE (Measures.[Sales Average]) Erläuterungen: Query, die Ausschnitt des Data Cubes mit _herkömmlichen_ Dimensionen definiert (s. b. Abbildung links auf vorangegangener Folie), Auswahl des Measures erfolgt durch die WHERE-Klausel, mehrere Measures sind NICHT zulässig, d. h. MDX-Interpreter generiert keine integrierte Tabelle, Einschränkungen der Dimensionen sind möglich (Definitionsmöglichkeiten hierzu, die im folgenden vorgestellt werden, sind sehr mächtig), WHERE-Klausel kann weggelassen werden Default-Measure wird verwendet nicht empfehlenswert, wird im folgenden wegen Übersichtlichkeit trotzdem oft gemacht. Data Warehousing und Mining: MDX. 11 Data Warehousing und Mining: MDX. 12

Data Warehousing und Mining: MDX. 13 Data Warehousing und Mining: MDX. 14 Query, die verdeutlicht, daß Measures eine Dimension ist/ vorhin angesprochener Spezialfall : SELECT Measures.MEMBERS ON COLUMNS, [Store].MEMBERS ON ROWS Erläuterungen: Angenommen, man würde die folgende WHERE-Klausel dazunehmen: WHERE (Measures.[Unit Sales]) Fehler, da WHERE-Klausel und Achsenspezifikation unabhängig sein müssen. Dieser Zusatz macht die Query außerdem sinnlos. Die folgende WHERE-Klausel WHERE ([Time].[Year].[1997]) ist dagegen OK. Weiterer Aspekt: Dimension ohne Hierarchie-Spezifikation führt dazu, daß alle Members angezeigt werden, unabhängig von der Position in der Hierarchie. Data Warehousing und Mining: MDX. 15 Data Warehousing und Mining: MDX. 16

Measures als gesonderte Dimension Von herkömmlicher Dimension kann man abstrahieren, z. B. 'über alle Stores aufsummieren'. Macht hier keinen Sinn. 'Default Measure' hat keine Entsprechung bei herkömmlichen Dimensionen. Wenn bei herkömmlicher Dimension keine Einschränkung, wird sie als Ganzes betrachtet. Default Measure wird bei Definition des Cubes festgelegt. Data Warehousing und Mining: MDX. 17 Data Warehousing und Mining: MDX. 18 Slicing vs. Filtering Filtering Auswahl der Axis Members, d. h. Achse ist schon vorgegeben. Slicing definiert das Maß bzw. schränkt Ausschnitt des Raums ein. (Begriffe für Konzepte, die z. T. schon illustriert wurden.) Illustration des Begriffs Slicing anhand der folgenden Query: SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS WHERE (Product.[Drink]) Store ( Location ) Store Type Drink Food Product Was bedeuten diese Zahlen? Data Warehousing und Mining: MDX. 19 Data Warehousing und Mining: MDX. 20

Slicing Fortsetzung Slicing auch in mehreren Dimensionen möglich. Beispiele: SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS WHERE ([Product].Drink, Measures.[Unit Sales]) Dimensionen: Product, Store (Ortsangabe), Time, Bildungsniveau (z. B. Fachabitur, Abitur), Measure (z. B. Umsatz, Gewinn) Tabelle mit Dimensionen Store und Zeit, die Gewinn mit Beer enthält. SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS WHERE ([Product].Drink, Measures.[Unit Sales], [Time].[Year].[1997]) Was bedeutet es, diesen Teil der Anfrage wegzulassen? Was bedeutet es, diesen Teil der Anfrage wegzulassen? Data Warehousing und Mining: MDX. 21 Data Warehousing und Mining: MDX. 22 MDX Struktur der Abfragen Aufbau einer MDX-Query mit allen obligatorischen Bestandteilen: SELECT axis_specification ON COLUMNS, axis_specification ON ROWS FROM cube_name WHERE slicer_specification Erläuterungen: axis_specification = Selektieren der Dimensionen und Members für die Achse, Weitere Achsen sind möglich: ON COLUMNS ROWS PAGES CHAPTERS SECTIONS ON AXIS(0)... AXIS(63) Query-Tool gibt Fehlermeldung aus bei mehr als zwei Achsen. slicer_specification = Definition möglicher Projektionen des Data Cubes. Konstrukte für den Zugriff auf Members Beispiel-Query: SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA].CHILDREN, [Store].[WA].CHILDREN} ON ROWS Erläuterungen (teilweise Wiederholung): MEMBERS - alle Elemente der Dimension, mit/ohne Beschränkung auf bestimmte Ebene der Hierarchie, CHILDREN alle Elemente in der entsprechenden Position, in diesem Fall Städte in CA und WA, [Store].[Store State].[WA] ist kein fully qualified name, wie bereits zuvor erwähnt (nicht alle Stufen der Hierarchie, Store Country wird übersprungen), ist aber OK wegen Uniqueness, WHERE Slicer-Spezifizierung weglassen = Standard-Measure wird angezeigt, Mehrere Member-Spezifikationen für eine Achse der Tabelle möglich. State kann man zusätzlich ausgeben. Data Warehousing und Mining: MDX. 23 Data Warehousing und Mining: MDX. 24

Konstrukte für den Zugriff auf Members (2) Ziel: Mehrere Levels einer Dimension in einer Tabelle, aber im Gegensatz zu MEMBERS wird Kontrolle über die Levels gewünscht. Konstrukt DESCENDANTS löst dieses Problem - Syntax: DESCENDANTS (member, level[, flag]) Flexibilität kommt über das Flag. Beispiel-Query: SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA], DESCENDANTS([Store].[Store State].[CA], [Store City])} ON ROWS Online-Hilfe erläutert gut weitere Parameter, z. B. SELF, SELF_AND_AFTER. Data Warehousing und Mining: MDX. 25 Data Warehousing und Mining: MDX. 26 Data Warehousing und Mining: MDX. 27 Data Warehousing und Mining: MDX. 28 z

Weiterführende Konstrukte Calculated Members und Named Sets Definition neuer Members, z. B. abgeleitete Measures (Beispiel: Rendite als Funktion von eingesetztem Kapital und Profit), Hierarchisches Navigieren Verknüpfung von Zellen an unterschiedlichen Positionen der Hierarchie (Beispiel: Umsatz in CA als Anteil des U.S.A.-Umsatzes) Zeitserien Vergleich von zeitbezogenen Werten mit Werten aus Vergleichszeitraum (Beispiel: Vergleichsmonat Vorjahreszeitraum) Tuples und CROSSJOIN mehr als zwei Dimensionen pro Tabelle, Filtern und Sortieren Top und Bottom Analysen, z. B. Top-N Queries Numerische und bedingte Abfragen, z. B. COUNT, SUM bzw. frei definierte Bedingungen (COUNT z. B. Anzahl der Tupel mit einer bestimmten Eigenschaft) Named Sets Motivation: Explizit benamte Mengen schaffen Übersichtlichkeit und erhöhen Wiederverwendbarkeit und Fehlertoleranz. Wir definieren hier Named Sets von Members. Beispiel: WITH SET bigcitystates AS '{Store.CA, Store.WA}' SET nobigcitystates AS 'EXCEPT(DESCENDANTS(Store,[Store State]), bigcitystates)' SELECT nobigcitystates ON ROWS, Time.MEMBERS ON COLUMNS Erläuterung: EXCEPT ist DIFF-Operator. Data Warehousing und Mining: MDX. 29 Data Warehousing und Mining: MDX. 30 Cross-Dimensional Operations Folie aus vergangenem Kapitel Verknüpfungen von Werten aus unterschiedlichen Dimensionen Beispiel für single-dimensional Berechnung: Anzahl der Angestellten = Belegschaft - Anzahl Arbeiter Allen Werten entspricht die gleiche Position im DataCube. Beispiel für cross-dimensional Berechnung: Bereinigter projizierter Gewinn = Projizierter Gewinn, verrechnet mit Währungsrisiko des jeweiligen Landes. Bildungsgrad Studium Abitur Hauptschule 07.01. 08.01. Hessen Bayern Saarland Ort Datum Data Warehousing und Mining: MDX. 31 Data Warehousing und Mining: MDX. 32

Calculated Members (1) Ziel: Definition neuer Members, in Abhängigkeit bereits existierender Members, sowohl für Dimensionen als auch für Measures, Beispiele: Abgeleitete Measures, z. B. Profit, wenn Umsatz und Kosten bekannt, Profit = (Umsatz Kosten)/Kosten, Diese Definition ist unabhängig davon, welche Position des Cubes man betrachtet. Neuaufteilung der Dimensionen, z. B. Quartalseinteilung des Jahres, basierend auf Monaten. Calculated Members (2) Beispiel in MDX: WITH MEMBER Measures.ProfitPercent AS '(Measures.[Store Sales] - Measures.[Store Cost]) / (Measures.[Store Cost])', FORMAT_STRING = '#.00%' SELECT {Measures.ProfitPercent} ON COLUMNS, Store.MEMBERS ON ROWS definiert Dimension und Position in Hierarchie Name des Calculated Members Aufbau des Calculated Members -Statements: WITH MEMBER parent.name AS 'expression' Data Warehousing und Mining: MDX. 33 Data Warehousing und Mining: MDX. 34 Calculated Members (3) Weiteres Beispiel: SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS WHERE ([Product].Drink, Measures.[Unit Sales]) WITH MEMBER MEASURES.DrinkSales AS '([Product].Drink, Measures.[Unit Sales])' SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS WHERE (Measures.[DrinkSales]) WITH MEMBER MEASURES.DrinkSales AS '([Product].Drink, Measures.[Unit Sales])' SELECT {MEASURES.DrinkSales, Measures.[Unit Sales]} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS Beispiel illustriert, daß abgeleitete Measures Einschränkung entlang anderer Dimensionen vornehmen können. äquivalent Data Warehousing und Mining: MDX. 35 Calculated Members (4) Beispiel für Calculated Member-Definition für Dimension, die nicht Measures ist: WITH MEMBER [Time].[First Half 97] AS '[Time].[1997].[Q1] + [Time].[1997].[Q2]' MEMBER [Time].[Second Half 97] AS '[Time].[1997].[Q3] + [Time].[1997].[Q4]' Man beachte: Summe ist hartkodiert. Definition ist wiederum unabhängig von konkreten Werten anderer Dimensionen. Calculated Members müssen unter der Wurzel der Hierarchie eingehängt werden. Beispiel, das nicht funktioniert: WITH MEMBER Measures.ProfitPercent AS '(Measures.[Store Sales] - Measures.[Store Cost]) / (Measures.[Store Cost])', FORMAT_STRING = '#.00%' MEMBER [Time].[Year].[H1] AS '[Time].[Year].[Q1] + [Time].[Year].[Q2] MEMBER [Time].[Year].[H2] AS '[Time].[Year].[Q3] + [Time].[Year].[Q4] SELECT {[Time].[Year].[H1], [Time].[Year].[H2]} ON COLUMNS, {[Store].[Store Name].MEMBERS} ON ROWS WHERE (Measures.ProfitPercent) Data Warehousing und Mining: MDX. 36

Solve_order (1) Beispiel Halbjahresprofit, verwendet beide abgeleiteten Members von eben. Erster Versuch, nicht ausreichend: WITH MEMBER Measures.ProfitPercent AS '(Measures.[Store Sales] - Measures.[Store Cost]) / (Measures.[Store Cost])', FORMAT_STRING = '#.00%' MEMBER [Time].[First Half 97] AS '[Time].[1997].[Q1] + [Time].[1997].[Q2]' MEMBER [Time].[Second Half 97] AS '[Time].[1997].[Q3] + [Time].[1997].[Q4]' SELECT {[Time].[First Half 97], [Time].[Second Half 97], [Time].[1997].CHILDREN} ON COLUMNS, {[Store].[Store Name].MEMBERS} ON ROWS WHERE (Measures.ProfitPercent) Solve_order (2) Beispiel Fortsetzung: Q1 Q2 Q3 Q4 Sales 30 40 50 40 Cost 10 15 30 20 WITH MEMBER Measures.ProfitPercent AS '(Measures.[Store Sales] - Measures.[Store Cost]) / (Measures.[Store Cost])' Q1 Q2 Q3 Q4 5 2 Profit 2 1 3 3 WITH MEMBER [Time].[H1] AS '[Time].[1997].[Q1] + [Time].[1997].[Q2]' MEMBER [Time].[H2] AS '[Time].[1997].[Q3] + [Time].[1997].[Q4]' H1 H2 Sales 70 90 Cost 25 50 Profit H1 H2 9 4 5 5 Data Warehousing und Mining: MDX. 37 Man muß explizit angeben, in welcher Reihenfolge Ableitungen zur Anwendung kommen sollen. Data Warehousing und Mining: MDX. 38 Solve_order (3) Cross-Dimensional Operations Folie aus vergangenem Kapitel Beispiel: WITH MEMBER Measures.ProfitPercent AS '(Measures.[Store Sales] - Measures.[Store Cost]) / (Measures.[Store Cost])', FORMAT_STRING = '#.00%', SOLVE_ORDER = 1 MEMBER [Time].[First Half 97] AS '[Time].[1997].[Q1] + [Time].[1997].[Q2]' MEMBER [Time].[Second Half 97] AS '[Time].[1997].[Q3] + [Time].[1997].[Q4]' SELECT {[Time].[First Half 97], [Time].[Second Half 97], [Time].[1997].CHILDREN} ON COLUMNS, {[Store].[Store Name].MEMBERS} ON ROWS WHERE (Measures.ProfitPercent) Größerer SOLVE_ORDER-Wert bedeutet, daß MDX zuerst versucht, diesen Ausdruck aufzulösen. Verknüpfungen von Werten aus unterschiedlichen Dimensionen Beispiel für single-dimensional Berechnung: Anzahl der Angestellten = Belegschaft - Anzahl Arbeiter Allen Werten entspricht die gleiche Position im DataCube. Beispiel für cross-dimensional Berechnung: Bereinigter projizierter Gewinn = Projizierter Gewinn, verrechnet mit Währungsrisiko des jeweiligen Landes. Bildungsgrad Studium Abitur Hauptschule 07.01. 08.01. Hessen Bayern Saarland Ort Datum Data Warehousing und Mining: MDX. 39 Data Warehousing und Mining: MDX. 40

Beziehungen zwischen Hierarchie-Elementen (1) Motivation: Verknüpfung von Werten, die unterschiedlichen Members in der Hierarchie entsprechen, Beispiel: Anteil des Umsatzes mit Bier am Gesamtumsatz Getränke Data Warehousing und Mining: MDX. 41 Data Warehousing und Mining: MDX. 42 Beziehungen zwischen Hierarchie-Elementen (2) Beispiel MDX-Statement: WITH MEMBER MEASURES.PercentageSales AS '([Product].CURRENTMEMBER, Measures.[Unit Sales]) / ([Product].CURRENTMEMBER.PARENT, Measures.[Unit Sales])', FORMAT_STRING = '#.00%' SELECT {MEASURES.[Unit Sales], MEASURES.PercentageSales} ON COLUMNS, [Product].[Brand Name].MEMBERS ON ROWS Erläuterung: Tupel mit mehreren Komponenten in der Member- Definition, z. B. ([Product].CURRENTMEMBER, Measures.[Unit Sales]), ist Einschränkung über mehrere Dimensionen. Was passiert, wenn ROW-Achse nicht über Product? Data Warehousing und Mining: MDX. 43 Data Warehousing und Mining: MDX. 44

Beziehungen zwischen Hierarchie-Elementen Fortsetzung Konstrukt ANCESTOR anstelle von PARENT.PARENT... Übersichtlicher, Einfacher zu programmieren, Änderungsfreundlicher Beispiel: WITH MEMBER MEASURES.PercentageSales AS '([Product].CURRENTMEMBER, Measures.[Unit Sales]) / (ANCESTOR([Product].CURRENTMEMBER, [Product Category]), MEASURES.[Unit Sales])' Query von eben mit Konstrukt ANCESTOR? Data Warehousing und Mining: MDX. 45 Data Warehousing und Mining: MDX. 46 Generieren Sie mit MDX die folgende Tabelle: x-achse ist Zeit, genauer gesagt, die Jahre und die Quartale. y-achse ist Dimension 'Promotions'. Measure ist 'Unit Sale'. GENERATE (1) Motivation: Anwendung eines Templates auf alle Elemente einer Menge, Beispiel: Wir wollen alle Store Cities in NoBigCityStates. Mit unserem jetzigen Wissen müßten wir die NoBigCityStates einzeln aufzählen, für jede Ableitung von Store Cities einzeln. Konstrukt GENERATE löst das Problem Beispiel: 'GENERATE(NoBigCityStates, Store.CURRENTMEMBER.CHILDREN) Menge Template spezieller Platzhalter Data Warehousing und Mining: MDX. 47 Data Warehousing und Mining: MDX. 48

GENERATE (2) Beispiel: SELECT {GENERATE([Time].[Year].MEMBERS, {[Time].CURRENTMEMBER, [Time].CURRENTMEMBER.CHILDREN})} ON COLUMNS, [Promotions].[All Promotions].CHILDREN ON ROWS WHERE (Measures.[Unit Sales]) Man braucht das CURRENTMEMBER, um sicherzustellen, daß die Jahre und genau die Quartale aus dem Jahr zusammen aufgeführt werden. SELECT {[Time].[Year].MEMBERS, [Time].[Year].CHILDREN} löst das Problem nicht. Data Warehousing und Mining: MDX. 49 Data Warehousing und Mining: MDX. 50 Zeitserien (1) Zeitserien (2) Motivation: Vergleich von Werten mit Werten aus Vergleichszeitraum, z. B. gleicher Wert im Vorjahr. Parameter: Member der Dimension Time, Beispiel für vollständiges MDX-Statement: WITH MEMBER Measures.[Profit Growth] AS '(Measures.[Profit]) (Measures.[Profit], PARALLELPERIOD([Time].[Quarter]))', FORMAT_STRING = '###,###.00' SELECT {Measures.[Profit], Measures.[Profit Growth]} ON COLUMNS, {DESCENDANTS([Time].[1997], [Month])} ON ROWS Default: Vorgängerperiode. Hier im Beispiel wird Monat des Vorgängerquartals genommen. Data Warehousing und Mining: MDX. 51 Data Warehousing und Mining: MDX. 52

Zeitserien konkrete Konstrukte PARALLELPERIOD = Element an gleicher Stelle in vorheriger Periode (z. B. gleiches Quartal im vorherigen Jahr) Parameter: Members der Dimension Time, (Es existiert auch allgemeinere Funktion COUSIN.) OPENINGPERIOD = Element an erster Stelle in der Periode (z. B. erstes Quartal im Jahr) CLOSINGPERIOD = Element an letzter Stelle in der Periode (z. B. letztes Quartal im Jahr) PERIODSTODATE = alle Elemente bis an eine spezifizierte Stelle (z. B. alle Quartale bis heute) YTD QTD MTD WTD Abkürzungen für Ausdrücke mit PERIODSTODATE Tuples und CROSSJOIN Motivation: Dimension mit mehr als einem Attribut, Tuples = Kombination von Elementen verschiedener Dimensionen (in der Demo Werte entlang der Achse) Beispiele für Tupel: (Supermarket, CA), (Supermarket, DF),... (Deli, CA),... Wie erzeugt man Tupel automatisch? CROSSJOIN = Kreuzprodukt zweier Elementmengen Beispiel: CROSSJOIN([Customers].[City].MEMBERS, [Time].[Quarter].MEMBERS) Data Warehousing und Mining: MDX. 53 Data Warehousing und Mining: MDX. 54 Data Warehousing und Mining: MDX. 55 Data Warehousing und Mining: MDX. 56

Filtern und Sortieren FILTER, ORDER, TOPCOUNT etc., die im folgenden besprochen werden, haben alle den gleichen Aufbau: Operator(Member-Expression, Bedingung/Sortierkriterium etc.) Data Warehousing und Mining: MDX. 57 Data Warehousing und Mining: MDX. 58 Data Warehousing und Mining: MDX. 59 Data Warehousing und Mining: MDX. 60

Filtern Motivation: Einschränkung der Elemente einer Achse, man will mehr können als nur die relevanten Members explizit hinzuschreiben. Beispiel: spezielle Filterbedingung SELECT NON EMPTY {[Store Type].[Store Type].MEMBERS} ON COLUMNS, FILTER({[Store].[Store City].MEMBERS}, (Measures.[Unit Sales], [Time].[1997])>25000) ON ROWS Bedingung WHERE (Measures.[Profit], [Time].[Year].[1997]) Erläuterung: NON EMPTY stellt sicher, daß mindestens eine Zelle der Tabelle nicht leer ist. Sortieren Sortieren Aufbau des Sortier-Operators ist wie der einer Filtering Expression: angewendet auf Liste (heißt hier Menge ), liefert ORDER-Operator Liste zurück, Aufbau: ORDER(set, expression[, ASC DESC...]) Sortierkriterium Menge, auf die Filter angewendet wird Data Warehousing und Mining: MDX. 61 Data Warehousing und Mining: MDX. 62 Sortieren Beispiel Side Issue : Spezifikation von Ranges ist möglich: SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store City].[Beverly Hills]:[Spokane]} ON ROWS Dieselbe Anfrage, dieses Mal mit Sortierung: SELECT Measures.MEMBERS ON COLUMNS, ORDER({[Store].[Store City].[Beverly Hills]:[Spokane]}, [Store].CURRENTMEMBER.Name, BASC) ON ROWS Präfix B bedeutet, daß die Hierarchie für die Sortierung aufgebrochen wird. Data Warehousing und Mining: MDX. 63 Data Warehousing und Mining: MDX. 64

Data Warehousing und Mining: MDX. 65 Data Warehousing und Mining: MDX. 66 v Aggregationsfunktionen SUM, COUNT, AVG, MAX Nützlich für die Definition abgeleiteter Measures. Beispiele: SUM(BigCityStates, Measures.[Unit Sales]) WITH MEMBER Measures.[Customer Count] AS 'COUNT(CROSSJOIN({Measures.[Unit Sales]}, [Customers].[Name].MEMBERS), EXCLUDEEMPTY)' SELECT {Measures.[Unit Sales], Measures.[Customer Count]} ON COLUMNS, [Product].[Product Category].MEMBERS ON ROWS Äquivalente Query, allerdings etwas langsamer in der Ausführung: WITH MEMBER Measures.[Customer Count] AS 'COUNT(FILTER((Measures.[Unit Sales], [Customers].[Name].MEMBERS)>0)) SELECT {Measures.[Unit Sales], Measures.[Customer Count]} ON COLUMNS, [Product].[Product Category].MEMBERS ON ROWS Top-N Queries Konstrukte: 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 BOTTOMCOUNT BOTTOMPERCENT BOTTOMSUM = die n schlechtesten Elemente in einem Set Beispiel: SELECT Measures.MEMBERS ON COLUMNS, TOPCOUNT({[Store].[Store City].MEMBERS}, 12, Measures.[Sales Count]) ON ROWS Data Warehousing und Mining: MDX. 67 Data Warehousing und Mining: MDX. 68

Data Warehousing und Mining: MDX. 69 Data Warehousing und Mining: MDX. 70 Fazit Mögliche Prüfungsfragen Zusammenfassung: MDX ist für IT-Entwickler ein relativ angenehmes und leistungsfähiges Werkzeug. MDX ist für IT-Anwender hingegen kompliziert und schwierig erlernbar. Zielsetzung dieser Sprache: Einbettung von MDX-Queries in Anwendungen, die dem Entscheider vordefinierte Analysen zur Verfügung stellen. Insbesondere der zweite Teil hat verdeutlicht, daß man mit MDX mehr erreichen kann als mit Slice&Dice Interaktionsmechanismen. Vertauschung von Dimensionen und Measures wie im zuvor betrachteten Modell ist hier nicht möglich, außerdem weitere Unschönheiten. <Anfragen mit MDX formulieren können.> Was bedeutet weitere Unschönheiten auf vorangegangener Folie? Data Warehousing und Mining: MDX. 71 Data Warehousing und Mining: MDX. 72