Anfragen an multidimensionale Daten

Werbung
Anfragen an multidimensionale Daten
Seminar: Data Warehousing im Sommersemester 2005
Lehrstuhl für Datenbanken und Informationssysteme
Alexander Heidrich
Betreuer: David Wiese
20. Juni 2005
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
Inhaltsverzeichnis
1.
2.
Einleitung ......................................................................................................................... 1
OLAP-Operationen.......................................................................................................... 1
2.1
Roll-Up.................................................................................................................. 2
2.2
Drill-Down............................................................................................................ 2
2.3
Drill-Across........................................................................................................... 2
2.4
Slice........................................................................................................................ 3
2.5
Dice ........................................................................................................................ 3
2.6
Pivotierung ........................................................................................................... 3
3. Umsetzung in Standards ................................................................................................ 4
3.1
SQL ............................................................................................................................ 4
3.1.1 Erweiterte Gruppierungsfunktionalität ........................................................... 5
3.1.2
SQL-OLAP-Erweiterungen ............................................................................ 8
3.2
MDX ........................................................................................................................ 11
3.2.1
MDX Sprachelemente ................................................................................... 11
3.2.2
Aufbau einer MDX-Abfrage ......................................................................... 11
3.2.3
Navigationsfunktionen ................................................................................. 11
3.2.4
Drei Beispiele ................................................................................................. 12
4. Abfragetypen und –verarbeitung ................................................................................ 13
4.1
Abfragetypen .......................................................................................................... 13
4.2
Abfrageverarbeitung – Star-Join ........................................................................ 14
5. Schlussbemerkungen .................................................................................................... 15
6. Quellenverzeichnis ........................................................................................................ 16
6.1
Abbildungen ........................................................................................................... 16
6.2
Text .......................................................................................................................... 16
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
1. Einleitung
Neben den Prozessen zur Erstellung und Optimierung gehört der Aspekt der
Anfragen an ein Data Warehouse sicher zu den Kernpunkten des Interesses, da diese
letzten Endes die Grundlage für die Analyse der erfassten Daten darstellen. In der
vorliegenden Arbeit werden die wichtigsten Operatoren für Anfragen an
multidimensionale Daten sowie deren Umsetzung in SQL und MDX erläutert, ein
weitere Teilabschnitt beschäftigt sich mit den häufigsten Anfragetypen und der
Anfrageverarbeitung
2. OLAP-Operationen
OLAP (kurz für Online Analytical Processing) bezeichnet Werkzeuge und
Technologien, um auf multidimensionale Daten zuzugreifen, die z.B. in einem Data
Warehouse gespeichert sind. Dazu stehen mehrere Operationen zur Verfügung, die
eine größtmöglich benutzerfreundliche Analyse der Datenbestände ermöglichen
sollen.
Die jeder OLAP-Operation zugrundeliegende Struktur ist ein sogenannter Data Cube
(Datenwürfel) (Abbildung 1) auf dem die im folgenden gezeigten Operationen
ausgeführt werden.
Abbildung 1 - Datenwürfel 1
Der Datenwürfel ist im einfachsten (multidimensionalen) Fall ein dreidimensionaler
Würfel. Im vorliegenden Beispiel sind Geographie, Produkt und Zeit die
Dimensionen. Die Dimensionen können unterschiedlich detaillierte Granularitäten
und damit verschiedene Betrachtungsebenen aufweisen, z.B. Land, Region, Bezirk
für die Dimension Geographie oder Jahr, Quartal, Monat für die Dimension Zeit.
Die einzelnen Elemente des Würfels beinhalten die eigentlichen Daten - meist
betriebswirtschaftliche Kennzahlen, wie z.B. Umsätze oder Verkäufe.
1
Quelle: [BaGu04]
1
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
2.1 Roll-Up
Ein Roll-Up bezeichnet den Wechsel von einer Betrachtungsebene auf die
darüberliegende. Ausgehend von einer Abfrage von Verkäufen aufgeteilt nach
Monaten würde ein Roll-Up auf die Dimension Zeit zu einem Ergebnis führen, in
dem die Verkäufe nun nach Quartal aufsummiert werden.
2.2 Drill-Down
Die Drill-Down-Operation ist die direkte Umkehroperation zum Roll-Up. Analog zum
obigen Beispiel führt ein Drill-Down auf die Dimension Zeit in der Quartalsebene
wieder zu einem Ergebnis, in dem die Verkäufe wieder nach Monaten aufgeteilt sind.
Roll-Up und Drill-Down lassen sich am besten in einer gemeinsamen Abbildung
erklären. Insbesondere lässt sich so erkennen, dass die eine Operation jeweils die
Umkehroperation der anderen ist (Abbildung 2).
Abbildung 2 - Roll-Up und Drill-Down 2
2.3 Drill-Across
Mit der Drill-Across-Operation kann man unter Beibehaltung der Betrachtungsebene
den betrachteten Fakt wechseln (Abbildung 3).
Abbildung 3 - Drill-Across 3
2
3
Quelle: [BaGu04]
Quelle: [BaGu04]
2
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
2.4 Slice
Eine Slice-Operationen bietet die Möglichkeit auf Schichten des Datenwürfels
zuzugreifen, dabei beschränkt man (im dreidimensionalen Fall) eine Dimension auf
ein Intervall des Wertebereichs und belässt die anderen Dimensionen unverändert.
In der Abbildung ist nur eine Möglichkeit eines Slice abgebildet.
Abbildung 4 - Slice 4
2.5 Dice
Mit Hilfe der Dice-Operation kann der Benutzer in jeder Dimension beschränkte
Teilwürfel aus dem Datenwürfel herausschneiden, um sie zur näheren Betrachtung
heranzuziehen.
Abbildung 5 - Dice 5
2.6 Pivotierung
Durch drehen (= pivotieren) des Datenwürfels kann der Benutzer die Daten aus jeder
beliebigen Perspektive betrachten. Unter der Annahme, daß der Betrachter des
Wüfels diesen immer von vorn sieht, bedeutet das, ausgehend vom Beispiel die Sicht
auf die Daten „Verkäufe nach Zeit und Geographie“ „Verkäufe nach Zeit und
Produkt“, usw. (Abbildung 6).
Abbildung 6 – Pivotierung 6
Quelle: http://purgold-software.de/info/olap.html (vom Verfasser modifiziert)
Quelle: http://purgold-software.de/info/olap.html (vom Verfasser modifiziert)
6 Quelle: [BaGu04]
4
5
3
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3. Umsetzung in Standards
In diesem Kapitel werden zwei Ansätze zur Umsetzung der OLAP-Operationen für
den Gebrauch in DBMS vorgestellt. Im ersten Abschnitt werden dazu Erweiterungen
für SQL gezeigt, der zweite Teil beschäftigt sich mit MDX, einer neuen Sprache, die
direkt auf dem multidimensionalen Datenmodell aufbaut. Die Vorstellung beschränkt
sich in dieser Arbeit hauptsächlich auf Beispiele, für syntaktische Feinheiten und
weitere spezielle Funktionen sei der Leser an die jeweilige Sprachreferenz bzw. Norm
verwiesen.
3.1 SQL
Um multidimensionale Operatoren auf dem relationalen Datenmodell zu
ermöglichen, wurden mit SQL:99 beginnend verschiedene neue Sprachelemente
implementiert, die sich in zwei Klassen gliedern:
Erweiterte Gruppierungsfunktionalität:
- erweiterte GROUP BY-Syntax
- GROUPING SETS
- GROUPING-Funktion
- ROLLUP-Operator
- CUBE-Operator
SQL-OLAP-Funktionen:
- Aggregate
- Partionierung
- Bildung dynamischer Fenster
- Ranking
Die genannten Erweiterungen sind auf Vorschläge von IBM und Oracle
zurückzuführen und waren dementsprechend auch zuerst in DB2 und Oracle 9
implementiert. Bezüglich der SQL:99-Norm sind beide Produkte in den genannten
Punkten gleich.
Die Ausgangsdaten für die folgenden Ausführungen sind in Tabelle 1 zu sehen. Sie
zeigen die fiktiven Verkaufzahlen einer Firma, aufgeschlüsselt nach Jahr, Land und
Kategorie.
Tabelle 1 - Ausgangsdaten
Jahr
2003
2003
2003
2003
2004
2004
2004
2004
Land
Deutschland
Deutschland
Frankreich
Frankreich
Deutschland
Deutschland
Frankreich
Frankreich
Kategorie Verkäufe
Autos
200
Computer
300
Autos
400
Computer
250
Autos
350
Computer
400
Autos
150
Computer
150
4
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3.1.1 Erweiterte Gruppierungsfunktionalität
3.1.1.1 GROUP BY
Die einfachen Aggregatfunktionen wie SUM(), COUNT(), MIN(), MAX(), AVG()
liefern nur eine einzelne Zahl als Ergebnis. Für die Auswertung
betriebswirtschaftlicher Daten ist es aber viel interessanter, diese zu gruppieren und
nach gewünschtem Attribut und gewünschter Funktion zu aggregieren. Dazu ist die
Verwendung der GROUP BY-Klausel innerhalb der SELECT-Klausel nötig, wie im
folgenden Beispiel zu sehen:
Abbildung 7 - Gruppierung mittels GROUP BY
Prinzipiell wäre dieses Konstrukt ausreichend, um alle möglichen Gruppierungen
und damit alle möglichen Zahlen (Verkäufe nach Jahr, Verkäufe nach Zeit, Verkäufe
nach Jahr und Land, usw.) zu erzeugen, allerdings verursacht dies erheblichen
Schreibaufwand und Performance-Einschränkungen bei der Abarbeitung der
Abfrage.
5
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3.1.1.2 GROUPING SETS
Um die genannten Probleme aus 3.1.1 zu beheben, empfiehlt sich der Einsatz der sog.
GROUPING SETS. Diese Erweiterung der GROUP BY-Syntax erzeugt alle
angegebenen Gruppierungsmengen (Abbildung 8) .
Abbildung 8 – Gruppierung mittels GROUPING SETS
3.1.1.3 Der ROLLUP-Operator
Da bei großen Tabellen auch die Angabe der Gruppierungsmengen ein sehr
zeitaufwändiger Vorgang sein kann, empfiehlt sich der ROLLUP-Operator oder der
CUBE-Operator (siehe 3.1.1.4). Die ROLLUP-Funktion erweitert die GROUP BYSyntax um die einfache Möglichkeit eine hierarchische multidimensionale
Gruppierung zu erzeugen. Wie auch schon im GROUPING SETS-Beispiel erzeugt die
Anwendung der ROLLUP-Funktion NULL-Werte, die so sich nicht von
benutzerdefinierten NULL-Werten unterscheiden lassen. Um dies zu umgehen,
wurde die GROUPING-Funktion eingeführt, deren Anwendung auf ein Attribut eine 1
oder eine 0 ausgibt, falls das Attribut an der Gruppierung beteiligt oder nicht.
Abbildung 9 - Die Anwendung des ROLLUP-Operators
6
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3.1.1.4 Der CUBE-Operator
Trotz der bereits genannten Erleichterungen fehlen nach Benutzung des ROLLUPOperators noch einige möglicherweise interessante Zahlen, zum Beispiel die Verkäufe
gruppiert nur nach Jahr oder nur nach Land. Die liegt allerdings nicht an einem
Mangel an Funktionalität sondern an der bereits erwähnten Tatsache, dass der
ROLLUP-Operator nur hierarchische Gruppierungen erzeugt. Um sich wirklich jede
mögliche Gruppierung ausgeben zu lassen, empfiehlt sich der Einsatz des CUBEOperators. Der Vorschlag zur Erweiterung der GROUP BY-Syntax stammt aus einem
Papier von Microsoft und IBM.
Der CUBE-Operator ist die n-dimensionale Generalisierung der einfachen
Aggregatfunktionen (Abbildung 10).
Abbildung 10 - Die n-dimensionale Generalisierung: 0D - Punkt, 1D - Linie+Punkt, 2D Kreuztabelle, 3D - drei sich überschneidende Kreuztabellen 7
Die Anwendung auf die Beispieldaten erzeugt folgendes Ergebnis:
Abbildung 11 - Die Anwendung des CUBE-Operators
7
Quelle: [GBLP95]
7
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3.1.2 SQL-OLAP-Erweiterungen
Das Kernkonstrukt der SQL-OLAP-Erweiterungen ist die OVER-Klausel. Mit ihrer
Hilfe lassen sich die nachfolgend beschriebenen Funktionalitäten realisieren.
Abbildung 12 - Die OVER-Klausel
Funktion(arg) bezeichnet in diesem Fall eine der SQL-Funktionen.
3.1.2.1 Aggregate
Eine einfache Aggregatbildung ohne Verdichtung lässt sich mittels Verwendung von
OVER() ohne Angabe jeglicher Parameter realisieren (Abbildung 13).
Abbildung 13 - einfache Aggregatbildung mit OVER
8
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3.1.2.2 Partionierung
Eine Aufteilung der Ergebnistabelle ähnlich der wie sie bei Verwendung von GROUP
BY entsteht, lässt sich mittels Partitionierung erreichen. Dazu ist die Angabe eines
Partitionierungsschemas von Nöten (Abbildung 14).
Abbildung 14 - Partitionierung
3.1.2.3 Bildung dynamischer Fenster
Mit der Fenster-Klausel besteht die Möglichkeit eine Angabe darüber zu machen,
über welche Zeilen einer Eingabe eine Funktion ausgeführt werden soll. Dies
ermöglicht beispielsweise die Berechnung eines gleitenden Mittelwerts. Das
Syntaxdiagramm der Fensterklausel sieht folgendermaßen aus:
Abbildung 15 - Syntaxdiagramm der Fenster-Klausel
9
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
Das erwähnte Beispiel eines fließenden Mittelwerts ließe sich so realisieren:
Abbildung 16 - fließender Mittelwert
In diesem Falle wird der Mittelwert immer aus dem Wert der Verkäufe der aktuellen
und der vorherigen Zeile gebildet.
3.1.2.4 Ranking
Um die Position eines Tupels bezüglich einer Sortierungsreihenfolge im Ergebnis
einer Abfrage zu bestimmen, gibt es die Funktionen RANK() und DENSE_RANK(),
wobei RANK() im Gegensatz zu DENSE_RANK() beim Auftreten von Duplikaten
Lücken in der Nummerierung lässt (Abbildung 17).
Abbildung 17 - Ranking
10
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3.2 MDX
MDX steht für MultiDimensional EXpressions und bezeichnet eine neuartige
Abfragesprache, die sich stark an der SQL-Syntax orientiert und direkt auf dem
multidimensionalen Datenmodell aufsetzt. Entwickelt wurde die Sprache von
Microsoft und ist z.B. im MS SQLServer und als Addin für Excel verfügbar. MDX ist
trotz des Vorsatzes den Zugriff auf multidimensionale Strukturen zu vereinfachen,
eine sehr komplexe und mächtige Sprache geworden. Sie verfügt über sehr viele
Funktionen von denen hier nur auf einige anhand von Beispielen verwiesen werden
soll.
3.2.1 MDX Sprachelemente
Fakten werden in MDX als Measures bezeichnet und als eigene Dimension
modelliert. Dimensionen unterteilen sich in Level und Members. Level sind
Klassifikationsstufen und Members sind Klassifikationsknoten eines Levels (siehe
dazu auch 3.2.3).
Um die später genannten Beispiele zu verstehen, seien an dieser Stelle noch die
Syntaxelemente { } und [ ] erwähnt, wobei { } Mengen darstellen und [ ] Strings
einschließen.
3.2.2 Aufbau einer MDX-Abfrage
Im Select-Teil werden die Dimensionen angegeben, auf die sich die Abfrage bezieht.
Es können bis zu 64 Dimensionen ausgewählt werden, zusätzlich muss angegeben
werden, ob die Dimensionen im Ergebnis auf den Zeilen (= on ROWS) oder Spalten
(= on COLUMNS) liegen sollen. Im From-Teil werden die Cubes angegeben, auf die
die Abfrage ausgeführt werden soll. Die Where-Klausel ermöglicht die Auswahl der
darzustellenden Werte.
3.2.3 Navigationsfunktionen
Wie schon in 3.2.1 angesprochen, unterteilen sich Dimensionen in verschiedene
Hierarchieebenen. MDX stellt zur Navigation zwischen diesen Ebenen verschiedene
Funktionen zur Verfügung:
-
Members: ansprechen aller Knoten einer Klassifikationsebene
Children: ansprechen aller Kinderknoten eines Klassifikationsknotens
Parent: ansprechen des Elternknotens eines Klassifikationsknotens
SELECT {[Kategorie].MEMBERS} Æ Autos, Computer
SELECT {[Notebook1].PARENT} Æ Computer
SELECT {[Computer].CHILDREN} Æ Notebook1, Notebook2, Desktop1, Desktop2
11
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
3.2.4 Drei Beispiele
Drill-Down
SELECT Measures.MEMBERS ON COLUMNS
[Jahr].MEMBERS,[Land].Members,[Kategorie].Members ON ROWS
FROM [Verkäufe]
WHERE ([Jahr].[2003])
Roll-Up
SELECT Measures.MEMBERS ON COLUMNS
[Jahr].MEMBERS,[Land].Members,[Kategorie].Members ON ROWS
FROM [Verkäufe]
WHERE ([Jahr].MEMBERS)
Crossjoin (Projektion zweier Dimensionen in die Ebene)
SELECT CROSSJOIN({[Deutschland],[Frankreich]},
{[Autos], [Computer]}) ON COLUMNS
[Jahr].MEMBERS ON ROWS
FROM [Verkäufe]
WHERE (Measures.[Verkäufe])
Abbildung 18 - Ergebnisse der drei Beispielanfragen 8
Quelle Würfelabbildung: http://www.cs.nyu.edu/courses/spring05/G22.3033010/2dw.ppt&e=10313 (vom Verfasser modifiziert)
8
12
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
4. Abfragetypen und –verarbeitung
4.1 Abfragetypen
Abbildung 19 - Abfragetypen 9
1 – range query – in allen Dimensionen durch ein Suchintervall beschränkt („Wie
viele Computer wurden im Januar verkauft“)
2 – partial range query – in mindestens einer aber nicht in allen Dimensionen
durch ein Suchintervall beschränkt („Wie viele Produkte wurden im Januar
verkauft“)
3 – partial match query – in mindestens einer aber nicht in allen Dimension
streng durch einen genau angegebenen Wert beschränkt („Wie viele Produkte
wurden am 31. Januar verkauft“)
4 – point query – in allen Dimensionen durch einen genau angegebenen Wert
beschränkt („Wie viele Computer „Typ2“ wurden am 31. Januar verkauft“)
5 und 6 zeigen Anfragen aus dem Bereich der Geoinformations-Systeme, z.B.
Ausdehnung von Gewässern oder Überschneidung von Arealen.
9
Quelle: http://wwwiti.cs.uni-magdeburg.de/iti_db/lehre/dw/05-Anfrageverarbeitung.pdf
13
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
4.2 Abfrageverarbeitung – Star-Join
Die in Data Warehouses am häufigsten vorkommende Form der Abfragen sind
Bereichs- und Teilbereichsanfragen. Ausgehend von der typischen (relationalen)
Speicherform, des so genannten Star-Schemas (Abbildung 20) beziehen sich solche
Anfragen immer auf eine große Faktentabelle und mehrere kleine voneinander
unabhängige Dimensionstabellen.
Abbildung 20 - Star-Schema 10
Um nun eine Anfrage wie zum Beispiel „Wie viele Waschgeräte wurden im Jahr 2000
in Deutschland verkauft“ zu beantworten ist ein sog. Star-Join über die Faktentabelle
„Verkäufe“ und über die Dimensionstabellen „Produkt“, „Zeit“ und „Ort“ notwendig.
Quelle:
http://publib.boulder.ibm.com/infocenter/dzichelp/index.jsp?topic=/com.ibm.db2.doc.admin/bjndm
str783.htm
10
14
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
Die Syntax eines Star-Joins orientiert sich am klassischen SFW-Schema (SelectFrom-Where). Dabei werden in der Select-Klausel die gewünschten Kenngrößen
zusammen mit den Dimensionen und der nötigen Granularität angegeben. In der
From-Klausel stehen die Fakten- und Dimensionstabelle(n) und schließlich müssen
in der Where-Klausel noch die Verbundbedinungen und Restriktionen angegeben
werden. Außerdem notwendig ist die Angabe, wie die Ausgabe gruppiert werden soll.
SELECT
Geographie.Region, Zeit.Monat, SUM(Verkaeufe)
FROM
Verkauf, Zeit, Produkte, Geographie
WHERE
Verkauf.Produkt_ID = Produkt.ProduktID AND
Verkauf.Zeit_ID = Zeit.ZeitID AND
Verkauf.Geographie_ID = Geographie.GeographieID AND
Produkt.Produktkategorie = 'Waschgeräte' AND
Geographie.Land = 'Deutschland' AND Zeit.Jahr = 2000
GROUP BY
Geographie.Region, Zeit.Monat
Eine mögliche Abarbeitungsstrategie zu der obigen Anfrage:
Abbildung 21 - Abarbeitungsstrategie 11
5. Schlussbemerkungen
Mit der immer größer werdenden Bedeutung von Data Warehouses und der Fülle an
multidimensionalen Daten wuchs auch das Bedürfnis nach adäquaten
Abfragemöglichkeiten. Die aktuellen Standards SQL:99 und die neue Sprache MDX
bieten mit ihren Konstrukten und Erweiterungen eine große Funktionalität und
Flexibilität, um schnelle und umfangreiche Abfragen an große Datenbestände
durchzuführen.
11
Quelle: [BaGu04]
15
Blockseminar „Data Warehousing“
SS2005
Alexander Heidrich
Matrikel.-Nr. 56827
6. Quellenverzeichnis
6.1 Abbildungen
-
-
[BaGu04]: Bauer, A; Günzel, H.: Data Warehouse Systeme. Architektur,
Entwicklung, Anwendung. Heidelberg: dpunkt.verlag. 2004.
[GBLP95]: Gray, J.; Bosworth, A.; Layman, A.; Pirahesh, H.: Data Cube: A
Relational Aggregation Operator Generalizing Group-By, CrossTab, and Sub-Totals. J. Data Mining and Knowledge Discovery. 1995.
Zusätzliche Quellen siehe Fußnoten
Nicht mit Quellenverweisen gekennzeichnete Abbildung wurden selbst erstellt.
6.2 Text
-
[BaGu04]: Bauer, A; Günzel, H.: Data Warehouse Systeme. Architektur,
Entwicklung, Anwendung. Heidelberg: dpunkt.verlag. 2004.
http://wwwiti.cs.uni-magdeburg.de/iti_db/lehre/dw/ (20.06.2005)
http://www.informatik.hu-berlin.de/wbi/teaching/sose04/dwh/
(20.06.2005)
http://www.wikipedia.de (20.06.2005) – als allgemeines Nachschlagewerk
http://de.wikipedia.org/wiki/OLAP (20.06.2005)
http://de.wikipedia.org/wiki/Data_Warehouse (20.06.2005)
http://de.wikipedia.org/wiki/Sternschema (20.06.2005)
Die Daten in den Klammern geben bei Webadressen den Zeitpunkt des letzen
Zugriffs an.
Weitere Quellen für Data-Warehouse-Technologien sind auf der Seite des zu dieser
Arbeit gehörenden Seminars unter
http://www.informatik.uni-jena.de/dbis/lehre/ss2005/sem_dwh/literatur.html
zu finden.
16
Herunterladen