Multidimensionale Modellierung Vorlesung: Übung: Patrick Schäfer Berlin, 27. November 2017 patrick.schaefer@hu-berlin.de https://hu.berlin/vl_dwhdm17 https://hu.berlin/ue_dwhdm17
Grundlagen Fakten (Kennzahlen/Messgrößen): (Verdichtete) betriebswirtschaftliche Größe (Umsatz, Gewinn, Kosten,...) Dimensionen: Betrachtung aus unterschiedlichen Perspektiven Fakten ohne semantischen Bezug nichtssagend Dimensionen setzen Fakten in Bezug zu sachlichen Kriterien Beispiel: Produktgruppen, Regionen, Kunden, Zeit Hierarchien in Dimensionen Häufig existiert hierarchische Beziehung zwischen Dimensionen (Jahr, Quartal, Monat) Stufen beschreiben Verdichtungsgrad Darstellung über Klassifikationsschema Berlin wo? Umsatz: 12.000 Top Jahr Monat Tag Brettspiele womit? wann? 1.1.2017
Würfel (CUBE) Grundlage der multidimensionalen Analyse Kanten: Dimensionen Zellen: Fakten Dimensionalität: Anzahl der Dimensionen Es darf keine funktionale Abhängigkeit zwischen Dimensionen bestehen (Orthogonalität)
Mehrdimensionaler Würfel Zeit Verkaufsort Fakten Produkt
Konzeptionelles Modell Multidimensional Entity/Relationship (ME/R) Logisches, formales Modell Erweiterung des klassischen E/R-Modells Notationen: Fakten Klassifikationsstufe Attribut Hierarchie/ Roll-Up
Beispiel aus der Vorlesung... Menge Shop_name Preis Produktgruppe Produkt Verkauf Shop Product_name Kunde Region setzung Land Kunden-Regionen müssen gleich organisiert sein wie Sh
Logisches Modell Verwaltung multidimensionaler Daten möglich mit ROLAP (relationales OLAP): relationale Speicherung der Daten in Tabellen in RDBMS (Snowflake und Star-Schema) und SQL- Anfragesprache MOLAP (multidimensionales OLAP) Server, der Cube als mehrdimensionales Arrays (Fakten) speichert Schlecht für sparse data (NULL-values)
Snowflake Schema Explizite Repräsentation der Klassifikationsstufen Eigene Tabelle für jede Klassifikationsstufe Faktentabelle bildet Zentrum Fremdschlüssel der niedrigsten Klassifikationsstufe(n) Fremdschlüssel bilden zusammen den Primärschlüssel Eine Dimensionstabelleenthält: ID für Knoten Beschreibendes Attribut (Name, Marke, Hersteller,...) Fremdschlüssel auf übergeordnete Klassifikationsstufe Weniger Redundanz (Update-Anomalien) Höherer Join-Aufwand
Beispiel year id year productgroup id pg_name month id month year_id year pg_name month productgroup day id day month_id amount price day sales product sales product_id day_id shop_id amount price shop_name shop product_name region region_name product id product_name pg_id shop id shop_name region_id region id region_name
Star-Schema Faktentabelle bildet Zentrum Fremdschlüssel der niedrigsten Klassifikationsstufe(n) Hierarchie wird auf eine Dimensionstabelle pro Dimension abgebildet: Nur mit der Faktentabelle verknüpft Enthält Stufen-ID und Knotenattribute jeder Klassifikationsstufe Entspricht Denormalisierung der Dimensionstabellen Hohe Redundanz in Dimensionstabelle für schnellere Anfragebearbeitung
Beispiel time day_id day month_id month year_id year sales product_id day_id shop_id amount price product product_id product_name pg_id pg_name localization shop_id shop_name region_id region_name
Operationen zur Datenanalyse Wichtige Operationen auf multidimensionalen Datenstrukturen Roll-Up (Aggregation) Drill-Down (Verfeinerung) (Slicing) (Dicing)
Navigation in Hierarchien Drill-Down Hin zu weniger aggregierten Daten Z.B.: Navigation nach unten in der Hierarchie Roll-Up Hin zu stärker aggregierten Daten Z.B.: Navigation nach oben in der Hierarchie Top Jahr Monat Tag Drill-Down Roll-Up
OLAP Operatoren CUBE: Potenzmenge SELECT Hersteller, Marke, sum(<facts>) FROM <joins> GROUP BY CUBE (Hersteller, Marke) Liefert Aggregate: (Hersteller, Marke); (Hersteller); (Marke); TOP Roll-UP SELECT Hersteller, Marke, sum(<facts>) FROM <joins> GROUP BY ROLLUP (Hersteller, Marke) Liefert Aggregate: (Hersteller, Marke); (Hersteller); TOP Grouping-Sets SELECT Hersteller, Marke, sum(<facts>) FROM <joins> GROUP BY GROUPING SETS ((Hersteller, Marke), (Hersteller), (Marke), ()) Liefert Aggregate: (Hersteller, Marke); (Hersteller); (Marke); TOP
Beispiel: Entwurfsaufgabe Ein Fußballspieler schießt Tore in einem Spiel Ein Tor wird von einem Schiedsrichter gegeben Das Spiel wird von Zuschauern gesehen Der Spieler gehört zu einem Fußballteam, hat ein Geburtsdatum und eine Nationalität Die Nationalität bestimmt den Kontinent, von dem der Spieler kommt Das Fußballteam spielt in einer nationalen Liga Die Zeitdimension besteht aus Monaten, Halbjahren und Jahren
Aufgabe 1: Dimensionen und Fakten Leiten Sie aus dem Szenario folgendes ab Die Fakten Die Dimensionen Das Klassifikationsschema pro Dimension Manche Attribute können nicht sinnvoll aggregiert werden (non-dimensional)
Dimensionen und Fakten Fakt: Tor Mögliche Dimensionen: Schiedsrichter Zeit Spiel (Partie) Spieler
Klassifikationsschema (Hierarchie) Top Top Top Top Jahr Liga Kontintent Halbjahr Team Nationalität Schiedsrichter Monat Spiel Spieler
Aufgabe 2: ME/R - Diagramm Erstellen Sie ein konzeptionelles multidimensionales Modell als ME/R - Diagramm
M/ER Digramm Jahr Halbjahr Liga Name Begegnung Zuschaueranzahl Anzahl Monat Team Name Name Spiel Tor Spieler Geburtstag Schiedsrichter Name Nationalität Kontinent Name Name
Aufgabe 3: Relationales OLAP Leiten Sie aus dem konzeptionellen Modell eine relationale Repräsentation ab Einmal als Star Schema (Präfix star_ ) Einmal als SnowflakeSchema (Präfix snow_ )
Star Schema Spiel Spiel_ID Begegnung Zuschaueranzahl Zeit Monat_ID Monat Halbjahr_ID Halbjahr Jahr_ID Jahr Tor Monat_ID Spiel_ID Spieler_ID Schiedsrichter_ID Anzahl Schiedsrichter Schiedsrichter_ID Name Spieler Spieler_ID Spieler_Name Geburtsdatum Team_Name Team_ID Liga_Name Liga_ID Nationalität Nationalität_ID Kontinent Kontinent_ID
Snowflake Jahr Jahr_ID Jahr Halbjahr Halbjahr_ID Halbjahr Jahr_ID Monat Monat_ID Monat Halbjahr_ID Nationalität Nationalität_ID Nationalität Kontinent_ID Kontinent Kontinent_ID Kontinent Spiel Spiel_ID Begegnung Zuschaueranzahl Tor Monat_ID Spiel_ID Spieler_ID Schiedsrichter_ID Anzahl Spieler Spieler_ID Spieler_Name Geburtsdatum Team_ID Nationalität_ID Schiedsrichter Schiedsrichter_ID Name Team Team_ID Team_Name Liga_ID Liga Liga_ID Liga_Name
Aufgabe 4: Anfragen 1. Durchschnittliche Anzahl Tore pro Spiel und Spieler, pro Spieler und insgesamt 2. Berechnung der Gesamtanzahl Tore pro Jahr und Team und pro Jahr und Spieler
Star-Schema SELECT t.spiel_id, t.spieler_id, avg(t.anzahl) FROM Tor t GROUP BY rollup(t.spiel_id, t.spieler_id) SELECT z.jahr_id, sp.team_id, t.spieler_id, sum(t.anzahl) FROM Tor t, Spieler sp, Zeit z WHERE <joins> GROUP BY grouping set( (z.jahr_id, sp.team_id)), (z.jahr_id, t.spieler_id))
Snowflake-Schema SELECT t.spiel_id, t.spieler_id, avg(t.anzahl) FROM Tor t GROUP BY rollup(t.spiel_id, t.spieler_id) SELECT hj.jahr_id, sp.team_id, t.spieler_id, sum(t.anzahl) FROM Tor t, Spieler sp, Monat m, Halbjahr hj WHERE <joins> GROUP BY grouping set( (hj.jahr_id, sp.team_id)), (hj.jahr_id, t.spieler_id))
Fragen?