DOAG Konferenz 2012 / Brücken bauen im dimensionalen ... - Trivadis
DOAG Konferenz 2012 / Brücken bauen im dimensionalen ... - Trivadis
DOAG Konferenz 2012 / Brücken bauen im dimensionalen ... - Trivadis
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN<br />
1<br />
<strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong><br />
d<strong>im</strong>ensionalen<br />
Modell<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
<strong>DOAG</strong> <strong>Konferenz</strong> <strong>2012</strong><br />
Dani Schnider<br />
<strong>Trivadis</strong> AG<br />
Nürnberg, 22. November <strong>2012</strong>
2<br />
Dani Schnider<br />
Principal Consultant und<br />
DWH/BI Lead Architect<br />
bei <strong>Trivadis</strong> in Zürich<br />
Kursleiter für <strong>Trivadis</strong>-Kurse<br />
über Data Warehousing, SQL<br />
Opt<strong>im</strong>ierung und Oracle<br />
Warehouse Builder<br />
Co-Autor des Buches «Data<br />
Warehousing mit Oracle»<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
<strong>Trivadis</strong> makes IT easier.<br />
3<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
11 <strong>Trivadis</strong> Niederlassungen in CH, DE und AT mit<br />
über 650 Mitarbeitenden<br />
Finanziell unabhängig und nachhaltig profitabel<br />
Umsatz CHF 104 / EUR 84 Mio.<br />
Dienstleistungen für über 800 Kunden in mehr als<br />
1‘900 Projekten<br />
Über 200 Service Level Agreements<br />
Mehr als 4'000 Trainingsteilnehmer<br />
Forschungs- und Entwicklungsbudget: CHF 5.0 /<br />
EUR 4 Mio.
Application Development<br />
Business Intelligence<br />
Business Integration Services<br />
Infrastructure Engineering<br />
Managed Services<br />
Training<br />
Toolbox<br />
- standardisiert<br />
- generiert<br />
- automatisiert<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
Infrastructure<br />
Care<br />
- opt<strong>im</strong>iert<br />
- nachhaltig<br />
- modular<br />
Compliance<br />
- übersetzt<br />
- opt<strong>im</strong>iert<br />
- umfassend<br />
Application Care<br />
- planbar<br />
- effizient<br />
- nachhaltig<br />
biGenius<br />
- schnell<br />
- einfach<br />
- umfassend<br />
Comprehensive<br />
Application<br />
Development<br />
- unabhängig<br />
- kompetent<br />
- vollständig
Beispiel 1: Star Schema für <strong>DOAG</strong> <strong>Konferenz</strong><br />
DIM_DATE<br />
DIM_TIME<br />
DIM_ROOM<br />
5<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
FCT_ATTENDEES<br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_STREAM<br />
DIM_SESSION<br />
331 (...) Alfred Schlaucher<br />
342 (...) Peter Welker<br />
328 (...) Bernhard Rosenberger<br />
333 (...) Dr. Andrea Kennel<br />
341 (...) Holger Huck, Mircea Bobei<br />
336 (...) Reiner Z<strong>im</strong>mermann<br />
337 (...) Dr. Holger Friedrich<br />
356 (...) Dani Schnider<br />
358 (...) Dani Schnider<br />
350 (...) Andreas Nobbmann
Mehrfache Attribute in D<strong>im</strong>ensionen<br />
Lösungsansätze:<br />
Komma-separierte Liste?<br />
Mehrere Attribute SPEAKER_1, SPEAKER_2?<br />
Separate D<strong>im</strong>ension DIM_SPEAKER?<br />
Einschränkung auf einen (Haupt-)Referenten?<br />
Problemstellungen:<br />
L<strong>im</strong>itierung in der Anzahl<br />
Vorträge mit 3, 4, 5 Referenten?<br />
Komplexe Abfragen<br />
Alle Vorträge, bei denen Peter Welker einer der Referenten ist?<br />
6<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
Alternativen?<br />
DIM_DATE<br />
DIM_TIME<br />
DIM_ROOM<br />
7<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
FCT_ATTENDEES<br />
...<br />
SPEAKER_ID_1<br />
SPEAKER_ID_2<br />
...<br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_STREAM<br />
DIM_SPEAKER<br />
SPEAKER_ID<br />
TITLE<br />
FIRSTNAME<br />
LASTNAME<br />
COMPANY<br />
DIM_SESSION<br />
SESSION_ID<br />
TITLE<br />
ABSTRACT<br />
SPEAKER_1<br />
SPEAKER_2
8<br />
Multi-Valued Bridge Tables<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
Multi-Valued Attribute Bridge Table<br />
9<br />
FCT_ATTENDEES<br />
DIM_SESSION<br />
331 (...)<br />
342 (...)<br />
328 (...)<br />
333 (...)<br />
341 (...)<br />
336 (...)<br />
337 (...)<br />
356 (...)<br />
358 (...)<br />
350 (...)<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
BRG_SESSION<br />
_SPEAKER<br />
331 101<br />
342 102<br />
328 103<br />
333 104<br />
341 105<br />
341 106<br />
336 107<br />
337 108<br />
356 109<br />
358 109<br />
350 110<br />
Bridge Table<br />
DIM_SPEAKER<br />
101 Alfred Schlaucher<br />
102 Peter Welker<br />
103 Bernhard Rosenberger<br />
104 Dr. Andrea Kennel<br />
105 Holger Huck<br />
106 Mircea Bobei<br />
107 Reiner Z<strong>im</strong>mermann<br />
108 Dr. Holger Friedrich<br />
109 Dani Schnider<br />
110 Andreas Nobbmann
Multi-Valued D<strong>im</strong>ension Bridge Table<br />
10<br />
FCT_ATTENDEES<br />
SESS SG #Att.<br />
331 1 64<br />
342 2 82<br />
328 3 74<br />
333 4 57<br />
341 5 70<br />
336 6 81<br />
332 7 49<br />
356 8 50<br />
358 8 60<br />
350 9 78<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SESSION<br />
BRG_SPEAKER<br />
_GROUP<br />
1 101<br />
2 102<br />
3 103<br />
4 104<br />
5 105<br />
5 106<br />
6 107<br />
7 108<br />
8 109<br />
9 110<br />
Bridge Table<br />
DIM_SPEAKER<br />
101 Alfred Schlaucher<br />
102 Peter Welker<br />
103 Bernhard Rosenberger<br />
104 Dr. Andrea Kennel<br />
105 Holger Huck<br />
106 Mircea Bobei<br />
107 Reiner Z<strong>im</strong>mermann<br />
108 Dr. Holger Friedrich<br />
109 Dani Schnider<br />
110 Andreas Nobbmann
Eigenschaften von Bridge Tables<br />
Vorteile: Flexibilität<br />
Vollständige Abbildung der fachlichen Zusammenhänge möglich<br />
Keine L<strong>im</strong>itierung der Anzahl Werte<br />
Nachteile: Komplexität<br />
n-zu-n Beziehung<br />
Hohe Komplexität bei ETL (v.a. SCD2)<br />
Risiko von Mehrfachzählungen<br />
Komplexe Abfragen für Endanwender<br />
11<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
El<strong>im</strong>inierung der n-zu-n Beziehung<br />
12<br />
FCT_ATTENDEES<br />
SESS SG #Att.<br />
331 1 64<br />
342 2 82<br />
328 3 74<br />
333 4 57<br />
341 5 70<br />
336 6 81<br />
332 7 49<br />
356 8 50<br />
358 8 60<br />
350 9 78<br />
DIM_SPEAKER_GROUP<br />
1<br />
2<br />
3<br />
...<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SESSION<br />
BRG_SPEAKER<br />
_GROUP<br />
1 101<br />
2 102<br />
3 103<br />
4 104<br />
5 105<br />
5 106<br />
6 107<br />
7 108<br />
8 109<br />
9 110<br />
DIM_SPEAKER<br />
101 Alfred Schlaucher<br />
102 Peter Welker<br />
103 Bernhard Rosenberger<br />
104 Dr. Andrea Kennel<br />
105 Holger Huck<br />
106 Mircea Bobei<br />
107 Reiner Z<strong>im</strong>mermann<br />
108 Dr. Holger Friedrich<br />
109 Dani Schnider<br />
110 Andreas Nobbmann
ETL-Logik für Bridge Tables: SCD Typ 1<br />
Änderungen in D<strong>im</strong>ensionstabelle<br />
Alten Attributwert überschreiben<br />
Änderungen in Bridge Table (Gruppenzugehörigkeiten)<br />
Einfügen von neuen Gruppenmitgliedern<br />
Löschen(!) von ungültigen Gruppenmitgliedern<br />
ev. Anpassung der Gewichtung (allocation factor)<br />
13<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
ETL-Logik für Bridge Tables: SCD Typ 2<br />
Änderungen in D<strong>im</strong>ensionstabelle<br />
Neue Version in D<strong>im</strong>ensionstabelle einfügen<br />
Neue Versionen für alle Gruppenmitglieder in Bridge Table einfügen<br />
Änderungen in Bridge Table (Gruppenzugehörigkeiten)<br />
Neue Version der Gruppe in Bridge Table einfügen<br />
Neue Versionen für alle Gruppenmitglieder in Bridge Table einfügen<br />
ev. Anpassung der Gewichtung (allocation factor) in neuer Version<br />
Bei Attribute Bridge Table ev. neue Version in D<strong>im</strong>ensionstabelle<br />
Achtung!<br />
Bridge Table wächst sehr rasch!<br />
14<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
ETL-Logik für Bridge Tables: SCD Typ 2 – Beispiel<br />
BRG_SPEAKER_GROUP<br />
BRG_SPEAKER_GROUP<br />
1 1 101 101<br />
2 2 102 102<br />
3 3 103 103<br />
4 4 104 104<br />
5 5 105 105 12.06.<strong>2012</strong> 12.06.<strong>2012</strong> 10.07.<strong>2012</strong><br />
31.12.9999<br />
10.07.<strong>2012</strong><br />
5 5 106 106 12.06.<strong>2012</strong> 12.06.<strong>2012</strong> 10.07.<strong>2012</strong><br />
31.12.9999<br />
10.07.<strong>2012</strong><br />
6 6 107 107<br />
7 7 108 108<br />
8 8 109 109<br />
9 9 110 110<br />
10 111 10.07.<strong>2012</strong> 31.12.9999<br />
24.09.<strong>2012</strong><br />
10 106 10.07.<strong>2012</strong> 31.12.9999<br />
24.09.<strong>2012</strong><br />
11 111 24.09.<strong>2012</strong> 31.12.9999<br />
FCT_ATTENDEES<br />
15<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SPEAKER<br />
101 Alfred Schlaucher<br />
102 Peter Welker<br />
103 Bernhard Rosenberger<br />
104 Dr. Andrea Kennel<br />
105 Holger Huck 12.06.<strong>2012</strong> 31.12.9999<br />
10.07.<strong>2012</strong><br />
106 Mircea Bobei 12.06.<strong>2012</strong> 31.12.9999<br />
107 Reiner Z<strong>im</strong>mermann<br />
108 Dr. Holger Friedrich<br />
109 Dani Schnider<br />
110 Andreas Nobbmann<br />
111 Holger Huck (V2) 10.07.<strong>2012</strong> 31.12.9999
Anzahl Teilnehmer pro Referent<br />
16<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SESSION<br />
SELECT d.speaker_name<br />
, SUM(f.num_attendees)<br />
FCT_ATTENDEES<br />
FROM<br />
SESS<br />
fct_attendees<br />
SG #Att.<br />
f<br />
JOIN<br />
331<br />
brg_speaker_group<br />
1 64<br />
b ON (b.speaker_group_id = f.speaker_group_id)<br />
JOIN<br />
342<br />
d<strong>im</strong>_speaker<br />
2 82<br />
d ON (d.speaker_id = b.speaker_id)<br />
GROUP<br />
328<br />
BY<br />
3<br />
d.speaker_name BRG_SPEAKER<br />
74<br />
_GROUP<br />
DIM_SPEAKER<br />
333 4 57<br />
1 101<br />
101 Alfred Schlaucher<br />
341 5 70<br />
2 102<br />
102 Peter Welker<br />
336 6 81<br />
3 103<br />
103 Bernhard Rosenberger<br />
332 7 49<br />
4 104<br />
104 Dr. Andrea Kennel<br />
356 8 50<br />
5 105<br />
105 Holger Huck<br />
358 8 60<br />
5 106<br />
106 Mircea Bobei<br />
350 9 78<br />
6 107<br />
107 Reiner Z<strong>im</strong>mermann<br />
7 108<br />
108 Dr. Holger Friedrich<br />
8 109<br />
109 Dani Schnider<br />
9 110<br />
110 Andreas Nobbmann<br />
Holger Huck 70<br />
Mircea Bobei 70<br />
Dani Schnider 110
Anzahl Teilnehmer pro Firma der Referenten<br />
17<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SESSION<br />
SELECT d.company_name<br />
, SUM(f.num_attendees)<br />
FCT_ATTENDEES<br />
FROM<br />
SESS<br />
fct_attendees<br />
SG #Att.<br />
f<br />
JOIN<br />
331<br />
brg_speaker_group<br />
1 64<br />
b ON (b.speaker_group_id = f.speaker_group_id)<br />
JOIN<br />
342<br />
d<strong>im</strong>_speaker<br />
2 82<br />
d ON (d.speaker_id = b.speaker_id)<br />
GROUP<br />
328<br />
BY<br />
3<br />
d.company_name<br />
BRG_SPEAKER<br />
74<br />
_GROUP<br />
DIM_SPEAKER<br />
333 4 57<br />
1 101<br />
101 Alfred Schlaucher<br />
341 5 70<br />
2 102<br />
102 Peter Welker<br />
336 6 81<br />
3 103<br />
103 Bernhard Rosenberger<br />
332 7 49<br />
4 104<br />
104 Dr. Andrea Kennel<br />
356 8 50<br />
5 105<br />
105 Holger Huck<br />
358 8 60<br />
5 106<br />
106 Mircea Bobei<br />
350 9 78<br />
6 107<br />
107 Reiner Z<strong>im</strong>mermann<br />
<strong>Trivadis</strong> 340<br />
7 108<br />
8 109<br />
108 Dr. Holger Friedrich<br />
109 Dani Schnider<br />
9 110<br />
110 Andreas Nobbmann<br />
<strong>Trivadis</strong> 410
Vermeidung von Mehrfachzählungen: Gewichtung<br />
18<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SESSION<br />
SELECT d.company_name<br />
, SUM(f.num_attendees * b.allocation_factor)<br />
FCT_ATTENDEES<br />
FROM<br />
SESS<br />
fct_attendees<br />
SG #Att.<br />
f<br />
JOIN<br />
331<br />
brg_speaker_group<br />
1 64<br />
b ON (b.speaker_group_id = f.speaker_group_id)<br />
JOIN<br />
342<br />
d<strong>im</strong>_speaker<br />
2 82<br />
d ON (d.speaker_id = b.speaker_id)<br />
GROUP<br />
328<br />
BY<br />
3<br />
d.company_name BRG_SPEAKER<br />
74<br />
_GROUP<br />
DIM_SPEAKER<br />
333 4 57<br />
1 101 1.0<br />
101 Alfred Schlaucher<br />
341 5 70<br />
2 102 1.0<br />
102 Peter Welker<br />
336 6 81<br />
3 103 1.0<br />
103 Bernhard Rosenberger<br />
332 7 49<br />
4 104 1.0<br />
104 Dr. Andrea Kennel<br />
356 8 50<br />
5 105 0.5<br />
105 Holger Huck<br />
358 8 60<br />
5 106 0.5<br />
106 Mircea Bobei<br />
350 9 78<br />
6 107 1.0<br />
107 Reiner Z<strong>im</strong>mermann<br />
7 108 1.0<br />
SELECT d.speaker_name<br />
108 Dr. Holger Friedrich<br />
, SUM(f.num_attendees)<br />
8 109 1.0<br />
109 Dani Schnider<br />
9 110 1.0<br />
FROM fct_attendees f<br />
110 Andreas Nobbmann<br />
JOIN brg_speaker_group b ON (b.speaker_group_id = f.speaker_group_id)<br />
JOIN d<strong>im</strong>_speaker d ON (d.speaker_id = b.speaker_id)<br />
GROUP BY d.speaker_name
Vereinfachung der Abfragen: View für Hauptreferent<br />
19<br />
FCT_ATTENDEES<br />
SESS SG #Att.<br />
331 1 64<br />
342 2 82<br />
328 3 74<br />
333 4 57<br />
341 5 70<br />
336 6 81<br />
332 7 49<br />
356 8 50<br />
358 8 60<br />
350 9 78<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SESSION<br />
BRG_SPEAKER<br />
_GROUP<br />
1 101 Y<br />
2 102 Y<br />
3 103 Y<br />
4 104 Y<br />
5 105 Y<br />
5 106 N<br />
6 107 Y<br />
7 108 Y<br />
8 109 Y<br />
9 110 Y<br />
V_DIM_MAIN_SPEAKER<br />
DIM_SPEAKER<br />
101 Alfred Schlaucher<br />
102 Peter Welker<br />
103 Bernhard Rosenberger<br />
104 Dr. Andrea Kennel<br />
105 Holger Huck<br />
106 Mircea Bobei<br />
107 Reiner Z<strong>im</strong>mermann<br />
108 Dr. Holger Friedrich<br />
109 Dani Schnider<br />
110 Andreas Nobbmann<br />
WHERE b.pr<strong>im</strong>ary_flag = 'Y'
Vereinfachung der Abfragen: Zusätzliche Beziehung<br />
FCT_ATTENDEES<br />
SESS Main SG #Att.<br />
331 101 1 64<br />
342 102 2 82<br />
328 103 3 74<br />
333 104 4 57<br />
341 105 5 70<br />
336 107 6 81<br />
332 108 7 49<br />
356 109 8 50<br />
358 109 8 60<br />
350 110 9 78<br />
20<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
Main Speaker<br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_SESSION<br />
BRG_SPEAKER<br />
_GROUP<br />
DIM_SPEAKER<br />
101 Alfred Schlaucher<br />
102 Peter Welker<br />
103 Bernhard Rosenberger<br />
104 Dr. Andrea Kennel<br />
105 Holger Huck<br />
106 Mircea Bobei<br />
107 Reiner Z<strong>im</strong>mermann<br />
108 Dr. Holger Friedrich<br />
109 Dani Schnider<br />
110 Andreas Nobbmann
21<br />
Hierarchy Bridge Tables<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
Beispiel 2: Mitarbeiterumsatz einer Beratungsfirma<br />
22<br />
DIM_DATE<br />
DIM_PROJECT<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
FCT_REVENUE<br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_CUSTOMER<br />
Rekursive<br />
Hierarchie<br />
DIM_EMPLOYEE
Rekursive Mitarbeiterhierarchie<br />
23<br />
DIM_EMPLOYEE<br />
7499<br />
ALLEN<br />
7521<br />
WARD<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
7698<br />
BLAKE<br />
7654<br />
MARTIN<br />
7844<br />
TURNER<br />
7900<br />
JAMES<br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
7839<br />
KING<br />
7782<br />
CLARK<br />
7934<br />
MILLER<br />
7902<br />
FORD<br />
7369<br />
SMITH<br />
7566<br />
JONES<br />
7788<br />
SCOTT<br />
7876<br />
ADAMS
Implementation mittels Self-Relationship (Parent-Child)<br />
Hierarchische Abfrage in SQL<br />
SELECT emp_id, name, parent_emp_id<br />
FROM d<strong>im</strong>_employee<br />
START WITH name = 'Jones'<br />
CONNECT BY PRIOR emp_id = parent_emp_id<br />
Nachteile<br />
Von vielen BI Tools nicht unterstützt<br />
Komplex für Endanwender<br />
Oracle-spezifisch<br />
ETL-Logik für Initial Load<br />
24<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
DIM_EMPLOYEE
Implementation als flache D<strong>im</strong>ensionstabelle<br />
25<br />
DIM_EMPLOYEE<br />
EMP_ID NAME LEVEL_1_ID LEVEL_2_ID LEVEL_3_ID LEVEL_4_ID<br />
7839 King 7839 7839 7839 7839<br />
7698 Blake 7839 7698 7698 7698<br />
7499 Allen 7839 7698 7499 7499<br />
7521 Ward 7839 7698 7521 7521<br />
7654 Martin 7839 7698 7654 7654<br />
7844 Turner 7839 7698 7844 7844<br />
7900 James 7839 7698 7900 7900<br />
7782 Clark 7839 7782 7782 7782<br />
7934 Miller 7839 7782 7934 7934<br />
7566 Jones 7839 7566 7566 7566<br />
7902 Ford 7839 7566 7902 7902<br />
7369 Smith 7839 7566 7902 7369<br />
7788 Scott 7839 7566 7788 7788<br />
7876 Adams 7839 7566 7788 7876<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
Implementation als Hierarchy Bridge Table<br />
26<br />
FCT_REVENUE<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
BRG_EMP_HIERARCHY<br />
UPPER_ID LOWER_ID LEVELS<br />
7839 7839 0<br />
7839 7698 1<br />
7839 7499 2<br />
7839 7521 2<br />
7839 7654 2<br />
7839 7844 2<br />
7839 7900 2<br />
7839 7782 1<br />
7839 7934 2<br />
7839 7566 1<br />
7839 7902 2<br />
7839 7369 3<br />
7839 7788 2<br />
7839 7876 3<br />
7698 7698 0<br />
...<br />
Bridge Table<br />
DIM_EMPLOYEE<br />
7839 King<br />
7566 Jones<br />
7788 Scott<br />
7876 Adams<br />
7902 Ford<br />
7369 Smith<br />
7698 Blake<br />
7499 Allen<br />
7521 Ward<br />
7654 Martin<br />
7844 Turner<br />
7900 James<br />
7782 Clark<br />
7934 Miller
El<strong>im</strong>inierung der n-zu-n Beziehung<br />
27<br />
FCT_REVENUE<br />
...<br />
EMP_ID<br />
...<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
DIM_EMPLOYEE<br />
EMP_ID<br />
NAME<br />
JOB<br />
DEPARTMENT<br />
...<br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
BRG_EMP_HIERARCHY<br />
LOWER_ID<br />
UPPER_ID<br />
LEVELS
Umsatz aller Mitarbeiter unter Mr. Jones<br />
28<br />
7902<br />
FORD<br />
7369<br />
SMITH<br />
7566<br />
JONES<br />
7788<br />
SCOTT<br />
7876<br />
ADAMS<br />
FCT_REVENUE<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
BRG_EMP_HIERARCHY<br />
UPPER_ID LOWER_ID LEVELS<br />
...<br />
7782 7782 0<br />
7782 7934 1<br />
7934 7934 0<br />
7566 7566 0<br />
7566 7902 1<br />
7566 7369 2<br />
7566 7788 1<br />
7566 7876 2<br />
7902 7902 0<br />
7902 7369 1<br />
7369 7369 0<br />
7788 7788 0<br />
...<br />
DIM_EMPLOYEE<br />
7839 King<br />
7566 Jones<br />
7788 Scott<br />
7876 Adams<br />
7902 Ford<br />
7369 Smith<br />
7698 Blake<br />
7499 Allen<br />
7521 Ward<br />
7654 Martin<br />
7844 Turner<br />
7900 James<br />
7782 Clark<br />
7934 Miller
Umsatz von Adams und all seiner Vorgesetzten<br />
29<br />
7839<br />
KING<br />
7566<br />
JONES<br />
7788<br />
SCOTT<br />
7876<br />
ADAMS<br />
FCT_REVENUE<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
BRG_EMP_HIERARCHY<br />
UPPER_ID LOWER_ID LEVELS<br />
7839 7839 0<br />
7839 7698 1<br />
...<br />
7839 7788 2<br />
7839 7876 3<br />
...<br />
7566 7788 1<br />
7566 7876 2<br />
...<br />
7369 7369 0<br />
7788 7788 0<br />
7788 7876 1<br />
7876 7876 0<br />
...<br />
DIM_EMPLOYEE<br />
7839 King<br />
7566 Jones<br />
7788 Scott<br />
7876 Adams<br />
7902 Ford<br />
7369 Smith<br />
7698 Blake<br />
7499 Allen<br />
7521 Ward<br />
7654 Martin<br />
7844 Turner<br />
7900 James<br />
7782 Clark<br />
7934 Miller
SQL-Abfragen auf Hierarchy Bridge Table<br />
30<br />
7902<br />
FORD<br />
7369<br />
SMITH<br />
7566<br />
JONES<br />
7788<br />
SCOTT<br />
7876<br />
ADAMS<br />
7839<br />
KING<br />
7566<br />
JONES<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
7788<br />
SCOTT<br />
7876<br />
ADAMS<br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
SELECT SUM(f.amount)<br />
FROM fct_revenue f<br />
JOIN brg_emp_hierarchy b<br />
ON (b.lower_id = f.emp_id)<br />
JOIN d<strong>im</strong>_employee d<br />
ON (d.emp_id = b.upper_id)<br />
WHERE d.name = 'Jones'<br />
SELECT SUM(f.amount)<br />
FROM fct_revenue f<br />
JOIN brg_emp_hierarchy b<br />
ON (b.upper_id = f.emp_id)<br />
JOIN d<strong>im</strong>_employee d<br />
ON (d.emp_id = b.lower_id)<br />
WHERE d.name = 'Adams'
31<br />
Fazit<br />
Bridge Tables<br />
sind flexibel,<br />
können aber<br />
gefährlich sein<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong>
BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN<br />
32<br />
VIELEN DANK.<br />
<strong>2012</strong> © <strong>Trivadis</strong><br />
<strong>DOAG</strong> - <strong>Brücken</strong> <strong>bauen</strong> <strong>im</strong> d<strong>im</strong>ensionalen Modell<br />
22. November <strong>2012</strong><br />
<strong>Trivadis</strong> AG<br />
Dani Schnider<br />
Europa-Strasse 5<br />
CH-8152 Glattbrugg/Zürich<br />
Schweiz<br />
Tel. +41 44 808 70 20<br />
Fax +41 44 808 70 21<br />
info@trivadis.com<br />
www.trivadis.com