Mehrdimensionale Modellierung und Operationen - Universität Leipzig
Mehrdimensionale Modellierung und Operationen - Universität Leipzig
Mehrdimensionale Modellierung und Operationen - Universität Leipzig
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