Anfragen an multidimensionale Daten Seminar: Data Warehousing im Sommersemester 2005 Lehrstuhl für Datenbanken und Informationssysteme Alexander Heidrich Betreuer: David Wiese 20. Juni 2005 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 Inhaltsverzeichnis 1. 2. Einleitung ......................................................................................................................... 1 OLAP-Operationen.......................................................................................................... 1 2.1 Roll-Up.................................................................................................................. 2 2.2 Drill-Down............................................................................................................ 2 2.3 Drill-Across........................................................................................................... 2 2.4 Slice........................................................................................................................ 3 2.5 Dice ........................................................................................................................ 3 2.6 Pivotierung ........................................................................................................... 3 3. Umsetzung in Standards ................................................................................................ 4 3.1 SQL ............................................................................................................................ 4 3.1.1 Erweiterte Gruppierungsfunktionalität ........................................................... 5 3.1.2 SQL-OLAP-Erweiterungen ............................................................................ 8 3.2 MDX ........................................................................................................................ 11 3.2.1 MDX Sprachelemente ................................................................................... 11 3.2.2 Aufbau einer MDX-Abfrage ......................................................................... 11 3.2.3 Navigationsfunktionen ................................................................................. 11 3.2.4 Drei Beispiele ................................................................................................. 12 4. Abfragetypen und –verarbeitung ................................................................................ 13 4.1 Abfragetypen .......................................................................................................... 13 4.2 Abfrageverarbeitung – Star-Join ........................................................................ 14 5. Schlussbemerkungen .................................................................................................... 15 6. Quellenverzeichnis ........................................................................................................ 16 6.1 Abbildungen ........................................................................................................... 16 6.2 Text .......................................................................................................................... 16 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 1. Einleitung Neben den Prozessen zur Erstellung und Optimierung gehört der Aspekt der Anfragen an ein Data Warehouse sicher zu den Kernpunkten des Interesses, da diese letzten Endes die Grundlage für die Analyse der erfassten Daten darstellen. In der vorliegenden Arbeit werden die wichtigsten Operatoren für Anfragen an multidimensionale Daten sowie deren Umsetzung in SQL und MDX erläutert, ein weitere Teilabschnitt beschäftigt sich mit den häufigsten Anfragetypen und der Anfrageverarbeitung 2. OLAP-Operationen OLAP (kurz für Online Analytical Processing) bezeichnet Werkzeuge und Technologien, um auf multidimensionale Daten zuzugreifen, die z.B. in einem Data Warehouse gespeichert sind. Dazu stehen mehrere Operationen zur Verfügung, die eine größtmöglich benutzerfreundliche Analyse der Datenbestände ermöglichen sollen. Die jeder OLAP-Operation zugrundeliegende Struktur ist ein sogenannter Data Cube (Datenwürfel) (Abbildung 1) auf dem die im folgenden gezeigten Operationen ausgeführt werden. Abbildung 1 - Datenwürfel 1 Der Datenwürfel ist im einfachsten (multidimensionalen) Fall ein dreidimensionaler Würfel. Im vorliegenden Beispiel sind Geographie, Produkt und Zeit die Dimensionen. Die Dimensionen können unterschiedlich detaillierte Granularitäten und damit verschiedene Betrachtungsebenen aufweisen, z.B. Land, Region, Bezirk für die Dimension Geographie oder Jahr, Quartal, Monat für die Dimension Zeit. Die einzelnen Elemente des Würfels beinhalten die eigentlichen Daten - meist betriebswirtschaftliche Kennzahlen, wie z.B. Umsätze oder Verkäufe. 1 Quelle: [BaGu04] 1 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 2.1 Roll-Up Ein Roll-Up bezeichnet den Wechsel von einer Betrachtungsebene auf die darüberliegende. Ausgehend von einer Abfrage von Verkäufen aufgeteilt nach Monaten würde ein Roll-Up auf die Dimension Zeit zu einem Ergebnis führen, in dem die Verkäufe nun nach Quartal aufsummiert werden. 2.2 Drill-Down Die Drill-Down-Operation ist die direkte Umkehroperation zum Roll-Up. Analog zum obigen Beispiel führt ein Drill-Down auf die Dimension Zeit in der Quartalsebene wieder zu einem Ergebnis, in dem die Verkäufe wieder nach Monaten aufgeteilt sind. Roll-Up und Drill-Down lassen sich am besten in einer gemeinsamen Abbildung erklären. Insbesondere lässt sich so erkennen, dass die eine Operation jeweils die Umkehroperation der anderen ist (Abbildung 2). Abbildung 2 - Roll-Up und Drill-Down 2 2.3 Drill-Across Mit der Drill-Across-Operation kann man unter Beibehaltung der Betrachtungsebene den betrachteten Fakt wechseln (Abbildung 3). Abbildung 3 - Drill-Across 3 2 3 Quelle: [BaGu04] Quelle: [BaGu04] 2 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 2.4 Slice Eine Slice-Operationen bietet die Möglichkeit auf Schichten des Datenwürfels zuzugreifen, dabei beschränkt man (im dreidimensionalen Fall) eine Dimension auf ein Intervall des Wertebereichs und belässt die anderen Dimensionen unverändert. In der Abbildung ist nur eine Möglichkeit eines Slice abgebildet. Abbildung 4 - Slice 4 2.5 Dice Mit Hilfe der Dice-Operation kann der Benutzer in jeder Dimension beschränkte Teilwürfel aus dem Datenwürfel herausschneiden, um sie zur näheren Betrachtung heranzuziehen. Abbildung 5 - Dice 5 2.6 Pivotierung Durch drehen (= pivotieren) des Datenwürfels kann der Benutzer die Daten aus jeder beliebigen Perspektive betrachten. Unter der Annahme, daß der Betrachter des Wüfels diesen immer von vorn sieht, bedeutet das, ausgehend vom Beispiel die Sicht auf die Daten „Verkäufe nach Zeit und Geographie“ „Verkäufe nach Zeit und Produkt“, usw. (Abbildung 6). Abbildung 6 – Pivotierung 6 Quelle: http://purgold-software.de/info/olap.html (vom Verfasser modifiziert) Quelle: http://purgold-software.de/info/olap.html (vom Verfasser modifiziert) 6 Quelle: [BaGu04] 4 5 3 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3. Umsetzung in Standards In diesem Kapitel werden zwei Ansätze zur Umsetzung der OLAP-Operationen für den Gebrauch in DBMS vorgestellt. Im ersten Abschnitt werden dazu Erweiterungen für SQL gezeigt, der zweite Teil beschäftigt sich mit MDX, einer neuen Sprache, die direkt auf dem multidimensionalen Datenmodell aufbaut. Die Vorstellung beschränkt sich in dieser Arbeit hauptsächlich auf Beispiele, für syntaktische Feinheiten und weitere spezielle Funktionen sei der Leser an die jeweilige Sprachreferenz bzw. Norm verwiesen. 3.1 SQL Um multidimensionale Operatoren auf dem relationalen Datenmodell zu ermöglichen, wurden mit SQL:99 beginnend verschiedene neue Sprachelemente implementiert, die sich in zwei Klassen gliedern: Erweiterte Gruppierungsfunktionalität: - erweiterte GROUP BY-Syntax - GROUPING SETS - GROUPING-Funktion - ROLLUP-Operator - CUBE-Operator SQL-OLAP-Funktionen: - Aggregate - Partionierung - Bildung dynamischer Fenster - Ranking Die genannten Erweiterungen sind auf Vorschläge von IBM und Oracle zurückzuführen und waren dementsprechend auch zuerst in DB2 und Oracle 9 implementiert. Bezüglich der SQL:99-Norm sind beide Produkte in den genannten Punkten gleich. Die Ausgangsdaten für die folgenden Ausführungen sind in Tabelle 1 zu sehen. Sie zeigen die fiktiven Verkaufzahlen einer Firma, aufgeschlüsselt nach Jahr, Land und Kategorie. Tabelle 1 - Ausgangsdaten Jahr 2003 2003 2003 2003 2004 2004 2004 2004 Land Deutschland Deutschland Frankreich Frankreich Deutschland Deutschland Frankreich Frankreich Kategorie Verkäufe Autos 200 Computer 300 Autos 400 Computer 250 Autos 350 Computer 400 Autos 150 Computer 150 4 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3.1.1 Erweiterte Gruppierungsfunktionalität 3.1.1.1 GROUP BY Die einfachen Aggregatfunktionen wie SUM(), COUNT(), MIN(), MAX(), AVG() liefern nur eine einzelne Zahl als Ergebnis. Für die Auswertung betriebswirtschaftlicher Daten ist es aber viel interessanter, diese zu gruppieren und nach gewünschtem Attribut und gewünschter Funktion zu aggregieren. Dazu ist die Verwendung der GROUP BY-Klausel innerhalb der SELECT-Klausel nötig, wie im folgenden Beispiel zu sehen: Abbildung 7 - Gruppierung mittels GROUP BY Prinzipiell wäre dieses Konstrukt ausreichend, um alle möglichen Gruppierungen und damit alle möglichen Zahlen (Verkäufe nach Jahr, Verkäufe nach Zeit, Verkäufe nach Jahr und Land, usw.) zu erzeugen, allerdings verursacht dies erheblichen Schreibaufwand und Performance-Einschränkungen bei der Abarbeitung der Abfrage. 5 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3.1.1.2 GROUPING SETS Um die genannten Probleme aus 3.1.1 zu beheben, empfiehlt sich der Einsatz der sog. GROUPING SETS. Diese Erweiterung der GROUP BY-Syntax erzeugt alle angegebenen Gruppierungsmengen (Abbildung 8) . Abbildung 8 – Gruppierung mittels GROUPING SETS 3.1.1.3 Der ROLLUP-Operator Da bei großen Tabellen auch die Angabe der Gruppierungsmengen ein sehr zeitaufwändiger Vorgang sein kann, empfiehlt sich der ROLLUP-Operator oder der CUBE-Operator (siehe 3.1.1.4). Die ROLLUP-Funktion erweitert die GROUP BYSyntax um die einfache Möglichkeit eine hierarchische multidimensionale Gruppierung zu erzeugen. Wie auch schon im GROUPING SETS-Beispiel erzeugt die Anwendung der ROLLUP-Funktion NULL-Werte, die so sich nicht von benutzerdefinierten NULL-Werten unterscheiden lassen. Um dies zu umgehen, wurde die GROUPING-Funktion eingeführt, deren Anwendung auf ein Attribut eine 1 oder eine 0 ausgibt, falls das Attribut an der Gruppierung beteiligt oder nicht. Abbildung 9 - Die Anwendung des ROLLUP-Operators 6 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3.1.1.4 Der CUBE-Operator Trotz der bereits genannten Erleichterungen fehlen nach Benutzung des ROLLUPOperators noch einige möglicherweise interessante Zahlen, zum Beispiel die Verkäufe gruppiert nur nach Jahr oder nur nach Land. Die liegt allerdings nicht an einem Mangel an Funktionalität sondern an der bereits erwähnten Tatsache, dass der ROLLUP-Operator nur hierarchische Gruppierungen erzeugt. Um sich wirklich jede mögliche Gruppierung ausgeben zu lassen, empfiehlt sich der Einsatz des CUBEOperators. Der Vorschlag zur Erweiterung der GROUP BY-Syntax stammt aus einem Papier von Microsoft und IBM. Der CUBE-Operator ist die n-dimensionale Generalisierung der einfachen Aggregatfunktionen (Abbildung 10). Abbildung 10 - Die n-dimensionale Generalisierung: 0D - Punkt, 1D - Linie+Punkt, 2D Kreuztabelle, 3D - drei sich überschneidende Kreuztabellen 7 Die Anwendung auf die Beispieldaten erzeugt folgendes Ergebnis: Abbildung 11 - Die Anwendung des CUBE-Operators 7 Quelle: [GBLP95] 7 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3.1.2 SQL-OLAP-Erweiterungen Das Kernkonstrukt der SQL-OLAP-Erweiterungen ist die OVER-Klausel. Mit ihrer Hilfe lassen sich die nachfolgend beschriebenen Funktionalitäten realisieren. Abbildung 12 - Die OVER-Klausel Funktion(arg) bezeichnet in diesem Fall eine der SQL-Funktionen. 3.1.2.1 Aggregate Eine einfache Aggregatbildung ohne Verdichtung lässt sich mittels Verwendung von OVER() ohne Angabe jeglicher Parameter realisieren (Abbildung 13). Abbildung 13 - einfache Aggregatbildung mit OVER 8 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3.1.2.2 Partionierung Eine Aufteilung der Ergebnistabelle ähnlich der wie sie bei Verwendung von GROUP BY entsteht, lässt sich mittels Partitionierung erreichen. Dazu ist die Angabe eines Partitionierungsschemas von Nöten (Abbildung 14). Abbildung 14 - Partitionierung 3.1.2.3 Bildung dynamischer Fenster Mit der Fenster-Klausel besteht die Möglichkeit eine Angabe darüber zu machen, über welche Zeilen einer Eingabe eine Funktion ausgeführt werden soll. Dies ermöglicht beispielsweise die Berechnung eines gleitenden Mittelwerts. Das Syntaxdiagramm der Fensterklausel sieht folgendermaßen aus: Abbildung 15 - Syntaxdiagramm der Fenster-Klausel 9 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 Das erwähnte Beispiel eines fließenden Mittelwerts ließe sich so realisieren: Abbildung 16 - fließender Mittelwert In diesem Falle wird der Mittelwert immer aus dem Wert der Verkäufe der aktuellen und der vorherigen Zeile gebildet. 3.1.2.4 Ranking Um die Position eines Tupels bezüglich einer Sortierungsreihenfolge im Ergebnis einer Abfrage zu bestimmen, gibt es die Funktionen RANK() und DENSE_RANK(), wobei RANK() im Gegensatz zu DENSE_RANK() beim Auftreten von Duplikaten Lücken in der Nummerierung lässt (Abbildung 17). Abbildung 17 - Ranking 10 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3.2 MDX MDX steht für MultiDimensional EXpressions und bezeichnet eine neuartige Abfragesprache, die sich stark an der SQL-Syntax orientiert und direkt auf dem multidimensionalen Datenmodell aufsetzt. Entwickelt wurde die Sprache von Microsoft und ist z.B. im MS SQLServer und als Addin für Excel verfügbar. MDX ist trotz des Vorsatzes den Zugriff auf multidimensionale Strukturen zu vereinfachen, eine sehr komplexe und mächtige Sprache geworden. Sie verfügt über sehr viele Funktionen von denen hier nur auf einige anhand von Beispielen verwiesen werden soll. 3.2.1 MDX Sprachelemente Fakten werden in MDX als Measures bezeichnet und als eigene Dimension modelliert. Dimensionen unterteilen sich in Level und Members. Level sind Klassifikationsstufen und Members sind Klassifikationsknoten eines Levels (siehe dazu auch 3.2.3). Um die später genannten Beispiele zu verstehen, seien an dieser Stelle noch die Syntaxelemente { } und [ ] erwähnt, wobei { } Mengen darstellen und [ ] Strings einschließen. 3.2.2 Aufbau einer MDX-Abfrage Im Select-Teil werden die Dimensionen angegeben, auf die sich die Abfrage bezieht. Es können bis zu 64 Dimensionen ausgewählt werden, zusätzlich muss angegeben werden, ob die Dimensionen im Ergebnis auf den Zeilen (= on ROWS) oder Spalten (= on COLUMNS) liegen sollen. Im From-Teil werden die Cubes angegeben, auf die die Abfrage ausgeführt werden soll. Die Where-Klausel ermöglicht die Auswahl der darzustellenden Werte. 3.2.3 Navigationsfunktionen Wie schon in 3.2.1 angesprochen, unterteilen sich Dimensionen in verschiedene Hierarchieebenen. MDX stellt zur Navigation zwischen diesen Ebenen verschiedene Funktionen zur Verfügung: - Members: ansprechen aller Knoten einer Klassifikationsebene Children: ansprechen aller Kinderknoten eines Klassifikationsknotens Parent: ansprechen des Elternknotens eines Klassifikationsknotens SELECT {[Kategorie].MEMBERS} Æ Autos, Computer SELECT {[Notebook1].PARENT} Æ Computer SELECT {[Computer].CHILDREN} Æ Notebook1, Notebook2, Desktop1, Desktop2 11 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 3.2.4 Drei Beispiele Drill-Down SELECT Measures.MEMBERS ON COLUMNS [Jahr].MEMBERS,[Land].Members,[Kategorie].Members ON ROWS FROM [Verkäufe] WHERE ([Jahr].[2003]) Roll-Up SELECT Measures.MEMBERS ON COLUMNS [Jahr].MEMBERS,[Land].Members,[Kategorie].Members ON ROWS FROM [Verkäufe] WHERE ([Jahr].MEMBERS) Crossjoin (Projektion zweier Dimensionen in die Ebene) SELECT CROSSJOIN({[Deutschland],[Frankreich]}, {[Autos], [Computer]}) ON COLUMNS [Jahr].MEMBERS ON ROWS FROM [Verkäufe] WHERE (Measures.[Verkäufe]) Abbildung 18 - Ergebnisse der drei Beispielanfragen 8 Quelle Würfelabbildung: http://www.cs.nyu.edu/courses/spring05/G22.3033010/2dw.ppt&e=10313 (vom Verfasser modifiziert) 8 12 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 4. Abfragetypen und –verarbeitung 4.1 Abfragetypen Abbildung 19 - Abfragetypen 9 1 – range query – in allen Dimensionen durch ein Suchintervall beschränkt („Wie viele Computer wurden im Januar verkauft“) 2 – partial range query – in mindestens einer aber nicht in allen Dimensionen durch ein Suchintervall beschränkt („Wie viele Produkte wurden im Januar verkauft“) 3 – partial match query – in mindestens einer aber nicht in allen Dimension streng durch einen genau angegebenen Wert beschränkt („Wie viele Produkte wurden am 31. Januar verkauft“) 4 – point query – in allen Dimensionen durch einen genau angegebenen Wert beschränkt („Wie viele Computer „Typ2“ wurden am 31. Januar verkauft“) 5 und 6 zeigen Anfragen aus dem Bereich der Geoinformations-Systeme, z.B. Ausdehnung von Gewässern oder Überschneidung von Arealen. 9 Quelle: http://wwwiti.cs.uni-magdeburg.de/iti_db/lehre/dw/05-Anfrageverarbeitung.pdf 13 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 4.2 Abfrageverarbeitung – Star-Join Die in Data Warehouses am häufigsten vorkommende Form der Abfragen sind Bereichs- und Teilbereichsanfragen. Ausgehend von der typischen (relationalen) Speicherform, des so genannten Star-Schemas (Abbildung 20) beziehen sich solche Anfragen immer auf eine große Faktentabelle und mehrere kleine voneinander unabhängige Dimensionstabellen. Abbildung 20 - Star-Schema 10 Um nun eine Anfrage wie zum Beispiel „Wie viele Waschgeräte wurden im Jahr 2000 in Deutschland verkauft“ zu beantworten ist ein sog. Star-Join über die Faktentabelle „Verkäufe“ und über die Dimensionstabellen „Produkt“, „Zeit“ und „Ort“ notwendig. Quelle: http://publib.boulder.ibm.com/infocenter/dzichelp/index.jsp?topic=/com.ibm.db2.doc.admin/bjndm str783.htm 10 14 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 Die Syntax eines Star-Joins orientiert sich am klassischen SFW-Schema (SelectFrom-Where). Dabei werden in der Select-Klausel die gewünschten Kenngrößen zusammen mit den Dimensionen und der nötigen Granularität angegeben. In der From-Klausel stehen die Fakten- und Dimensionstabelle(n) und schließlich müssen in der Where-Klausel noch die Verbundbedinungen und Restriktionen angegeben werden. Außerdem notwendig ist die Angabe, wie die Ausgabe gruppiert werden soll. SELECT Geographie.Region, Zeit.Monat, SUM(Verkaeufe) FROM Verkauf, Zeit, Produkte, Geographie WHERE Verkauf.Produkt_ID = Produkt.ProduktID AND Verkauf.Zeit_ID = Zeit.ZeitID AND Verkauf.Geographie_ID = Geographie.GeographieID AND Produkt.Produktkategorie = 'Waschgeräte' AND Geographie.Land = 'Deutschland' AND Zeit.Jahr = 2000 GROUP BY Geographie.Region, Zeit.Monat Eine mögliche Abarbeitungsstrategie zu der obigen Anfrage: Abbildung 21 - Abarbeitungsstrategie 11 5. Schlussbemerkungen Mit der immer größer werdenden Bedeutung von Data Warehouses und der Fülle an multidimensionalen Daten wuchs auch das Bedürfnis nach adäquaten Abfragemöglichkeiten. Die aktuellen Standards SQL:99 und die neue Sprache MDX bieten mit ihren Konstrukten und Erweiterungen eine große Funktionalität und Flexibilität, um schnelle und umfangreiche Abfragen an große Datenbestände durchzuführen. 11 Quelle: [BaGu04] 15 Blockseminar „Data Warehousing“ SS2005 Alexander Heidrich Matrikel.-Nr. 56827 6. Quellenverzeichnis 6.1 Abbildungen - - [BaGu04]: Bauer, A; Günzel, H.: Data Warehouse Systeme. Architektur, Entwicklung, Anwendung. Heidelberg: dpunkt.verlag. 2004. [GBLP95]: Gray, J.; Bosworth, A.; Layman, A.; Pirahesh, H.: Data Cube: A Relational Aggregation Operator Generalizing Group-By, CrossTab, and Sub-Totals. J. Data Mining and Knowledge Discovery. 1995. Zusätzliche Quellen siehe Fußnoten Nicht mit Quellenverweisen gekennzeichnete Abbildung wurden selbst erstellt. 6.2 Text - [BaGu04]: Bauer, A; Günzel, H.: Data Warehouse Systeme. Architektur, Entwicklung, Anwendung. Heidelberg: dpunkt.verlag. 2004. http://wwwiti.cs.uni-magdeburg.de/iti_db/lehre/dw/ (20.06.2005) http://www.informatik.hu-berlin.de/wbi/teaching/sose04/dwh/ (20.06.2005) http://www.wikipedia.de (20.06.2005) – als allgemeines Nachschlagewerk http://de.wikipedia.org/wiki/OLAP (20.06.2005) http://de.wikipedia.org/wiki/Data_Warehouse (20.06.2005) http://de.wikipedia.org/wiki/Sternschema (20.06.2005) Die Daten in den Klammern geben bei Webadressen den Zeitpunkt des letzen Zugriffs an. Weitere Quellen für Data-Warehouse-Technologien sind auf der Seite des zu dieser Arbeit gehörenden Seminars unter http://www.informatik.uni-jena.de/dbis/lehre/ss2005/sem_dwh/literatur.html zu finden. 16