14.12.2012 Aufrufe

Mehrdimensionale Modellierung und Operationen - Universität Leipzig

Mehrdimensionale Modellierung und Operationen - Universität Leipzig

Mehrdimensionale Modellierung und Operationen - Universität Leipzig

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Data Warehousing<br />

Kapitel 3: <strong>Mehrdimensionale</strong> Datenmodellierung<br />

<strong>und</strong> <strong>Operationen</strong><br />

Dr. Andreas Thor<br />

Wintersemester 2009/10<br />

<strong>Universität</strong> <strong>Leipzig</strong><br />

Institut für Informatik<br />

http://dbs.uni-leipzig.de<br />

WS09/10, © Prof. Dr. E. Rahm 3 -1 y yy<br />

3. <strong>Mehrdimensionale</strong> Datenmodellierung<br />

<strong>und</strong> <strong>Operationen</strong><br />

� Gr<strong>und</strong>lagen<br />

– Kennzahlen, Dimensionen, Cube<br />

– Cuboide / Aggregationsgitter<br />

– hierarchische Dimensionen / Konzepthierarchien<br />

� Cube-<strong>Operationen</strong><br />

� Multi-dimensionale Speicherung (MOLAP)<br />

� MDX<br />

� Relationale Repräsentation mehrdimensionaler Daten<br />

(ROLAP)<br />

– Star-Schema<br />

– Varianten: Snowflake-, Galaxien-Schema<br />

– Anfragen: Star Join, Roll-Up, Drill-Down<br />

– Cube-Operator, Rollup-Operator, Grouping Sets<br />

WS09/10, © Prof. Dr. E. Rahm 3 -2 y yy<br />

y<br />

y<br />

y


Kennzahlen<br />

� auch: Fakten, Messgrößen, Measures, Measured Facts<br />

� Kennzahl ist Größe mit konzentrierter Aussagekraft zur<br />

Diagnose, Überwachung <strong>und</strong> Steuerung eines Systems<br />

– meist betriebswirtschaftliche Größen, z.B. Umsatz / Gewinn / Rentabilität<br />

– komplexe Beziehungen zwischen Kennzahlen möglich<br />

� Kennzahlen besitzen beschreibende Attribute<br />

– z.B. Einheit, Wertebereich, Berechnungsvorschrift<br />

� Arten von Kennzahlen<br />

– additive Kennzahlen: additive Aggregation hinsichtlich aller Dimensionen<br />

möglich<br />

– semi-additive Kennzahlen: additive Aggregation nur hinsichtlich<br />

ausgewählter Dimensionen möglich<br />

– nicht-additive Kennzahlen (Bsp. Durchschnittswerte, Prozentanteile)<br />

WS09/10, © Prof. Dr. E. Rahm 3 -3 y yy<br />

Sachsen<br />

1. Quartal<br />

Wo?<br />

Wann?<br />

Dimensionen<br />

Umsatz = 67000 EUR<br />

Mit was?<br />

Bücher<br />

� Zahlenwert einer Kennzahl ohne semantischen Bezug nichtssagend<br />

� Dimensionen setzen Kennzahlen in Bezug zu Eigenschaften / sachlichen Kriterien<br />

� Dimension: Datentyp, i.a. endlich (z.B. Aufzählung)<br />

– Beispiele: Menge aller Produkte, Regionen, K<strong>und</strong>en, Zeitperioden etc.<br />

– Dimensionselement: Element / Ausprägung / Wert zu einer Dimension<br />

– Attribute: Klassifikations-/Kategorienattribute (inkl. eines<br />

Primärattributs) sowie „dimensionale Attribute“ (zusätzliche<br />

beschreibende Eigenschaften, z.B. Produktfarbe / Gewicht<br />

WS09/10, © Prof. Dr. E. Rahm 3 -4 y yy<br />

...<br />

...


Data Cube<br />

� Datenwürfel bzw. OLAP-Würfel (Cube), Data Cube<br />

– Dimensionen: Koordinaten<br />

– Kennzahlen: Zellen im Schnittpunkt der Koordinaten<br />

� Cube bezüglich Dimensionen D1, ...Dn <strong>und</strong> k Kennzahlen<br />

(Fakten):<br />

– W = { (d 1 , ... d n ), (f 1 , ... f k ), Dimensionselement d i aus D i , i= 1.. n, Kennzahlen f j , j = 1..k)}<br />

– eindeutige Zellen-Adresse: (d 1 , ... d n )<br />

– Zellen-Inhalt: (f 1 , ... f k )<br />

� n: Dimensionalität des Cube<br />

� Alternative: k Cubes mit je einer<br />

Kennzahl pro Zelle (Multi-Cube)<br />

� typischerweise 4 - 12 Dimensionen<br />

– Zeitdimension fast immer dabei<br />

– weitere Standarddimensionen:<br />

Produkt, K<strong>und</strong>e, Verkäufer, Region, Lieferant, ...<br />

WS09/10, © Prof. Dr. E. Rahm 3 -5 y yy<br />

Zeit<br />

Produkt 1<br />

Produkt 2<br />

Produkt 3<br />

563<br />

764<br />

1Q 2Q 3Q 4Q<br />

Tabellen-Darstellung von Cubes<br />

Quartal 1<br />

Quartal 2<br />

Quartal 1<br />

Quartal 2<br />

Quartal 1<br />

Quartal 2<br />

Ost Süd West<br />

y<br />

y<br />

y<br />

Region<br />

Ost<br />

West<br />

Nord<br />

Süd<br />

Sonstiges<br />

PC<br />

Video<br />

TV Produkt<br />

� direkte Umsetzung für 2 Dimensionen (2D-Sicht auf Produkt x Region)<br />

Zeit = „Quartal1“<br />

Ost Süd West<br />

Produkt 1 30 100 100<br />

Produkt 2 40 110 88<br />

Produkt 3 17 70 50<br />

Zeit = „Quartal2“<br />

� 3 Dimensionen: mehrere 2D-Tabellen bzw.<br />

geschachtelte Tabellen bzw. 3D-Cube<br />

WS09/10, © Prof. Dr. E. Rahm 3 -6 y yy<br />

30<br />

34<br />

40<br />

32<br />

17<br />

14<br />

Ost Süd West<br />

Produkt 1 34 87 60<br />

Produkt 2 32 80 103<br />

Produkt 3 14 73 60<br />

100<br />

87<br />

110<br />

80<br />

70<br />

73<br />

...<br />

100<br />

60<br />

88<br />

103<br />

50<br />

60


Zeit<br />

Lieferant = „L1“<br />

y<br />

y<br />

y<br />

Produkt<br />

Region<br />

Cube-Darstellung<br />

� 4D-Cube kann als Menge von 3D-Cubes dargestellt werden<br />

� Aggregation: Aus N-dimensionalem Cube kann Menge von<br />

(N-1)-dimensionalen Sub-Cubes oder Cuboiden („Quadern“)<br />

abgeleitet werden<br />

– Basis-Cuboid: n-dimensionaler Cube<br />

– Scheitel-Cuboid: 0-dimensionale Aggregation über alle Dimensionen<br />

– aus Basis-Cuboid lassen sich Cuboiden geringerer Dimensionsanzahl ableiten -><br />

Data Cube entspricht Verband (Lattice) von Cuboiden<br />

– N-dimensionaler Cube hat 2 N Cuboiden inkl. Basis-Cuboid (ohne Berücksichtigung von<br />

Dimensionshierarchien)<br />

Lieferant = „L2“<br />

WS09/10, © Prof. Dr. E. Rahm 3 -7 y yy<br />

y<br />

y<br />

y<br />

Lieferant = „L3“<br />

Data Cube: 3D-Beispiel mit Aggregation<br />

TV<br />

PC<br />

VCR<br />

Summe<br />

Produkt<br />

Zeit<br />

1Qtr 2Qtr 3Qtr 4Qtr<br />

Summe<br />

WS09/10, © Prof. Dr. E. Rahm 3 -8 y yy<br />

y<br />

y<br />

y<br />

Gesamtjahresabsatz<br />

für TV in Region West<br />

West<br />

Süd<br />

Ost<br />

Summe<br />

Region


Zeit<br />

Zeit,<br />

Produkt<br />

Zugehörige Cuboiden (Aggregationsgitter)<br />

All<br />

Produkt Region<br />

Zeit,<br />

Region<br />

Zeit, Produkt, Region<br />

Produkt,<br />

Region<br />

0-D (Scheitel) Cuboid<br />

1-D Cuboiden<br />

2-D Cuboiden<br />

3-D (Basis)-Cuboid<br />

WS09/10, © Prof. Dr. E. Rahm 3 -9 y yy<br />

Zeit<br />

Zeit, Produkt Zeit, Region<br />

Zeit, Produkt,<br />

Region<br />

Cube: Verband von Cuboiden<br />

All<br />

Produkt Region<br />

Zeit, Lieferant<br />

Zeit,Produkt,Lieferant<br />

Produkt, Region<br />

Zeit,Region,Lieferant<br />

Zeit, Produkt, Region, Lieferant<br />

Lieferant<br />

Produkt, Lieferant<br />

Region, Lieferant<br />

Product, Region,<br />

Lieferant<br />

0-D(Scheitel) Cuboid<br />

1-D Cuboiden<br />

2-D Cuboiden<br />

3-D Cuboiden<br />

4-D (Basis)-Cuboid<br />

WS09/10, © Prof. Dr. E. Rahm 3 -10 y yy


Dimensionshierarchien (Konzepthierarchien)<br />

� häufig hierarchische Beziehungen zwischen Dimensionsobjekten<br />

– Top-Level pro Hierarchie für alle Dimensionselemente (Gesamt, Top, All)<br />

– Primärattribut: unterste (genaueste) Stufe<br />

– funktionale Abhängigkeiten zwischen Primärattribut <strong>und</strong><br />

Klassifikationsattributen höherer Stufen<br />

� Beispiele<br />

Gesamt<br />

Jahr<br />

Quartal<br />

Monat<br />

Tag<br />

Zeit<br />

Gesamt<br />

Branche<br />

Produktgruppe<br />

Produktfamilie<br />

Produkt<br />

Produkt<br />

Region<br />

Gesamt<br />

Kontinent<br />

Land<br />

Bezirk<br />

WS09/10, © Prof. Dr. E. Rahm 3 -11 y yy<br />

Beispiel einer Konzepthierarchie (Region)<br />

� einfache Hierarchie (pro Element höchstens ein übergeordnetes<br />

Element) vs. parallele Hierarchie bzw. Halbordnung<br />

Region (Gesamt)<br />

Gebiet<br />

Ort<br />

<strong>Leipzig</strong><br />

Ost<br />

Basiselemente<br />

(unabhängige Dimensionselemente)<br />

WS09/10, © Prof. Dr. E. Rahm 3 -12 y yy<br />

Ort<br />

abgeleitete (verdichtete)<br />

Elemente


Konzepthierarchien (3)<br />

� Hierarchien: auf Schemaebene meist durch Klassifikationsattribute <strong>und</strong><br />

deren funktionalen Abhängigkeiten gegeben<br />

� Variante: Hierarchiebildung durch Wertegruppierungen /<br />

Diskretisierungen („Set-grouping Hierarchies“)<br />

– können Auswertungen vereinfachen<br />

– günstige Einteilungen auf Basis vorhandener Werte teilweise automatisch berechenbar<br />

Alter (Gesamt)<br />

0-30 (jung)<br />

0-15 16-30<br />

mittel alt<br />

31-40 ... ...<br />

WS09/10, © Prof. Dr. E. Rahm 3 -13 y yy<br />

Gesamt<br />

Cube mit hierarchischen Dimensionen<br />

Land<br />

Region<br />

Ort<br />

Monat<br />

Quartal<br />

Jahr<br />

•••<br />

Produktgruppe<br />

Branche<br />

WS09/10, © Prof. Dr. E. Rahm 3 -14 y yy<br />

Zeit<br />

Produkt<br />

Gesamt


<strong>Operationen</strong> auf Cubes<br />

� Slice: Herausschneiden von „Scheiben“ aus dem Würfel durch<br />

Einschränkung (Selektion) auf einer Dimension<br />

– Verringerung der Dimensionalität<br />

� Dice: Herausschneiden einen „Teilwürfels“ durch Selektion auf mehreren<br />

Dimensionen<br />

� unterschiedlichste mehrdimensionale Aggregationen / Gruppierungen<br />

� Pivot (Austausch von Dimensionen), Sortierung, Top-n-Anfragen, ...<br />

Regionalleiter-Sicht<br />

Produktleiter-Sicht<br />

Zeit<br />

Umsatzdaten<br />

Region<br />

Produkt<br />

Controller-<br />

Sicht<br />

Ad-Hoc-<br />

Sicht<br />

WS09/10, © Prof. Dr. E. Rahm 3 -15 y yy<br />

Beispiele: Slice / Pivot<br />

Quelle: J. Han, M. Kamber: Data<br />

Mining,Morgan Kaufmann, 2001<br />

WS09/10, © Prof. Dr. E. Rahm 3 -16 y yy


Beispiel: Dice<br />

WS09/10, © Prof. Dr. E. Rahm 3 -17 y yy<br />

Navigation in Hierarchien<br />

� Drill-Down<br />

– Navigation nach „unten“ in der Hierarchie<br />

– Erhöhung des Detailgrad: von verdichteten Daten zu weniger verdichteten/aggregierten<br />

Daten<br />

� Roll-Up (Drill-Up)<br />

– Navigation nach „oben“ in der Hierarchie<br />

– von weniger verdichteten (aggregierten) Daten zu stärker verdichteten Daten<br />

Region (Gesamt)<br />

Land<br />

Ort<br />

Drill across<br />

Roll-Up<br />

Drill-Down<br />

WS09/10, © Prof. Dr. E. Rahm 3 -18 y yy


Roll-Up<br />

WS09/10, © Prof. Dr. E. Rahm 3 -19 y yy<br />

Drill-Down<br />

WS09/10, © Prof. Dr. E. Rahm 3 -20 y yy


Drill-Down / Roll-Up (2D)<br />

Produktgruppe Ost Süd Nord West<br />

Elektronik 1800 1500 1450 2000<br />

Spielwaren 500 1700 600 1500<br />

Kleidung 1200 1200 400 1000<br />

Drill-Down Roll-Up<br />

Elektronik Ost Süd Nord West<br />

TV 800<br />

DVD-Player 700<br />

Camcorder 300<br />

WS09/10, © Prof. Dr. E. Rahm 3 -21 y yy<br />

Aggregation: 2D-Beispiel<br />

� Summenbildung<br />

Produktgruppe Ost Süd Nord West Summe<br />

Elektronik 1800 1500 1450 2000 6750<br />

Spielwaren 500 1700 600 1500 4300<br />

Kleidung 1200 1200 400 1000 3800<br />

Summe 3500 4400 2450 4500 14850<br />

� Vorberechnung (Materialisierung) der Aggregationen zur<br />

schnellen Beantwortung von Aggregationsanfragen<br />

� hoher Speicher- <strong>und</strong> Aktualisierungsaufwand (bei vielen<br />

Dimensionselementen) ermöglicht nur kleinen Teil benötigter<br />

Aggegationen vorzuberechnen<br />

WS09/10, © Prof. Dr. E. Rahm 3 -22 y yy


Größe der Cubes<br />

� Größe der Basis-Cuboids<br />

– Anzahl der Zellen entspricht Produkt der Dimensionskardinalitäten D i , i=1..n<br />

– Beispiel: 1.000 Tage, 100.000 Produkte, 1 Million K<strong>und</strong>en<br />

– jede weitere Dimension, z.B. Region oder Verkäufer, führt zu einer Vervielfachung des Datenraumes<br />

� Vorberechnung von (aggregierten) Cuboiden erhöht Speicherbedarf<br />

� Größe eines hierarchisch aggregierten Cubes<br />

– Aggregierung für jedes Dimensionselement auf einer höheren Hierarchiestufe möglich<br />

– Kombinationsmöglichkeit mit jedem Element auf einer der Hierarchiestufen der anderen n-1 Dimensionen<br />

� Anzahl Cuboiden bei n-dimensionalem Cube:<br />

Gesamt<br />

Quartal<br />

Monat<br />

L i : #Ebenen von Dimension i (ohne Top-Level)<br />

Tag<br />

Zeit<br />

1<br />

12<br />

36<br />

1000<br />

Gesamt<br />

Branche<br />

Produktgruppe<br />

Produkt<br />

Produkt<br />

Gesamt<br />

K<strong>und</strong>engruppe<br />

Einzelk<strong>und</strong>e<br />

K<strong>und</strong>e<br />

WS09/10, © Prof. Dr. E. Rahm 3 -23 y yy<br />

1<br />

50<br />

= ∏ ( + 1)<br />

= 1<br />

n<br />

T L<br />

i<br />

i<br />

5.000<br />

100.000<br />

1<br />

10.000<br />

1 Million<br />

Umsetzung des multi-dimensionalen Modells<br />

� Aspekte<br />

– Speicherung der Daten<br />

– Formulierung / Ausführung der <strong>Operationen</strong><br />

� MOLAP: Direkte Speicherung in multi-dimensionalen<br />

Speicherungsstrukturen<br />

– Cube-<strong>Operationen</strong> einfach formulierbar <strong>und</strong> effizient ausführbar<br />

– begrenzte Skalierbarkeit auf große Datenmengen<br />

� ROLAP: relationale Speicherung der Daten in Tabellen<br />

– effiziente Speicherung sehr großer Datenmengen<br />

– umständliche Anfrageformulierung<br />

– Standard-SQL nicht ausreichend (nur 1-dimensionale Gruppierung, ...)<br />

� HOLAP: hybride Lösung<br />

– relationale Speicherung der Detail-Daten, multidimensionale Zugriffsschnittstelle<br />

– unterschiedliche Kombinationen mit multidimensionaler Speicherung / Auswertung von<br />

aggregierten Daten<br />

� Vorberechnung von Aggregationen erforderlich für ausreichende<br />

Leistung<br />

WS09/10, © Prof. Dr. E. Rahm 3 -24 y yy


Multi-dimensionale Datenspeicherung<br />

� Datenspeicherung in multi-dimensionaler Matrix<br />

– direkte Umsetzung der logischen Cube-Sicht<br />

– Vorab-Berechnung <strong>und</strong> Speicherung der Kennzahlen basierend auf dem Kreuzprodukt aller<br />

Wertebereiche der Dimensionen<br />

– schneller direkter Zugriff auf jede Kennzahl über Indexposition (x 1 , x 2 , ... x n )<br />

multi-dimensional (Kreuztabelle)<br />

Sachsen Brandenburg Thüringen<br />

TV 100 150 200<br />

DVD-Player 50 170 150<br />

Camcorder 20 120 100<br />

relational<br />

Produkt Region Umsatz<br />

TV Brandenburg 150<br />

Camcorder Sachsen 20<br />

... ... ...<br />

Anfragen:<br />

- Wie hoch ist der Umsatz für DVD-Player in Thüringen<br />

- Wie hoch ist der Gesamtumsatz für Camcorder?<br />

WS09/10, © Prof. Dr. E. Rahm 3 -25 y yy<br />

Multi-dimensionale Datenspeicherung (2)<br />

� mehrdimensionale Speicherung führt oft zu dünn besetzten Matrizen<br />

� Beispiel (K<strong>und</strong>enumsätze nach Regionen)<br />

�<br />

REGION<br />

multi-dimensional (2-dimenstional)<br />

K<strong>und</strong>e B S NRW SH BW SA MVP HH TH<br />

K<strong>und</strong>e 1 100 - - - - - - - -<br />

K<strong>und</strong>e 2 - - 150 - - - - - -<br />

K<strong>und</strong>e 3 - - - - 200 - - - -<br />

K<strong>und</strong>e 4 - 50 - - - - - - -<br />

K<strong>und</strong>e 5 - - - 170 - - - - -<br />

K<strong>und</strong>e 6 - - - - - - - - 100<br />

K<strong>und</strong>e 7 - - - - - 20 - - -<br />

K<strong>und</strong>e 8 - - - - - - 120 - -<br />

K<strong>und</strong>e 9 - - - - - - - 100 -<br />

relational<br />

K<strong>und</strong>en Region Umsatz<br />

K<strong>und</strong>e 1 B 100<br />

K<strong>und</strong>e 2 NRW 150<br />

K<strong>und</strong>e 3 BW 200<br />

K<strong>und</strong>e 4 S 50<br />

K<strong>und</strong>e 5 SH 170<br />

K<strong>und</strong>e 6 TH 100<br />

K<strong>und</strong>e 7 SA 20<br />

K<strong>und</strong>e 8 MVP 120<br />

K<strong>und</strong>e 9 HH 100<br />

� vollständig besetzte Matrizen i.a. nur für höhere Dimensionsebenen<br />

� Unterstützung dünn besetzter Matrizen erforderlich (Leistungseinbussen)<br />

– Zerlegung eines Cubes in Sub-Cubes („chunks“), die in Hauptspeicher passen<br />

– zweistufige Adressierung: Chunk-Id, Zelle innerhalb Chunk<br />

WS09/10, © Prof. Dr. E. Rahm 3 -26 y yy


Sprachansatz MDX*<br />

� MDX: MultiDimensional eXpressions<br />

– Microsoft-Spezifikation für Cube-Zugriffe / Queries im Rahmen von OLE<br />

DB for OLAP<br />

– an SQL angelehnt<br />

– Extraktion von aggregierten Sub-Cubes / Cuboiden aus Cubes<br />

� Unterstützung durch Microsoft <strong>und</strong> zahlreiche Tool-<br />

Anbieter<br />

� Hauptanweisung<br />

SELECT [ [, ...]]<br />

FROM []<br />

[WHERE []]<br />

– Axis_specification: Auszugebende Dimensionselemente<br />

– 5 vordefinierte Achsen: columns, rows, pages, chapters, and sections<br />

– Slicer: Auswahl der darzustellenden Werte<br />

* http://msdn.microsoft.com/en-us/library/ms145506.aspx<br />

WS09/10, © Prof. Dr. E. Rahm 3 -27 y yy<br />

MDX: Beispiele<br />

SELECT Region.CHILDREN ON COLUMNS,<br />

Produkt.CHILDREN ON ROWS<br />

FROM Verkauf<br />

WHERE (Umsatz, Zeit.[2007])<br />

SELECT Measures.MEMBERS ON COLUMNS,<br />

TOPCOUNT(Filiale.Ort.MEMBERS, 10, Measures.Anzahl) ON ROWS<br />

FROM Verkauf<br />

WS09/10, © Prof. Dr. E. Rahm 3 -28 y yy


ER-Diagramm eines multi-dimensionalen<br />

Datenmodells<br />

K<strong>und</strong>enNr<br />

K<strong>und</strong>enName<br />

Geschlecht<br />

ProduktNr<br />

ProduktName<br />

Produktgruppe<br />

K<strong>und</strong>e<br />

Verkauf<br />

Anzahl Umsatz<br />

Datum-ID<br />

WS09/10, © Prof. Dr. E. Rahm 3 -29 y yy<br />

Zeit<br />

Produkt Filialen<br />

Jahr<br />

Tag<br />

Monat<br />

Fname<br />

Relationale Speicherung: Star-Schema<br />

� Faktentabelle bildet Zentrum des Star-Schemas <strong>und</strong> enthält die Detail-Daten<br />

mit den zu analysierenden Kennzahlen<br />

� 1 Dimensionstabelle pro Dimension, die nur mit Faktentabelle verknüpft ist<br />

(-> sternförmige Anordnung der Tabellen)<br />

K<strong>und</strong>e<br />

Produkt<br />

K<strong>und</strong>enNr<br />

K<strong>und</strong>enName<br />

Geschlecht<br />

Alter<br />

ProduktNr<br />

ProduktName<br />

Produkttyp<br />

Branche<br />

Hersteller<br />

Farbe<br />

Preis<br />

1<br />

1 1<br />

n n<br />

Verkauf<br />

K<strong>und</strong>enNr<br />

ProduktNr<br />

Datum<br />

Filiale<br />

Anzahl<br />

Umsatz<br />

n n<br />

Datum<br />

Tag<br />

Monat<br />

Quartal<br />

Jahr<br />

Fname<br />

Ort<br />

Land<br />

Region<br />

WS09/10, © Prof. Dr. E. Rahm 3 -30 y yy<br />

Land<br />

Dimensionstabelle Faktentabelle Dimensionstabelle<br />

1<br />

Zeit<br />

Ort<br />

Filialen


Beispielausprägungen<br />

Verkauf<br />

Datum Filiale ProduktNr K<strong>und</strong>enNr Anzahl Umsatz<br />

7654 <strong>Leipzig</strong>4 1847 4711 1 24000<br />

... ... ... ... ... ...<br />

Filialen<br />

FName Ort Land Region<br />

<strong>Leipzig</strong>4<br />

...<br />

<strong>Leipzig</strong><br />

...<br />

Sachsen<br />

...<br />

Ost<br />

...<br />

K<strong>und</strong>e<br />

K<strong>und</strong>enNr Name Geschlecht Alter<br />

WS09/10, © Prof. Dr. E. Rahm 3 -31 y yy<br />

4711<br />

...<br />

Weber<br />

...<br />

Zeit<br />

Datum Tag Monat Jahr Quartal ...<br />

7654<br />

...<br />

25<br />

...<br />

April<br />

...<br />

Produkt<br />

ProduktNr Produktname Produkttyp Hersteller Farbe Preis<br />

1847<br />

...<br />

Passat XY<br />

...<br />

Auto<br />

...<br />

2005<br />

...<br />

2<br />

...<br />

VW<br />

...<br />

...<br />

M<br />

...<br />

Blau<br />

...<br />

39<br />

...<br />

27999<br />

...<br />

Star-Schema (2)<br />

� Formale Definition: Star-Schema besteht aus einer Menge<br />

von Tabellen D 1, ...D n, F mit<br />

– Dimensionstabellen D i bestehend aus (i.a. künstlichen) Primärschlüssel d i <strong>und</strong><br />

Dimensionsattributen<br />

– Faktentabelle F bestehend aus Fremdschlüsseln d 1 , ... d n sowie Meßgrößen<br />

(Kennzahlen) als weiteren Attributen<br />

– Die Dimensionstabellen sind i.a. denormalisiert, d.h. nicht in dritter Normalform<br />

� Beobachtungen<br />

– Anzahl der Datensätze in Faktentabelle entspricht Anzahl der belegten Zellen einer<br />

multi-dimensionalen Matrix<br />

– leere Dimensionskombinationen unproblematisch, da nur relevante Kombinationen<br />

in der Faktentabelle auftreten.<br />

– dennoch oft riesige Faktentabellen<br />

– Dimensionstabellen vergleichsweise klein, teilweise jedoch auch umfangreich<br />

(K<strong>und</strong>en, Artikel etc.)<br />

WS09/10, © Prof. Dr. E. Rahm 3 -32 y yy


Snowflake-Schema<br />

� explizite Repräsentation der Dimensionshierarchien<br />

� normalisierte Dimensionstabellen<br />

– leicht geringere Red<strong>und</strong>anz, geringerer Änderungsaufwand<br />

– erhöhte Zugriffskosten (höherer Join-Aufwand)<br />

� Star-Schema ist Snowflake-Schema meist vorzuziehen<br />

PGruppe<br />

Produktgruppe<br />

Branche<br />

K<strong>und</strong>e<br />

K<strong>und</strong>enNr<br />

K<strong>und</strong>enName<br />

Geschlecht<br />

Alter<br />

Produkt<br />

ProduktNr<br />

ProduktName<br />

Produkttyp<br />

Hersteller<br />

Farbe<br />

Preis<br />

Verkauf<br />

K<strong>und</strong>enNr<br />

ProduktNr<br />

Datum<br />

Filiale<br />

Anzahl<br />

Umsatz<br />

Faktentabelle<br />

Datum<br />

Tag<br />

Monat<br />

Jahr<br />

Fname<br />

Ort<br />

WS09/10, © Prof. Dr. E. Rahm 3 -33 y yy<br />

Zeit<br />

Filialen<br />

MonatQ<br />

Monat<br />

Quartal<br />

OrtL<br />

Ort<br />

Land<br />

Galaxien-Schema<br />

� Data Warehouses benötigen meist mehrere Faktentabellen<br />

-> Multi-Star-Schema (Galaxien-Schema, „Fact Constellation Schema“)<br />

� gemeinsame Nutzung von Dimensionstabellen<br />

� Speicherung vorberechneter Aggregate<br />

– separate Faktentabelle<br />

– im Rahmen der Faktentabelle mit Detail-Daten<br />

K<strong>und</strong>e<br />

Filiale<br />

Zeit<br />

Verkauf Einkauf<br />

Produkt<br />

Lieferant<br />

Land<br />

Region<br />

WS09/10, © Prof. Dr. E. Rahm 3 -34 y yy


Behandlung von Änderungen in Dimensionen<br />

� Änderungsarten<br />

– neue Dimensionselemente (z.B. neue Produktversion)<br />

– Änderung von Werten zu einem Dimensionselement (z.B. neuer<br />

Familienstand/Wohnort von K<strong>und</strong>en)<br />

– neue Hierarchiestufe einer Dimension<br />

– neue Dimension<br />

� Behandlung auf Schema-Ebene (Schema-Evolution) oder<br />

Tupel-Ebene<br />

� Änderung von Dimensionselementen<br />

– Lösung 1: Überschreiben der alten Werte (Auswertungen für ältere Zeiträume sind<br />

verfälscht)<br />

– Lösung 2: Versionierung von Dimensionselementen auf Tupel-Ebene, z.B.<br />

erweiterte Schlüsselwerte<br />

– Lösung 3: Versionierung auf Schema-Ebene (Neue Zeitattribute für Gültigkeitszeit,<br />

Änderungszeit)<br />

WS09/10, © Prof. Dr. E. Rahm 3 -35 y yy<br />

Anfragen auf dem Star-Schema<br />

� Star-Join<br />

– sternförmiger Join der (relevanten) Dimensionstabellen mit der Faktentabelle<br />

– Einschränkung der Dimensionen<br />

– Verdichtung der Kennzahlen durch Gruppierung <strong>und</strong> Aggregation<br />

� Allgemeine Form<br />

select g 1, ... g k, agg(f 1), ... agg (f m)<br />

from D 1, ..., D n, F<br />

where and<br />

... and<br />

and<br />

D 1.d 1 = F.d 1 and<br />

... and<br />

D n.d n = F.d n<br />

group by g 1, ... g k<br />

sort by ...;<br />

aggregierte Kennzahlen<br />

Relationen des Star-Schemas<br />

Join-Bedingungen<br />

Ergebnis-Dimensionalität<br />

WS09/10, © Prof. Dr. E. Rahm 3 -36 y yy


Beispiel eines Star-Join<br />

� In welchen Jahren wurden von weiblichen K<strong>und</strong>en in Sachsen im<br />

1. Quartal die meisten Autos gekauft?<br />

select z.Jahr as Jahr, sum (v.Anzahl) as Gesamtzahl<br />

from Filialen f, Produkt p, Zeit z, K<strong>und</strong>en k, Verkauf v<br />

where z.Quartal = 1 and k.Geschlecht = ’W’ and<br />

p.Produkttyp = ’Auto’ and f.Land = ’Sachsen’ and<br />

v.Datum = z.Datum and v.ProduktNr = p.ProduktNr and<br />

v.Filiale = f. FName and v.K<strong>und</strong>enNr = k.K<strong>und</strong>enNr<br />

group by z.Jahr<br />

order by Gesamtzahl Descending;<br />

Jahr Gesamtzahl<br />

2004<br />

2005<br />

2003<br />

745<br />

710<br />

650<br />

WS09/10, © Prof. Dr. E. Rahm 3 -37 y yy<br />

<strong>Mehrdimensionale</strong> Aggregationen: Group-By<br />

� Attributanzahl in group by-Klausel bestimmt Dimensionalität<br />

select Hersteller, Jahr, sum (Anzahl) as Anzahl<br />

from Verkauf v, Produkt p, Zeit z<br />

where v.ProduktNr = p.ProduktNr and<br />

v.Datum= z.Datum and p.Produkttyp = ’Auto’<br />

group by Hersteller, Jahr;<br />

select Hersteller, sum (Anzahl) as Anzahl<br />

from Verkauf v, Produkt p<br />

where v. Produkt = p. ProduktNr and<br />

and p. Produkttyp = ’Auto’<br />

group by Hersteller;<br />

select sum (Anzahl) as Anzahl<br />

from Verkauf v, Produkt p<br />

where v. Produkt = p. ProduktNr and<br />

p. Produkttyp = ’Auto’;<br />

Hersteller Jahr Anzahl<br />

VW<br />

VW<br />

VW<br />

Opel<br />

Opel<br />

Opel<br />

BMW<br />

BMW<br />

BMW<br />

Ford<br />

Ford<br />

Ford<br />

2003<br />

2004<br />

2005<br />

2003<br />

2004<br />

2005<br />

2003<br />

2004<br />

2005<br />

2003<br />

2004<br />

2005<br />

2.000<br />

3.000<br />

3.500<br />

1.000<br />

1.000<br />

1.500<br />

500<br />

1.000<br />

1.500<br />

1.000<br />

1.500<br />

2.000<br />

WS09/10, © Prof. Dr. E. Rahm 3 -38 y yy


Relationale Speicherung aggregierter Werte<br />

� Kreuztabelle (Crosstab-Darstellung)<br />

Jahr<br />

Hersteller<br />

2003 2004 2005 Σ<br />

VW 2.000 3.000 3.500 8.500<br />

Opel 1.000 1.000 1.500 3.500<br />

BMW 500 1.000 1.500 3.000<br />

Ford 1.000 1.500 2.000 4.500<br />

Σ 4.500 6.500 8.500 19.500<br />

� relationale Darstellung (2D-Cube)<br />

Hersteller Jahr Anzahl<br />

VW<br />

VW<br />

VW<br />

Opel<br />

Opel<br />

Opel<br />

BMW<br />

BMW<br />

BMW<br />

Ford<br />

Ford<br />

Ford<br />

2003<br />

2004<br />

2005<br />

2003<br />

2004<br />

2005<br />

2003<br />

2004<br />

2005<br />

2003<br />

2004<br />

2005<br />

2.000<br />

3.000<br />

3.500<br />

1.000<br />

1.000<br />

1.500<br />

500<br />

1.000<br />

1.500<br />

1.000<br />

1.500<br />

2.000<br />

VW ALL 8.500<br />

Opel ALL 3.500<br />

BMW ALL 3.000<br />

Ford ALL 4.500<br />

ALL 2003 4.500<br />

ALL 2004 6.500<br />

WS09/10, © Prof. Dr. E. Rahm 3 -40 y yy<br />

ALL 2005 8.500<br />

ALL ALL 19.500<br />

Materialisierung von Aggregaten<br />

create table Auto2DCube (Hersteller varchar (20), Jahr integer, Anzahl integer);<br />

insert into Auto2DCube<br />

(select p.Hersteller, z.Jahr, sum (v. Anzahl)<br />

from Verkauf v, Produkt p, Zeit z<br />

where v.ProduktNr = p.ProduktNr and p.Produkttyp = ’Auto’ and v.Datum = z.Datum<br />

group by z.Jahr, p.Hersteller)<br />

union<br />

(select p.Hersteller, ALL, sum (v.Anzahl)<br />

from Verkauf v, Produkt p<br />

where v.ProduktNr = p.ProduktNr and p.Produkttyp = ’Auto’<br />

group by p. Hersteller)<br />

union<br />

(select ALL, z. Jahr, sum (v.Anzahl)<br />

from Verkauf v, Produkt p, Zeit p<br />

where v.ProduktNr = p ProduktNr and p.Produkttyp = ’Auto’ and v.Datum = z.Datum<br />

group by z. Jahr)<br />

union<br />

(select ALL, ALL, sum (v.Anzahl)<br />

from Verkauf v, Produkt p<br />

where v.ProduktNr = p. ProduktNr and p.Produkttyp = ’Auto’);<br />

WS09/10, © Prof. Dr. E. Rahm 3 -41 y yy


Cube-Operator<br />

� SQL-Erweiterung um CUBE-Operator für n-dimensionale<br />

Gruppierung <strong>und</strong> Aggregation<br />

– Syntax: Group By CUBE (D 1 , D 2 , ... D n )<br />

– generiert als Ergebnis eine Tabelle mit aggregierten Ergebnissen (ALL-Tupel)<br />

– implementiert in MS SQL-Server, DB2, Oracle<br />

� erspart mehrfache Berechnung der Aggregationen<br />

– erspart 2 n union-Anfragen (bei n Attributen in der group by-Klausel / n Dimensionen)<br />

– einfache Formulierung von Anfragen<br />

– effiziente Berechenbarkeit durch DBS (Wiederverwendung von Zwischenergebnisse)<br />

� Beispiel<br />

select p. Hersteller, z. Jahr, k.Geschlecht, sum (v. Anzahl)<br />

from Verkauf v, Produkt p, Zeit z, K<strong>und</strong>e k<br />

where v.ProduktNr = p. ProduktNr<br />

and p.Produkttyp = ’Auto’ and v.Datum = z.Datum<br />

group by cube (p.Hersteller, z.Jahr, k.Geschlecht);<br />

WS09/10, © Prof. Dr. E. Rahm 3 -42 y yy<br />

Hersteller Jahr Geschl Anzahl<br />

VW<br />

VW<br />

VW<br />

VW<br />

VW<br />

...<br />

Opel<br />

Opel<br />

...<br />

BMW<br />

...<br />

2003<br />

2003<br />

2004<br />

2004<br />

2005<br />

...<br />

2003<br />

2003<br />

...<br />

...<br />

...<br />

3D-Cube in relationaler Form<br />

m<br />

w<br />

m<br />

w<br />

m<br />

...<br />

m<br />

w<br />

...<br />

...<br />

...<br />

1300<br />

700<br />

1900<br />

1100<br />

2300<br />

...<br />

800<br />

200<br />

...<br />

...<br />

...<br />

CUBE<br />

Hersteller Jahr Geschl Anzahl<br />

WS09/10, © Prof. Dr. E. Rahm 3 -43 y yy<br />

VW<br />

VW<br />

...<br />

2003<br />

2003<br />

...<br />

m<br />

w<br />

...<br />

1300<br />

700<br />

...<br />

VW 2003 ALL 2.000<br />

... ... ALL ...<br />

Ford 2005 ALL 2.000<br />

VW ALL m 5.500<br />

... ... ... ...<br />

Ford ALL w ...<br />

ALL 2001 m ...<br />

... ...<br />

VW ALL ALL 8.500<br />

... ...<br />

ALL<br />

...<br />

2001 ALL ...<br />

ALL<br />

...<br />

ALL m ...<br />

ALL ALL ALL 19.500


(Hersteller, ALL, ALL)<br />

(Hersteller, Jahr, ALL)<br />

Cube-Aggregatgitter<br />

(ALL, ALL, ALL)<br />

(ALL, Jahr, ALL)<br />

(Hersteller, ALL, Geschlecht)<br />

(Hersteller, Jahr, Geschlecht)<br />

� niedrig-dimensionale Aggregate / Cuboiden können aus höherdimensionalen<br />

abgeleitet werden<br />

� Materialisierung / Caching häufiger benutzter Aggregate<br />

ermöglicht Anfrageoptimierung<br />

(ALL, ALL, Geschlecht)<br />

(ALL, Jahr, Geschlecht)<br />

Dimensionalität<br />

WS09/10, © Prof. Dr. E. Rahm 3 -44 y yy<br />

ROLLUP-Operator<br />

� CUBE-Operator: inter-dimensionale Gruppierung / Aggregierung<br />

– generiert Aggregate für alle 2 n Kombinationsmöglichkeiten bei n<br />

Dimensionen<br />

– zu aufwendig für Roll-Up / Drill-Down innerhalb einer Dimension<br />

� ROLLUP-Operator: intra-dimensionale Aggregierung<br />

� ROLLUP zu a1, a2, ... , an, f ()<br />

liefert nur die Cuboide<br />

a1, a2, ... , an-1, ALL, f (),<br />

...<br />

a1, ALL, ... , ALL, f (),<br />

ALL, ALL, ... , ALL, f ()<br />

� Reihenfolge der Attribute relevant!<br />

WS09/10, © Prof. Dr. E. Rahm 3 -45 y yy<br />

0<br />

1<br />

2<br />

3


ROLLUP-Operator: Beispiel<br />

select p. Hersteller, p. Marke, p.Farbe, sum (v. Anzahl)<br />

from Verkauf v, Produkt p<br />

where v.ProduktNr = p. ProduktNr<br />

and p.Hersteller in („VW“,“Opel“)<br />

group by rollup (p.Hersteller, p.Marke, p.Farbe);<br />

(ALL, ALL, ALL)<br />

(Hersteller, ALL, ALL)<br />

(Hersteller, Marke, ALL)<br />

(Hersteller, Marke, Farbe)<br />

WS09/10, © Prof. Dr. E. Rahm 3 -46 y yy<br />

Hersteller Marke Farbe Anzahl<br />

VW<br />

VW<br />

VW<br />

VW<br />

VW<br />

VW<br />

VW<br />

...<br />

Opel<br />

Opel<br />

Opel<br />

...<br />

Passat<br />

Passat<br />

Passat<br />

Golf<br />

Golf<br />

Golf<br />

...<br />

...<br />

Vectra<br />

Vectra<br />

Vectra<br />

...<br />

rot<br />

weiß<br />

blau<br />

rot<br />

weiß<br />

blau<br />

rot<br />

...<br />

rot<br />

weiß<br />

blau<br />

800<br />

600<br />

600<br />

1.200<br />

800<br />

1.000<br />

1.400<br />

...<br />

400<br />

300<br />

300<br />

ROLLUP-Beispiel<br />

ROLLUP<br />

WS09/10, © Prof. Dr. E. Rahm 3 -47 y yy<br />

0<br />

1<br />

2<br />

3<br />

Hersteller Marke Farbe Anzahl<br />

VW<br />

VW<br />

VW<br />

VW<br />

VW<br />

VW<br />

VW<br />

...<br />

Opel<br />

Opel<br />

Opel<br />

...<br />

Passat<br />

Passat<br />

Passat<br />

Golf<br />

Golf<br />

Golf<br />

...<br />

...<br />

Vectra<br />

Vectra<br />

Vectra<br />

...<br />

rot<br />

weiß<br />

blau<br />

rot<br />

weiß<br />

blau<br />

rot<br />

...<br />

rot<br />

weiß<br />

blau<br />

800<br />

600<br />

600<br />

1.200<br />

800<br />

1.000<br />

1.400<br />

...<br />

400<br />

300<br />

300<br />

VW Passat ALL 2.000<br />

VW Golf ALL 3.000<br />

VW ... ALL 3.500<br />

Opel Vectra ALL 1.600<br />

Opel ... ALL ...<br />

VW ALL ALL 8.500<br />

Opel ALL ALL 3.500<br />

ALL ALL ALL 12.000


Grouping Sets<br />

� mehrere Gruppierungen pro Anfrage<br />

GROUP BY GROUPING SETS ( )<br />

Gruppenspezifikation: ( ) |<br />

CUBE |<br />

ROLLUP <br />

leere Spezifikationsliste ( ) möglich: Aggregation über gesamte Tabelle<br />

� Beispiel<br />

select p. Hersteller, p.Farbe, sum (v. Anzahl)<br />

from Verkauf v, Produkt p<br />

where v.ProduktNr = p. ProduktNr and<br />

p.Hersteller in („VW“,“Opel“)<br />

groupbygroupingsets((p.Hersteller), (p.Farbe));<br />

Hersteller Farbe Anzahl<br />

� CUBE, ROLLUP, herkömmliches Group-By entsprechen speziellen<br />

Grouping-Sets<br />

WS09/10, © Prof. Dr. E. Rahm 3 -48 y yy<br />

WS09/10, © Prof. Dr. E. Rahm 3 -49 y yy<br />

VW<br />

Opel<br />

ALL<br />

ALL<br />

ALL<br />

ALL<br />

ALL<br />

blau<br />

rot<br />

weiß<br />

8500<br />

3500<br />

3100<br />

6200<br />

2700<br />

Einzelschritte beim Entwurf eines<br />

multi-dimensionalen Schemas<br />

� Welche Geschäftsprozesse sollen modelliert <strong>und</strong> analysiert werden?<br />

� Festlegung der Kennzahlen<br />

– Wo kommen sie her?<br />

– Granularität der Fakten. Welche OLAP-Genauigkeit ist notwendig?<br />

� Bestimmung der Dimensionen<br />

– Gemeinsame Eigenschaften der Kennzahlen<br />

– Spezifikation der Dimensionsattribute<br />

– Konstante vs. sich ändernde Dimensionsattribute<br />

– Etablierung / Verwendung einer einheitlichen Terminologie<br />

� Physische Design-Entscheidungen<br />

– Architektur (ROLAP/MOLAP/HOLAP)<br />

– vorzuberechnende Aggregationen<br />

– Speicherbedarf ermitteln<br />

� Festlegung der Dauer der Historie, Behandlung alter Daten<br />

� Aktualisierungsfrequenz bezüglich der Quellsysteme


Zusammenfassung<br />

� Einfachheit des multi-dimensionalen <strong>Modellierung</strong>sansatzes<br />

wesentlich für Erfolg von Data Warehousing<br />

– Cube-Repräsentation mit Kennzahlen <strong>und</strong> hierarchischen Dimensionen<br />

– <strong>Operationen</strong>: Slice and Dice, Roll-Up, Drill-Down, ...<br />

� Multidimensionale Speicherung<br />

– Problem dünn besetzter Matrizen<br />

– primär für aggregierte Daten relevant, weniger zur Verwaltung von Detail-Fakten<br />

� Relationale Speicherung auf Basis von Star-Schemas<br />

– Unterstützung großer Datenmengen, Skalierbarkeit<br />

– neue Anforderungen bezüglich effizienter Verarbeitung von Star-Joins, mehrdimensionale<br />

Gruppierung <strong>und</strong> Aggregation ...<br />

� Vorberechnung aggregierter Daten wesentlich für ausreichende<br />

Leistung<br />

� Sprachansätze<br />

– MDX-Anweisungen für Cubes<br />

– SQL-Erweiterungen: CUBE-, ROLLUP-Operator<br />

WS09/10, © Prof. Dr. E. Rahm 3 -50 y yy<br />

Übungsaufgabe: Warehouse-Entwurf<br />

a) Erstellen Sie ein Star-Schema für ein großes deutsches Telefonunternehmen.<br />

– Es soll Auswertungen über Anrufhäufigkeiten, generierte Umsätze <strong>und</strong> Dauer der<br />

Gespräche für die einzelnen Tarifarten über unterschiedliche Zeiten (Tageszeiten,<br />

Wochentage, Monate, Jahre) ermöglichen.<br />

– Die Teilnehmer werden über ihre Adressen bzw. Telefonnummern Orten sowie<br />

B<strong>und</strong>esländern zugeordnet. Es werden die üblichen Personenmerkmale für<br />

Analysezwecke erfasst, insbesondere Alter, Geschlecht <strong>und</strong> Beruf.<br />

b) Schätzen Sie den Speicherbedarf für eine Aufzeichnungsdauer von 3 Jahren, 40<br />

Millionen Teilnehmern <strong>und</strong> durchschnittlich 10 Gesprächen pro Tag <strong>und</strong><br />

Teilnehmer.<br />

c) Wie lautet für das Schema aus a) die SQL-Anfrage zur Bestimmung des Umsatzes<br />

aller sächsischen Ferngespräche am Abend nach Tarif AKTIV++ für jeden Monat<br />

im Jahr 2007?<br />

WS09/10, © Prof. Dr. E. Rahm 3 -51 y yy


Übungsaufgabe 2<br />

� Bestimmen Sie für die gezeigte Tabelle Goals das Ergebnis<br />

folgender SQL-Anfragen:<br />

– Select Spieler, Saison,<br />

Sum (Anzahl) as Tore<br />

From Goals<br />

GROUP BY ROLLUP (Spieler, Saison);<br />

– Select Spieler, Saison,<br />

Sum (Anzahl) as Tore<br />

From Goals<br />

GROUP BY CUBE (Spieler, Saison);<br />

– Select Spieler, Saison, Sum (Anzahl) as Tore<br />

From Goals<br />

GROUP BY GROUPING SETS ((Spieler), (Saison),());<br />

Spieler Saison Anzahl<br />

Elber<br />

Elber<br />

Elber<br />

Scholl<br />

Scholl<br />

Scholl<br />

Scholl<br />

Scholl<br />

WS09/10, © Prof. Dr. E. Rahm 3 -52 y yy<br />

1999<br />

2000<br />

2001<br />

1997<br />

1998<br />

1999<br />

2000<br />

2001<br />

13<br />

14<br />

15<br />

5<br />

9<br />

4<br />

6<br />

9

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!