Anfragen an multidimensonale Daten Alexander Heidrich - BID8 09.06.2005 - nach Architektur, Speichermodellen etc. bekannt wie Daten ins Data Warehous kommen, nun weiter mit Anfragen an die gespeicherten Daten
Anfragen an multidimensionale Daten Inhaltsübersicht Motivation OLAP-Operationen Umsetzung in Standards SQL MDX Anfragetypen und -verarbeitung Fragen? / Diskussion! 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Motivation Daten sind im Data Warehouse Wie kommt man nun an seine Informationen? Theoretische Grundlagen Welche Erweiterungen der vorhandenen (Datenbank-)mittel gibt es? Wie werden sie benutzt? Betriebswirtschaftliche Kennzahlen stehen im Mittelpunkt (Erlöse, Umsätze, Verkäufe, etc.) 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Inhaltsübersicht Motivation OLAP-Operationen Umsetzung in Standards SQL MDX Anfragetypen und -verarbeitung Fragen? / Diskussion! 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten OLAP-Operationen Online Analytic Processing Werkzeuge und Technologien, mit denen ein zugrundeliegendes DW benutzerfreundlich analysiert und abgefragt werden kann eingesetzt zur Unterstützung von Managemententscheidungen (decision support) beschäftigt sich mit der Auswertung von Daten, die über einen längeren Zeitraum gesammelt wurden 09.06.2005 Anfragen an multidimensionale Daten
OLAP-Operationen: Ausgangssituation Ausgangssituation: multidimensionaler Datenwürfel (einfacher Fall Würfel) Dimensionsgrößen (Geographie, Zeit, Produkt) Granularität (Jahr, Quartal, Monat, Tag) usw. einzelne elemente beinhalten Daten 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten OLAP-Operationen Roll-Up – Wechsel auf eine übergeordnete Betrachtungsebene Drill-Down – Wechsel auf eine untergeordnete Betrachtungsbene Roll-up – Aggregation (weniger Detail) Drill-down (mehr Detail), Bewegung entlang der Granularitäten 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten OLAP-Operationen Drill-Across – Wechseln des betrachteten Fakts unter Beibehaltung der Betrachtungsebene 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten OLAP-Operationen Slice – Zugriff auf Daten einer extrahierten Schicht Selektion, Beschränkung einer Dimension SELECT * FROM VERKÄUFE WHERE Produkt = „VW“ SELECT * FROM VERKÄUFE WHERE GEOGRAPHIE = „FILIALE1“ 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten OLAP-Operationen Dice – Zugriff auf Teilwürfel Beschränkung aller Dimensionen auf Menge von Werten SELECT * FROM Verkäufe WHERE ARTIKEL = „GOLF“ AND TAG = „1“ AND FILIALE=„JENA“ 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten OLAP-Operationen Pivotierung – Drehen des Würfels durch Vertauschen der Dimensionen davon ausgehend, daß der Nutzer den Würfel immer von vorn sieht Eine Art Slicing Zur Analyse betriebswirtschaftlicher Daten meist Summenbildung entlang weggelassener Dimensionen (Verkäufe nach Zeit und Ort, Verkäufe nach Produkt und Zeit, Verkäufe nach Produkt und Ort), dabei noch nach Granularität 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Inhaltsübersicht Motivation OLAP-Operationen Umsetzung in Standards SQL MDX Anfragetypen und -verarbeitung Fragen? / Diskussion! 09.06.2005 Anfragen an multidimensionale Daten
Umsetzung in Standards - SQL SQL-OLAP-Erweiterungen (seit SQL:1999) (erweiterte) Gruppierungsfunktionalität GROUP BY GROUPINGSETS GROUPING() ROLLUP CUBE SQL-OLAP-Funktionen Aggregate, Partitioning, Windows, Ranking IBM und Oracle an Standardisierung beteiligt integriert in DB2 und Oracle (DBMS) Pivotierung nicht in SQL Aufgabe der Darstellungsschicht DB2: 7.2, Oracle: 9 neben Informix (von IBM aufgekauft) und Compaq (mit HP fusioniert) Microsoft und IBM und CUBE-Operator Syntax in Beispielen 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: Beispieldaten Firma X mit Filialen in Frankreich und Deutschland, verkauft Autos und Computer Firma an allen Gruppierungen interessiert, Verkaufszahlen usw. usf. (vollständig wie möglich) 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: Aggregate Aggregatfunktionen COUNT(), SUM(), MIN(), MAX(), AVG() Funktionen liefern in dieser Anwendung nur einen einzelnen Wert Verwendung von GROUP BY Summen, Mittelwerte, etc. sind interessant, manche DBMS bieten auch weitere und benutzerdefinierte Funktionen um eine Anfrageergebnis mit Aussage, unterteilt nach Dimensionen zu bekommen (Summe nach Jahr, Summe nach Kategorie) im folgenden das Kernkonstrukt für die verschiedenen Gruppierungsmöglichkeiten 09.06.2005 Anfragen an multidimensionale Daten
SQL: GROUP BY – Beispiel -Ergebnis: Tabelle, unterteilt nach gewählten Attributmengen -Jede Gruppe wird mit der gewählten Funktion und gewähltem Attribut aggregiert -reicht eingentlich schon aus, würde sich bei großen Tabellen aber ungünstig machen, viel Schreibarbeit, Performance! 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: GROUPING SETS GROUP BY immer noch umständlich bei der Erzeugung von verschiedenen Gruppierungen (z.B. (Jahr, Land), (Jahr), (Jahr, Land, Verkäufe), etc.) Lösung: GROUPING SETS Gruppierungskombinationen - () = Superaggregat 09.06.2005 Anfragen an multidimensionale Daten
SQL: GROUPING SETS – Beispiel - Null-Werte unschön 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: ROLLUP-Operator Implizit drill-down, Rollup zeigen GROUPING()-Funktion, um NULL-Werte, die von der Aggregation erschaffen werden von benutzerseitig eingefügten NULL-Werten zu unterscheiden, seit SQL1999 Zurückführen auf GROUPING SETS Group-By es fehlen Zeilen (Aggregation nach Land) Hinzufügen per SQL-Statement fehlende Kombinationen Wunderwaffe CUBE-Operator Erweiterung der GROUP-BY-Syntax um ROLLUP-Operator erzeugt hierarchisch multidimensionale Gruppierung GROUPING()-Funktion zur Indentifizierung von NULL-Werten 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: CUBE-Operator Vorschlag von Microsoft und IBM Erweiterung der GROUP-BY-Syntax um den CUBE-Operator N-Dimensionale Generalisierung der einfachen Aggregatfunktionen Referenz zum Paper (Microsoft, IBM) Rechen- und Schreibaufwand verringern, Einführung vorgeschlagen 0D data cube = Punkt 1D data cube = Linie mit Punkt 2D data cube = Kreuztabelle 3D data cube = Würfel mit drei sich überschneidenden Kreuztabellen 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten CUBE erzeugt eine Tabelle, die sämtliche Aggregationen enthält GROUP-BYs für alle möglichen Kombinationen der Attribute, bei n Attributen müssen 2^n GROUP-BYs berechnet werden potenzmenge (stichwort) wenn mich diese ganzen Kombinationen nicht interessieren, Rückgriff auf ROLLUP entsprechend GROUPING SETS( (),(Jahr),(Land),(Kategorie), (Jahr,Land),(Jahr, Kategorie),(Land,Kategorie), (Jahr,Land, Kategorie)) 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: Cube ineinander verschachtelte Kreuztabellen http://www.cs.nyu.edu/courses/spring05/G22.3033-010/2dw.ppt&e=10313 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: OLAP-Funktionen mit SQL:1999 eingeführt umfassen: Aggregate Partionierung Window (Bildung dynamischer Fenster) Ranking Kernkonstrukt: Over-Klausel 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: Over-Klausel Funktion: z.B. AVG, SUM, später auch RANK(), DENSERANK() 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: Over() – Beispiel Over() Aggregation über alle Tupel Aggregatbildung, keine weitere Verdichtung 09.06.2005 Anfragen an multidimensionale Daten
SQL: Over() mit Partionierung - Beispiel Partitionierung ähnlich Gruppierung PARTION BY JAHR = Partionierungsschema PARTITON BY <attribute list> 09.06.2005 Anfragen an multidimensionale Daten
SQL: Over() Bildung dynamischer Fenster OVER(ORDER BY <attribute list> [<window-spec>]) ROWS: explizite Angabe der Tupel RANGE: Angabe über between (UNBOUNDED PRECEDING = alle vorhergehenden, CURRENT ROW = aktuelle Zeile, n PRECEDING, n FOLLOWING = n vohergehende, n folgenden) and oder nur folgende TUPEL ab AKTUELLER ZEILE 09.06.2005 Anfragen an multidimensionale Daten
SQL: Over() Bildung dynamischer Fenster - Beispiel - erfordert explizite Sortierung der Tupel 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten SQL: Ranking Bestimmung der Postion eines Tupels in der Ergebnismenge Duplikate erhalten den gleichen Rang RANK() (mit Lücken) DENSE_RANK() (ohne Lücken) also bzgl. angegebener Sortierung innerhalb der Partition 09.06.2005 Anfragen an multidimensionale Daten
SQL: Ranking - Beispiel Order By Angabe als Grundlage fürs Ranking notwendige Angabe! 1. Spalte Dense_Rank 2. Spalte Rank 09.06.2005 Anfragen an multidimensionale Daten
SQL: Umsetzung in DB2 und Oracle Behauptung: DB2 und Oracle hinsichtlich den in SQL:1999 definierten OLAP-Erweiterungen/-funktionen gleich SQL:2003 bringt weitere analytische Funktionen bislang nur von/in Oracle implementiert Standardisierungsvorschlag stammt ja von beiden, Over Ranking usw. gibt’s auch in beiden 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten MDX MDX = MultiDimensional eXpressions orientiert sich stark an SQL-Syntax und MDDM Entwicklung/Vorschlag von Microsoft kein relationaler „Aufsatz“ dementsprechend integriert in MS SQLServer 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten MDX Dimensions (Select) max. 64 on COLUMNS, ROWS, … Cube (From) Slicer (Where) Auswahl der darzustellenden Werte Fakten Slice 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten MDX: Elemente Measures Fakten als Dimension modelliert Dimensions Dimensionen Level: Klassifikationsstufe (Jahr) Member: Klassifikationsknoten (2003) Syntax {} Sets [] Einschluß von Strings implizite Summierung Measures Fakten in MDX auch Dimension Measures vorher festgelegt 09.06.2005 Anfragen an multidimensionale Daten
MDX: Navigationsfunktionen Members: Knoten einer Klassifikationsstufe Children: Kinderknoten eines Klassifikationsknotens Parent: Elternknoten eines Klassifikationsknotens SELECT {[Kategorie].MEMBERS} Autos, Computer SELECT {[ATHLONXP].PARENT} CPU SELECT {[CPU].CHILDREN} ATHLON64, ATHLONXP, PENTIUM4 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten MDX: Beispiele Drill-Down Roll-Up Crossjoin Cross-Join Projektion zweier Dimensionen in die Ebene, Erzeugung aller möglichen Kombinationen 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten MDX: Beispiel CROSSJOIN Drill-Down Roll-Up 09.06.2005 Anfragen an multidimensionale Daten
MDX: weitere Funktionen TOPCOUNT Ergebnisbereich einer Dimension einschränken FILTER Einschränkung über beliebige Bedingungen + viele weitere Funktionen sehr mächtige Sprache mit hoher Komplexität 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Inhaltsübersicht Motivation OLAP-Operationen Umsetzung in Standards SQL MDX Anfragetypen und -verarbeitung Fragen? / Diskussion! 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Anfragetypen bereichsanfrage (in allen dimensionen beschränkt) häufigste anfragetypen (wieviel waschmaschinen wurden im januar verkauft) teilbereichsanfrage (nicht in allen dimensionen beschränkt) häufigste anfragetypen (wieviel artikel wurden im januar verkauft) partialmatch-anfrage (eine dimension streng begrenzt) punktanfrage (alle dimensionen streng begrenzt) zusammengesetzte anfragen unregelmäßige anfrageformen 09.06.2005 Anfragen an multidimensionale Daten
Methoden der Abfrageverarbeitung – Star Join Star Schema als Grundlage sehr große Faktentabelle kleine, voneinander unabhängige Dimensionstabellen Verbund zwischen n Dimensionstabellen und der Faktentabelle, Restriktionen über Dimensionstabellen typisches Muster für DW-Anfragen http://publib.boulder.ibm.com/infocenter/dzichelp/index.jsp?topic=/com.ibm.db2.doc.admin/bjndmstr783.htm häufigstes Anfragemuster (Anfragen an Fakten- und dimensionstabelle) charakteristika der typischen DW-Anfrage: es wird meist nur ein bestimmter in fast allen dimensionen beschränkter datenbereich abgefragt Dimensionstabelle enthält Details (Produktbeschreibung, etc.), Fremdschlüsselbeziehung zur Faktentabelle Faktentabelle enthält die eigentlich zu verwaltenden Kennzahlen 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Star Join: Aufbau SELECT-Klausel Kenngrößen Granularitäten FROM-Klausel Fakten- und Dimensionstabellen WHERE-Klausel Verbundbedingungen Restriktionen weitestgehend SFW-Schema (ganz klassisch) SUM(irgendwas), ZEIT.Tag, ZEIT.Jahr Land = „Deutschland“ AND Zeit = „2003 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Star Join: Beispiel 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 - wieviel waschgeräte im jahr 2000 in deutschland verkauft 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Star Join: Beispiel Mögliche Abarbeitungsstragie Performance-Probleme 10.000.000 Datensätze in der Tabelle Verkauf, 1/10 Geschäfte in Deutschland (10 von 100 Geschäften), 1/50 aller gespeicherten Verkaufstage im Januar (20 von 1000 Tagen), 1/20 aller Produkte Waschmaschinen (50 von 1000 Produkten) 1. Join 1000000 Tupel als Ergebnis 2. Join 20000 Tupel 3. Join 1000 Tupel Optimierung in weiteren Vorträgen vorgestellt 09.06.2005 Anfragen an multidimensionale Daten
Anfragen an multidimensionale Daten Inhaltsübersicht Motivation OLAP-Operationen Umsetzung in Standards SQL MDX Anfragetypen und -verarbeitung Fragen? / Diskussion! 09.06.2005 Anfragen an multidimensionale Daten
Fragen? Diskussion!