Multidimensionales Datenmodell, Anfrageverarbeitung und Anfrageoptimierung Grundbegriffe Dimensionen, Fakten/Kennzahlen Eigenschaften von multidimensionalen Anfragen Relationale Umsetzung von Anfragen Star-Joins Optimierungsaspekt Gruppierung und Aggregation Group-By-Erweiterungen Cube-Operator Benutzerdefinierte Aggregatfunktionen Sequenzbasierte Operationen Gruppierung: Implementierung und Optimierung
Motivation Datenmodell ausgerichtet auf Unterstützung der Analyse Datenanalyse im Entscheidungsprozess Betriebswirtschaftliche Kennzahlen (Erlöse, Gewinne, Verluste etc.) stehen im Mittelpunkt Betrachtung der Kennzahlen aus unterschiedlichen Perspektiven (zeitlich, regional, produktbezogen) Dimensionen Unterteilung der Auswertedimensionen möglich (Jahr, Quartal, Monat) Hierarchien oder Konsolidierungsebenen Karczewski Data Warehouse Systeme 2
Dimensionen beschreiben mögliche Sicht auf die assoziierte Kennzahl endliche Menge von n (n 2) Dimensionselementen (Hierarchieobjekten), die eine semantische Beziehung aufweisen dienen der orthogonalen Strukturierung des Datenraums Beispiele: Produkttypen: Tasse, Service, Haushaltswaren Geografie: Hessen, Bundesrepublik, Europa Zeit: Monat, Quartal, Jahr Karczewski Data Warehouse Systeme 3
Hierarchien in Dimensionen Dimensionselemente: Knoten einer Klassifikationshierarchie Klassifikationsstufe beschreibt Verdichtungsgrad Darstellung von Dimensionen über Klassifikationsschema (Schema von Klassifikationshierarchien) Formen einfache Hierarchien parallele Hierarchien Karczewski Data Warehouse Systeme 4
Einfache Hierarchien Höhere Hierarchieebene enthält die aggregierten Werte genau einer niedrigeren Hierarchiestufe Oberster Knoten (Top) enthält Verdichtung auf einen einzelnen Wert der Dimension Top Top Produktfamilie Haushaltswaren Europa Erdteil Produktgruppe Service Bundesrepublik Staat Artikel Tasse Hessen Land Karczewski Data Warehouse Systeme 5
Parallele Hierarchien Innerhalb einer Dimension sind zwei verschiedene Arten der Gruppierung möglich Keine hierarchische Beziehung in den parallelen Zweigen Parallelhierarchie Pfad im Klassifikationsschema (Konsolidierungspfad) Top Jahr Quartal Woche Monat Karczewski Data Warehouse Systeme 6 Tag
Kategorienattribute Inhaltliche Verfeinerung durch unterschiedliche Rollen Primärattribut Kategorienattribut, das alle anderen Attribute einer Dimension bestimmt definiert maximale Feinheit Beispiel: Auftrag Klassifikationsattribut Element der Menge, die mehrstufige Kategorisierung (Klassifikationshierarchie) bilden Beispiel: Kunde, Nation, Kontinent Dimensionales Attribut Element der Menge der Attribute, die vom Primärattribut oder einem Klassifikationsattribut bestimmt werden und nur TopD bestimmen Beispiel: Adresse, Telefon Karczewski Data Warehouse Systeme 7
Struktur einer Dimension: Beispiel Top Region Klassifikationsattribute Dimensionsattribute Nation Kunde Adresse Telefon Status Bestellpreis Auftrag Primärattribut Karczewski Data Warehouse Systeme 8
Kennzahlen / Fakten Kennzahlen/Fakten: (vedichtete) numerische Messgrößen beschreiben betriebswirtschaftliche Sachverhalte Fakt: Basiskennzahl Kennzahl: aus Fakten konstruiert (abgeleitete Kennzahl) durch Anwendung arithmetischer Operationen Beispiele: Umsatz, Gewinn, Verlust, Deckungsbeitrag Karczewski Data Warehouse Systeme 9
Kennzahl: Berechnungsvorschrift Bildung von f(): Skalarfunktionen +, -, *, /, mod Beispiel: Umsatzsteueranteil = Menge * Preis * Steuersatz Aggregatfunktionen Funktion H() zur Verdichtung eines Datenbestandes, indem aus n Einzelwerten ein Aggregatwert ermittelt wird SUM(), AVG(), MIN(), MAX(), COUNT() Ordnungsbasierte Funktionen Definition von Kennzahlen auf Basis zuvor definierter Ordnungen (Bsp.: Kumulation) Karczewski Data Warehouse Systeme 10
Logische vs. Physische Operatoren Bereichsanfrage range query Produkt (Artikel) Zeit (Tage) Partielle Bereichsanfrage partial range query Produkt (Artikel) Zeit (Tage) Karczewski Data Warehouse Systeme 11
Logische vs. Physische Operatoren Partial-Match-Abfrage Produkt (Artikel) Zeit (Tage) Punktanfrage Produkt (Artikel) Zeit (Tage) Karczewski Data Warehouse Systeme 12
Logische vs. Physische Operatoren Zusammengesetzte Anfragebereiche Produkt (Artikel) Zeit (Tage) Unregelmäßige Anfrageform Produkt (Artikel) Zeit (Tage) Karczewski Data Warehouse Systeme 13
Star-Join: Beispiel SELECT FROM Geographie.Region, Zeit.Monat, sum(verkaeufe) Verkauf, Zeit, Produkte, Geographie WHERE Verkauf.Produkt_ID = Produkt.Produkt.ID AND Verkauf.Zeit_ID = Zeit.Zeit_ID AND Verkauf.Geographie_ID = Geographie.Geographie_ID AND Produkt.Produktkategorie = Kosmetik AND Geographie.Land = Deutschland AND Zeit.Jahr = 2000 GROUP BY Geographie.Region, Zeit.Monat Karczewski Data Warehouse Systeme 14
Star-Join: Aufbau Select-Klausel Kenngrößen (evtl. aggregiert) Ergebnisgranularität (z.b. Monat, Region) From-Klausel Fakten- und Dimensionstabellen Where-Klausel Verbundbedingungen Restriktionen (z.b. Zeit.Jahr = 2000) Karczewski Data Warehouse Systeme 15
Star-Join: Optimierung (1) Star-Joins stellen typisches Muster für Data-Warehouse-Anfragen dar Typische Eigenschaften durch das Star-Schema: Sehr große Faktentabelle Deutlich kleinere, unabhängige Dimensionstabellen Klassische relationale Optimierer schlagen fehl, weil sie i.d.r. von gleichmäßigen Verteilungen in den Tabellen ausgehen Karczewski Data Warehouse Systeme 16
Star-Join: Optimierung (2) Im Beispiel: Join über Faktentabelle Verkauf und die drei Dimensionstabellen Produkt, Zeit und Geographie: 4-Wege-Join In RDBMS üblicherweise nur paarweiser Join: Sequenz paarweiser Joins notwendig 4! Mögliche Join-Reihenfolgen Heuristik zur Verringerung der zu untersuchenden Möglichkeiten: Joins zwischen Relationen, die nicht durch eine Join-Bedingung in der Anfrage verknüpft sind, werden nicht betrachtet Karczewski Data Warehouse Systeme 17
Star-Join: Optimierung (3) Heuristik liefert z.b. folgenden Ausführungsplan: Plan A: σ Produktkategorie= Kosmetik σ Monat= Januar 2000 Produkt Verkauf σ Land= Deutschland Zeit Geographie Karczewski Data Warehouse Systeme 18
Star-Join: Optimierung (4) Heuristik liefert z.b. folgenden Ausführungsplan: Plan B: Verkauf σ Land= Deutschland σ Produktkategorie= Kosmetik σ Monat= Januar 2000 Geographie Produkt Zeit Karczewski Data Warehouse Systeme 19
Star-Join: Berechnungsbeispiel Annahmen: Tabelle Verkauf: 10.000.000 Datensätze 10 Geschäfte in Deutschland (von 100) 20 Verkaufstage im Januar 2000 (von 1000 gespeicherten Tagen) 50 Produkte in Produktkategorie Kosmetik (von 1000) Gleichverteilung/gleiche Selektivität der einzelnen Ausprägungen Plan A: 1. Join: 1.000.000 Tupel (Ergebnis) 2. Join: 20.000 Tupel 3. Join: 1.000 Tupel Plan B: 1. Kreuzprodukt 200 Tupel 2. Kreuzprodukt 10.000 Tupel Join: 1.000 Tupel Karczewski Data Warehouse Systeme 20
Gruppierung und Aggregation Datenanalyse: Aggregation mehrdimensionaler Daten Aggregatfunktion: Standard: SUM, MIN, MAX, COUNT Erweiterungen: statistische, physikalische und Finanzfunktion Benutzerdefinierte Aggregatfunktionen Gruppierung: Ergebnis: Tabelle mit Aggregatwerten indiziert durch Menge von Attributen Karczewski Data Warehouse Systeme 21
Gruppierung und Aggregation SQL: GROUP BY attr-liste [ HAVING bedingung ] Gruppierung bzgl. gleicher Werte der Gruppierungsattribute Abschließende Projektion nur über Gruppierungsattribute oder Aggregationen Einschränkungen Berechnung von Histogrammen: Aggregationen über berechnete Kategorien Berechnung von Zwischen- und Gesamtsummen Berechnung von Kreuztabellen Karczewski Data Warehouse Systeme 22
Berechnung von Zwischen- und Gesamtsummen PRODUKT JAHR REGION VERKÄUFE VERKÄUFE VERKÄUFE Produkt Jahr Region Produkt Jahr Produkt Sonnenschutz 1999 Hessen 135 Thüringen 120 255 2000 Hessen 140 Thüringen 135 275 530 Karczewski Data Warehouse Systeme 23
Berechnung von Zwischen- und Gesamtsummen PRODUKT JAHR REGION VERKÄUFE Sonnenschutz 1999 Hessen 135 Sonnenschutz 1999 Thüringen 120 Sonnenschutz 1999 NULL 255 Sonnenschutz 2000 Hessen 140 Sonnenschutz 2000 Thüringen 135 Sonnenschutz 2000 NULL 275 Sonnenschutz NULL NULL 530 Karczewski Data Warehouse Systeme 24
Berechnung von Zwischen- und Gesamtsummen: SQL-Anfrage SELECT Produkt, NULL, NULL, SUM(Verkäufe) UNION FROM Verkauf WHERE Produkt = Sonnenschutz GROUP BY Produkt SELECT Produkt, Jahr, NULL, SUM(Verkäufe) UNION FROM Verkauf WHERE Produkt = Sonnenschutz GROUP BY Produkt, Jahr SELECT Produkt, Jahr, Region, SUM(Verkäufe) FROM Verkauf WHERE Produkt = Sonnenschutz GROUP BY Produkt, Jahr, Region; Karczewski Data Warehouse Systeme 25
Berechnung von Zwischen- und Gesamtsummen Nachteil von Variante mit UNION Hoher Aufwand: Berechnung aller Teilsummen für N Gruppierungsattribute erfordert 2 N Teilanfragen Eventuelle Vebundoperationen müssen mehrfach wiederholt werden Aufwändige Formulierung: Eventuell jedoch Generierung durch OLAP-Werkzeuge Karczewski Data Warehouse Systeme 26
Berechnung von Kreuztabellen Symmetrische Aggregation Pivottabellen (MS Access: Transform-Pivot) Sonnenschutz 1999 2000 TOTAL Hessen 135 140 275 Thüringen 120 135 255 TOTAL 255 275 530 Karczewski Data Warehouse Systeme 27
Cube-Operator Kurzform für Anfragemuster zur Berechnung von Teil- und Gesamtsummen Generierung aller möglichen Gruppierungskombinationen aus einer gegebenen Menge von Gruppierungsattributen Ergebnis: Tabelle mit aggregierten Werten NULL, NULL,, NULL, SUM( ) Jeweils einmal NULL weniger Am Ende ohne NULL Karczewski Data Warehouse Systeme 28
Cube-Operator: SQL-Syntax Implementierung in Oracle (ab Version 8i) Syntax: SELECT Produktgruppe, Region, Jahr, SUM(Verkäufe) FROM Verkauf GROUP BY CUBE (Produktgruppe, Region, Jahr) Funktion grouping(attribut) Liefert Wert=1, wenn über Attribut aggregiert wurde Liefert Wert=0, wenn über Attribut gruppiert wurde Dient der Unterdrückung von Teilsummen Bsp.: having not (grouping(produktgruppe)=1 Karczewski Data Warehouse Systeme 29
Rollup-Operator Cube-Operator ist interdimensional Anwendbar für Attribute aus unterschiedlichen Dimensionen Ist für Roll-Up oder Drill-Down-Operationen zu aufwendig Rollup-Operator ist intradimensional Generierung der Attributkombinationen (A1,, An), (A1,, An-1),, (A1, A2), (A1), ( ) für gegebene Attributliste A1,, An Karczewski Data Warehouse Systeme 30
Rollup-Operator: Beispiel Anfrage: SELECT Prodkategorie, Prodfamilie, Land, Region, sum(verkäufe) FROM GROUP BY ROLLUP (Produkategorie, Prodfamilie), Auswertung: ROLLUP (Land, Region) 1. Rollup: (Prodkategorie, Prodfamilie), (Prodkategorie), ( ) 2. Rollup: (Land, Region), (Land), ( ) Kreuzprodukt beider Kombinationen Karczewski Data Warehouse Systeme 31
Rollup-Operator: Beispiel Prodkategorie Prodfamilie Land Region Verkäufe Elektronik Video D Europa 102 Elektronik Audio D Europa 98 Elektronik NULL D Europa 200 Elektronik Video D NULL 541 Elektronik Audio D NULL 326 Elektronik NULL D NULL 867 Karczewski Data Warehouse Systeme 32
Cube- vs. Rollup-Operator Cube-Operator: generiert alle Kombinationen: z.b. für 4 Gruppierungsattribute: 16 Kombinationen Rollup-Operator: generiert nur Kombinationen mit sogenannten Superaggregaten: (f1, f2,, NULL) (f1, NULL,, NULL) (NULL, NULL,, NULL) Karczewski Data Warehouse Systeme 33
Grouping Sets Standard in SQL99 GROUP BY GROUPING SETS (gruppierung) Gruppierung: Einfache Gruppierungskombinatioen, z.b. (Land, Region) Komplexe Gruppierungsbedingung mit Cube oder Rollup Karczewski Data Warehouse Systeme 34
Grouping Sets: Beispiel Anfrage: GROUP BY ROLLUP (Prodkategorie, Prodfamilie), (1) GROUPING SETS ((Stadt), (Region)), (2) GROUPING SETS (ROLLUP (Jahr, Quartal, Monat), (Woche)) (3) Bedeutung: (1) entlang der Klassifikationshierarchie (2) nur für Städte und Regionen (3) Nutzung der Parallelhierarchien Jahr Quartal Monat bzw. Woche Karczewski Data Warehouse Systeme 35
Grouping Sets: Semantik Fall 1: GROUP BY A, B GROUP BY GROUPING SETS ((A, B)) (A, B) Fall 2: GROUP BY GROUPING SETS ((A, B), (A, C), (A)) GROUP BY A, GROUPING SETS ((B), (C), ( )) (A) x (B), (C), () (A, B), (A, C), (A) Karczewski Data Warehouse Systeme 36
Grouping Sets: Semantik Fall 3: GROUP BY GROUPING SETS ((A, B), (B, C)), GROUPING SETS ((D, E), (D), ( )) (A, B), (B, C) x (D, E), (D), ( ) (A, B, D, E), (A, B, D), (A, B), (B, C, D, E), (B, C, D), (B, C) Karczewski Data Warehouse Systeme 37
Sequenzbasierte Operationen SQL:1999 Erweiterung um OLAP-Funktionen zur attribut- und sequenzbasierten Auswertung Attribut- und tupelbasierte Aggregation Umsetzung existiert u.a. ab Oracle 9i bzw. DB2 V7.2 Unterstützte Anfragetypen Ratio-To-Total Laufende Summen (Kumulation) Gleitender Durchschnitt Ranking-Analyse Karczewski Data Warehouse Systeme 38
OLAP-Funktionen: Syntax Allgemein: FUNKTION (arg) OVER (Partitionierungsklausel, Ordnungsklausel, Fenster) Partitionierung für jedes Attribut des Ergebnisses ohne Verdichtung: jeder Eingangswert liefert Ergebniswert optional Ordnung innerhalb einer Partition optional Festlegung des Aggregationsfensters optional nur in Verbindung mit Ordnungsklausel Karczewski Data Warehouse Systeme 39
OLAP-Funktionen: Motivation Ratio-To-Total-Analyse Berechnung des täglichen Anteils an Gesamtstückzahlen Schemabeispiel aus der Übung: Produkt (Produktreihe, Produkttyp, Produktname, Produktnummer) Umsatz (Bestelldatum, Produktnummer,...,Umsatz) Ratio-To-Total- mit SQL (ohne OLAP-Funktion): SELECT bestelldatum, umsatz AS t_umsatz, g_umsatz, 100.0*umsatz/g_umsatz AS a_umsatz FROM produkt p, umsatz u, (SELECT SUM (umsatz) as g_umsatz FROM umsatz WHERE to_char(bestelldatum,'mm')=11) WHERE p.produktnummer=u.produktnummer AND to_char(bestelldatum,'mm')=11; Karczewski Data Warehouse Systeme 40
OLAP-Funktionen: Bsp. Ergebnis BESTELLDATUM T_UMSATZ G_UMSATZ A_UMSATZ 08.11.1999 46 768 5,99 14.11.1999 51 768 6,64 10.11.2000 3 768 0,39 10.11.2000 8 768 1,04 15.11.2000 372 768 48,44 16.11.2000 3 768 0,39 22.11.2000 45 768 5,86 22.11.2000 14 768 1,82 26.11.2000 6 768 0,78 28.11.2000 34 768 4,43 11.11.2001 17 768 2,21 18.11.2001 77 768 10,03 19.11.2001 44 768 5,73 30.11.2001 34 768 4,43 30.11.2001 14 768 1,82 T: Teil G: Gesamt A: Anteil in % Karczewski Data Warehouse Systeme 41
OLAP-Funktionen: Anwendung Anfrage SELECT bestelldatum, umsatz AS t_umsatz, SUM (umsatz) OVER () AS g_umsatz, 100.0*umsatz / SUM (umsatz) OVER () AS a_umsatz FROM produkt p, umsatz u WHERE p.produktnummer=u.produktnummer AND to_char(bestelldatum,'mm')=11; Ergebnis identisch OLAP-Funktion SUM (umsatz) OVER() Aggregation über gesamten Eingangsbereich Partition für Aggregation wird lokal für jeden Eintrag generiert Karczewski Data Warehouse Systeme 42
Attributlokale Partitionierung Partitionierung des Eingabestroms einer OLAP-Funktion (ähnlich Gruppierung) Aber: Partitionierung erfolgt pro Attribut/Anweisung der Aggregatoperation. Dies ermöglich Nachgruppierung. Beispiel: Ermittlung der Anteile der Tageszahlen im Vergleich zu Monatszahlen SELECT bestelldatum, umsatz, SUM (umsatz) OVER (PARTITION BY bestelldatum) AStagesumsatz, 100.0*umsatz / SUM (umsatz) OVER (PARTITION BY bestelldatum) AS a_tagesumsatz FROM produkt p, umsatz u WHERE p.produktnummer=u.produktnummer AND (to_char(bestelldatum,'mm')=3) ORDER BY bestelldatum; Karczewski Data Warehouse Systeme 43
Attributlokale Partitionierung (tagesweise) BESTELLDATUM UMSATZ TAGESUMSATZ A_TAGESUMSATZ 14.03.2000 112 112 100,00 15.03.2000 13 13 100,00 18.03.2000 5 35 14,29 18.03.2000 30 35 85,71 A: Anteil in % 26.03.2000 5 5 100,00 19.03.2001 24 321 7,48 19.03.2001 51 321 15,89 19.03.2001 246 321 76,64 25.03.2001 17 17 100,00 27.03.2001 19 19 100,00 31.03.2001 32 32 100,00 Karczewski Data Warehouse Systeme 44
Attributlokale Partitionierung (jahresweise) SELECT bestelldatum, umsatz, SUM (umsatz) OVER (PARTITION BY extract (YEAR FROM bestelldatum)) AS jahresumsatz, 100.0*umsatz / SUM (umsatz) OVER (PARTITION BY extract (YEAR FROM bestelldatum)) AS a_jahresumsatz FROM produkt p, umsatz u WHERE p.produktnummer=u.produktnummer AND (to_char(bestelldatum,'mm')=11) ORDER BY bestelldatum; Karczewski Data Warehouse Systeme 45
Sequenzorientierte Analyse (jahresweise) BESTELLDATUM UMSATZ JAHRESUMSATZ A_JAHRESUMSATZ 08.11.1999 46 97 47,42 14.11.1999 51 97 52,58 10.11.2000 8 485 1,65 10.11.2000 3 485 0,62 15.11.2000 372 485 76,70 16.11.2000 3 485 0,62 22.11.2000 14 485 2,89 22.11.2000 45 485 9,28 26.11.2000 6 485 1,24 28.11.2000 34 485 7,01 11.11.2001 17 186 9,14 18.11.2001 77 186 41,40 19.11.2001 44 186 23,66 30.11.2001 34 186 18,28 30.11.2001 14 186 7,53 A: Anteil in % Karczewski Data Warehouse Systeme 46
Attributlokale Partitionierung Prinzip: SUM (umsatz) OVER (PARTITION BY bestelldatum) Partitionierungsschema Keine Konflikte durch unterschiedliche Partitionierungsschemata innerhalb einer Anfrage Jeweils alle Einträge einer Partition werden in die Berechnung einbezogen. Karczewski Data Warehouse Systeme 47
Sequenzorientierte Analyse Spezifikation einer attributlokalen Ordnung für Partitionen Anwendung: laufende Summe, gleitender Durchschnitt usw. Beispiel: kumulative Liefermengen über Gesamtzeitraum und pro Jahr SELECT bestelldatum, umsatz, SUM (umsatz) OVER (ORDER BY bestelldatum) as sum_gesamt, SUM (umsatz) OVER (PARTITION BY extract (YEAR FROM bestelldatum) ORDER BY bestelldatum) AS sum_jahr FROM produkt p, umsatz u WHERE p.produktnummer=u.produktnummer AND (to_char(bestelldatum,'mm')=3) ORDER BY bestelldatum; Karczewski Data Warehouse Systeme 48
Sequenzorientierte Analyse BESTELLDATUM UMSATZ SUM_GESAMT SUM_JAHR 14.03.2000 112 112 112 15.03.2000 13 125 125 18.03.2000 5 160 160 18.03.2000 30 160 160 26.03.2000 5 165 165 Pro Tag wird kumuliert, wobei SUM_GESAMT unabhängig vom Jahr vorgeht, SUM_JAHR pro Jahr neu beginnt. 19.03.2001 24 486 321 19.03.2001 246 486 321 19.03.2001 51 486 321 25.03.2001 17 503 338 27.03.2001 19 522 357 31.03.2001 32 554 389 Karczewski Data Warehouse Systeme 49
Sequenzorientierte Analyse Prinzip: Anzahl der Tupel, die in ein Ergebnistupel eingehen, entspricht der Position des Tupels bzgl. gegebener Ordnung Eingangstupel ti, Ergebnistupel si t1 SUM({t1}) s1 t2 SUM({t1, t2}) s2 t3 SUM({t1, t2, t3}) s3 Schrittweise Vergrößerung des Analysefensters Karczewski Data Warehouse Systeme 50
Nutzung für Ranking-Analyse Funktionen RANK(): liefert Rang eines Tupels bzgl. vorgegebener Ordnung innerhalb der Partition DENSERANK(): wie RANK(), jedoch ohne Lücken Beispiel A: Ranking nach Umsatz SELECT bestelldatum, umsatz, RANK() OVER (ORDER BY umsatz) AS rang FROM produkt p, umsatz u WHERE p.produktnummer=u.produktnummer; Beispiel B: Ranking nach Umsatz und Datum SELECT bestelldatum, umsatz, RANK() OVER (ORDER BY umsatz, bestelldatum) AS rang FROM produkt p, umsatz u WHERE p.produktnummer=u.produktnummer; Karczewski Data Warehouse Systeme 51
Ranking-Analyse (Beispiel) A: BESTELLDATUM UMSATZ RANG B: BESTELLDATUM UMSATZ RANG 10.11.2000 3 1 10.11.2000 3 1 16.11.2000 3 1 16.11.2000 3 2 26.11.2000 6 3 26.11.2000 6 3 10.11.2000 8 4 10.11.2000 8 4 30.11.2001 14 5 22.11.2000 14 5 22.11.2000 14 5 30.11.2001 14 6 11.11.2001 17 7 11.11.2001 17 7 28.11.2000 34 8 28.11.2000 34 8 30.11.2001 34 8 30.11.2001 34 9 19.11.2001 44 10 19.11.2001 44 10 22.11.2000 45 11 22.11.2000 45 11 08.11.1999 46 12 08.11.1999 46 12 14.11.1999 51 13 14.11.1999 51 13 18.11.2001 77 14 18.11.2001 77 14 15.11.2000 372 15 15.11.2000 372 15 Karczewski Data Warehouse Systeme 52
Ranking-Analyse (Beispiel) Beschränkung auf Hitlisten Beispiel: Top10 der Tage mit dem höchsten Volumen pro Jahr Anfrage: SELECT AUF.bestelldatum, AUF.topMonat FROM (select bestelldatum, RANK() OVER(PARTITION BY extract(year from bestelldatum) ORDER BY umsatz DESC) AStopMonat FROM umsatz u, produkt p WHERE u.produktnummer=p.produktnummer AND extract(year from bestelldatum) = 2001) AUF WHERE AUF.topMonat <= 10 ORDER BY AUF.topMonat DESC; Karczewski Data Warehouse Systeme 53
Ranking-Analyse (Beispiel) BESTELLDATUM TOPMONAT 09.08.2001 9 13.05.2001 9 14.01.2001 8 18.11.2001 7 04.10.2001 6 14.05.2001 5 09.06.2001 4 14.06.2001 3 19.03.2001 2 17.08.2001 1 Karczewski Data Warehouse Systeme 54
Bildung dynamischer Fenster Bisher: nur wachsende Fenstergröße für die Partition Jetzt: explizite Angaben des Fensters ROWS: Anzahl der Tupel RANGE: Anzahl der wertmäßig verschiedenen Tupel Anwendung: gleitender Durchschnitt Karczewski Data Warehouse Systeme 55
Bildung dynamischer Fenster Ausgehend von definiertem Startpunkt bis zum aktuellen Tupel UNBOUNDED PRECEDING: erstes Tupel der jeweiligen Partition n PRECEDING: n-ter Vorgänger relativ zur aktuellen Position CURRENT ROW: aktuelles Tupel (nur mit RANGE und Duplikaten sinnvoll) Karczewski Data Warehouse Systeme 56
Bildung dynamischer Fenster Angabe der unteren und oberen Schranken: BETWEEN <untere Grenze> AND <obere Grenze> Spezifikation der Grenzen UNBOUNDED PRECEDING UNBOUNDED FOLLOWING n PRECEDING n FOLLOWING CURRENT ROW <obere Grenze> muss höhere Position als <untere Grenze> spezifizieren Karczewski Data Warehouse Systeme 57
Bildung dynamischer Fenster: Beispiel Gleitender Durchschnitt SELECT bestelldatum, umsatz, AVG (umsatz) OVER(PARTITION BY extract(year from bestelldatum) ORDER BY bestelldatum ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING) as Durch3Tage FROM umsatz u, produkt p WHERE u.produktnummer=p.produktnummer AND extract(month from bestelldatum)=8; Karczewski Data Warehouse Systeme 58
Bildung dynamischer Fenster: Beispiel Gleitender Durchschnitt mit 3-Tages-Fenster auf Jahresebene BESTELLDATUM UMSATZ DURCH3TAGE 13.02.1999 17 111,50 14.04.1999 25 92,80 24.04.1999 299 77,83 17.05.1999 105 71,57 27.05.1999 18 74,57 03.06.1999 3 80,43 05.06.1999 34 45,00 09.06.1999 38 31,29 27.06.1999 66 32,14 27.06.1999 51 37,86 27.06.1999 9 62,57 09.07.1999 24 58,14 20.07.1999 43 57,71 (25 + 299 + 105 +...... + 34 + 38) / 7 = 74,57 Karczewski Data Warehouse Systeme 59
Gruppierung: Optimierungsaspekte Berücksichtigung der Gruppierungs-/Aggregationsoperationen im Rahmen der Optimierung Logische/Algebraische Optimierung: Push-down von Gruppierungen Reduzierung der Kardinalität der Zwischenergebnisse Invariantes Gruppieren Frühzeitiges Vorgruppieren Physische/Interne Optimierung: Spezielle Implementierungen für GROUP BY CUBE, sowie OLAP-Funktionen Karczewski Data Warehouse Systeme 60