Oracle Data Warehouse Implementierung dimensionaler Modelle ”Star - Modell” Alfred Schlaucher, Oracle Deutschland.

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Die Projektgruppe heißt Sie herzlichst willkommen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Statistiken und Tabellen
Quantitative RT-PCR an nativen Prostatakarzinom-Biopsien: Etablierung der Technik und erste vergleichende Ergebnisse Medizinische Fakultät Universitätsklinikum.
EF: Standards + H2O red = H2O.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Internet facts 2006-I Graphiken zu dem Berichtsband AGOF e.V. September 2006.
Internet facts 2009-IV Grafiken zu dem Berichtsband AGOF e.V. März 2010.
Internet facts 2006-III Graphiken zum Berichtsband AGOF e.V. März 2007.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Internet facts 2006-II Graphiken zu dem Berichtsband AGOF e.V. November 2006.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Studienverlauf im Ausländerstudium
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
20:00.
Im Zuge unserer Befragung gaben uns 260 Personen über ihr Leseverhalten Auskunft.
Zusatzfolien zu B-Bäumen
Internetverwendung und Werbeaffinität APA-IT Forum 7. Mai 2008
AGOF facts & figures: Branchenpotenziale im Internet Q4 2013: Entertainment Basis: internet facts / mobile facts 2013-II.
WARUM IST DAS NEUE ADR PROGRAMM BESSER? 153%Mehrwert 228%Mehrwert Es ist einfach noch RENTABLER für Sie! Wenn Sie derzeit einen ADP Rabatt von 10% erhalten,
<Titel Ihres Vortrags>
Eine Einführung in die CD-ROM
Dokumentation der Umfrage
für Weihnachten oder als Tischdekoration für das ganze Jahr
Where Europe does business Lück, JDZB | Seite © GfW NRW 252 a.
Kinder- und Jugenddorf Klinge Qualitätsentwicklung Januar 2005 Auswertung der Fragebögen für die Fachkräfte in den Jugendämtern.
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
Addieren und Subtrahieren von Dezimalzahlen
Der Ablauf eines Clear Rex Klärzyklus
PROCAM Score Alter (Jahre)
Datenbanksysteme für hörer anderer Fachrichtungen
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
AGOF facts & figures: Branchenpotenziale im Internet Q1 2014: Mode & Schuhe Basis: internet facts / mobile facts 2013-III.
Parkplatz-Orga Diese Version ist vom finale Version!
Vorsorgekonzept IndexSelect:
Zusammengestellt von OE3DSB
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
AGOF facts & figures: Branchenpotenziale im Internet Q2 2014: Parfum & Kosmetik Basis: internet facts / mobile facts 2014-I.
Folie Einzelauswertung der Gemeindedaten
AGOF facts & figures: Branchenpotenziale im Internet Q2 2014: FMCG Food & Beverages Basis: internet facts / mobile facts 2014-I.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
Einführung in die Volkswirtschaftslehre, Mikroökonomie und Wettbewerbspolitik Lothar Wildmann ISBN: © 2014 Oldenbourg Wissenschaftsverlag.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
DOAG SID Data Warehouse
Indexierung Oracle: indexes Indexierung.
 Präsentation transkript:

Oracle Data Warehouse Implementierung dimensionaler Modelle ”Star - Modell” Alfred Schlaucher, Oracle Deutschland

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Schneller Mehr Flexibler Genauer Operativer Was Anwender bewegt Umfassende Sichten auf Kunden Einheitliche Informationen standardisierte und Daten Flexible und reichhaltige Auswertestrukturen Immer kürzere Auswertezyklen Schneller Mehr Flexibler Genauer Operativer Was hat uns bisher interessiert? In heutigen Business Intelligence und Data Warehouse Systemen messen und monitoren wir den geschäftlichen Erfolg unserer Unternehmen: Umsatzzahlen, Verbräuche, Gewinne und Verluste. Diese Informationen beziehen wir direkt aus den Daten der Online-IT-System, wandeln sie entsprechend um und ziehen unsere Schlüssel daraus. In der Regel sind dies Transaktionen in Datenbanken als Folge von Buchungen bzw. elektronischen Erfassungsvorgängen über Bildschirmmasken. Dies ist eine seit Jahrzehnten etablierte Vorgehensweise und gilt als höchst standardisiert.

Potentielle Informationsschätze Alle Kundenkontaktpunkte Alle Geschäftsbeziehungen zu dem Kunden Alle historischen Daten Alle öffentlich verfügbaren Kundendaten Plus soziographische Informationen (Referenzdaten) Ergeben ein vollständiges Bild + neue Geschäftsoptionen 360°

Informationsdrehscheibe für alle (!) Sachgebiete Standardisierte Berichte Advanced Analytics Ad-hoc Query & Reporting Modelle Simulation Data Warehouse Data Integration Layer Enterprise Information Layer User View Layer Referenzdaten Stammdaten Bewegungsdaten

Informationsdrehscheibe für alle (!) Sachgebiete Harmonisieren Einheitliche verbundene Stammdaten Einheitliches Verständnis über Sachverhalte Standardisierte Kennzahlen Standardisierte Berichte Advanced Analytics Ad-hoc Query & Reporting Modelle Simulation Data Integration Layer Enterprise Information Layer User View Layer Referenzdaten Stammdaten Bewegungsdaten Stammdaten Referenzdaten Bewegungsdaten Neutrale Sicht auf alle Unternehmens- Bereiche Flexibel für alle Endebenutzer zugänglich

Analyseverfahren schon im Data Warehouse vorbereiten User View Layer Alle Modellformen in einem System Umfangreichste R-Unterstützung Integriertes Data Mining Multidimensionale Speicherung als Add On zum Star Star Schema und 3 NF Standardisierte Berichte Advanced Analytics Ad-hoc Query & Reporting Modelle Simulation Mining- Struktur Oracle R Enterprise Oracle Data Miner Würfel Oracle OLAP Relational Any SQL

Wachsende DWH-Informationslandschaft 1. Informations- bedarfsanalyse Informationsbedürfnisse der Endanwender stehen am Anfang Auflistung aller benötigten Kennzahlen Sachgebiets-/ Aspekt-/ Teilprozess- Bezogene Vorgehens- weise Data Integration Layer Enterprise Information Layer User View Layer T R R S D D T S S F D Wachsendes Informations- modell B T B D B B D F D B B D T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten F D Strategische Daten Taktische Daten

Wachsende DWH-Informationslandschaft 2. Analyse- / Geschäftsobjekt- / Konzeptionelles Modell Eine zusammenhängende Auswerteschicht wird entworfen Daraus leiten sich alle Informationsobjekte in dem gesamten DWH ab. Sachgebiets-/ Aspekt-/ Teilprozess- Bezogene Vorgehens- weise Data Integration Layer Enterprise Information Layer User View Layer T R R S D D T S S F D Wachsendes Informations- modell B T B D B B D F D B B D T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten F D Strategische Daten Taktische Daten

Wachsende DWH-Informationslandschaft 3. Das DWH wächst Nach und nach entsteht ein unternehmensweit reichendes zusammenhängendes Informationmodell (Enterprise Layer) Sachgebiets-/ Aspekt-/ Teilprozess- Bezogene Vorgehens- weise Data Integration Layer Enterprise Information Layer User View Layer T R R S D D T S S F D Wachsendes Informations- modell B T B D B B D F D B B D T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten F D Strategische Daten Taktische Daten

Exemplarische Fragestellungen der Anwender Kennzahlen aus dem Vertrieb Kennzahlen aus dem Marketing Umsatz_Pro_Produkt_Segment Top 3 Produkte pro Segment Verhältnis von Handelsware zu Vermittlungsdiensten Personalaufwand / Investition pro Segement Umsatz_Verhältnis: Privat-/Firmenkunde Verhältnis von Umsatz mit und ohne Kundenkarte Umsatz pro spezifischem Kundensegment Berufsgruppe Altersgruppe Gehaltsgruppe Umsatz pro Produkt- und Kundensegment Kennzahlen aus dem Controlling Abgleich zwischen Einkaufs- und Verkaufszahlen Kennzahlen aus der Buchhaltung Abgleich zwischen Bestell- und Liefervorgängen

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Das physische Modell - Betrachtungshorizont Datenarten Referenzdaten Stammdaten Bewegungsdaten Fakten Dimensionen Enterprise Information Layer User View Layer

Flexibles Informationsangebot + Schnelligkeit Schichten-übergreifender Abfragebereich schafft Schnelligkeit Durchgängige Schichten Verbundmodelle Zusätzliche Referenzdaten Schnelligkeit bei der Aufbereitung der Daten Enterprise Information Layer User View Layer R S R S D D F F D MJ A C Q L D schafft Flexibilität B B D F D Zusammenhängender Abfragebereich A D B D F F D D D B B B Selbstpflegendes Kennzahlensystem

Namensvergaben hilft bei der Orientierung Ziel: Die Wartbarkeit des Modells Prefixe für die unterschiedlichen Datenarten Fakten -> F_ Dimensionen -> D_ Referenzdaten -> R_ Stammdaten -> S_ Temporäre Daten -> tmp_ Bewegungsdaten -> B_ Suffixe für die unterschiedlichen Feld-Arten PK_/Schlüsselfelder -> _ID FK- Felder -> _ID (gleiche Namen wie PK-Fleder) Allgemeine Nummerierungen / Zählfelder -> _NR Datumsfelder -> _Dat / _Datum

Wortstammanalyse hilft bei der Klassifizierung von Column-Namen Hauptwort Eigenschafts- benennung Basistyp Kunden_Wohnart_Nr Information zu einem Kunden wird beschrieben Die Art und Weise, wie ein Kunde wohnt wird beschrieben unter- schiedliche Wohnungs- arten sind durch- nummeriert Bezugsobjekt Beschreibende Information Charakter des Attributes

Basistypgruppe Feldyp und Art des Wertes Rolle in Ab-hängigkeits-be-ziehung Sind NULLs erlaubt Muss Eindeutigkeit vorliegen Identifikatoren und bezeichnende Begriffe meist numerisch LHS nein ja Beschreibungen, Erzählungen, Texte meist Text , beliebige Zeichen RHS ja nein Klassifikatoren alphanumerisch, in Bezug setzende Begriffe, oft wenige Werte RHS eher nicht, eine Klassifizierung sollte für alle Sätze gelten nein Zustände meist Text , beliebige Zeichen RHS eher nicht, denn Zustände sollten für alle Sätze gelten, nein Zeiten Date / Time RHS ja nein Sequenzen, Aufzählungen Zählwerte) meist numerisch, oft versteckte Schlüsselkandidaten LHS nein   ja

Mengen meist numerisch, einfache Zahlenwerte ohne weitere Angaben RHS nein, wenn etwas gezählt wird, sollte es immer gezählt warden ja Operatoren und abgeleitete Größen meist Text , beliebige Zeichen RHS nein ja Werte meist numerisch, einfache Zahlenwerte ohne weitere Angaben (brauchen i. d. R. eine relativierende Bezugsgröße z. B. Preis -> Währung) RHS nein ja (brauchen i. d. R. eine relativierende Bezugsgröße z. B. Preis -> Währung) Maße, Bezugsgrößen, Einheiten meist Text , beliebige Zeichen RHS nein ja

Hilfsmittel Feldliste select substr(table_name,1,20) Tab, substr(column_name,1,20) Col, substr(data_type,1,8) Typ, substr(data_length,1,3) Len From dba_tab_columns WHERE owner = 'SV' and (table_name like 'F_%' or table_name like 'D_%') order by col / Über alle Tabellen Alphabetisch sortiert nach Spaltennamen Hilft beim Erkennen von Homonymen und Synonymen Hilft bei der Bewertung der Tauglichkeit von Spaltennamen Erlaubt Vorahnungen von Schlüsselkandidaten

Die Feldliste (Beispiel) TAB COL TYP LEN -------------------- -------------------- -------------------------------- ------------ D_FILIALEN ALLE_FILIALEN VARCHAR2 20 D_KUNDE ALLE_KUNDEN VARCHAR2 20 D_LAGER ALLE_LAGER VARCHAR2 40 D_MITARBEITER ALLE_MA VARCHAR2 10 D_REGION ALLE_ORTE CHAR 9 D_PRODUKT ALLE_PRODUKTE VARCHAR2 50 D_ZEIT ALLE_ZEITEN CHAR 11 D_KUNDE ANREDE VARCHAR2 10 D_SPEDITEUR ANZ_FAHRZEUGE NUMBER 22 D_KUNDE ANZ_KINDER VARCHAR2 5 D_ARTIKEL ARTIKEL_ID NUMBER 22 D_ARTIKEL ARTIKEL_NAME VARCHAR2 50 D_KUNDE BERUFSGRUPPE VARCHAR2 30 D_KUNDE BERUFSGRUPPEN_NR NUMBER 22 F_ZAHLUNGEN BEZAHLT VARCHAR2 5 F_ZAHLUNGEN_PARTITIO BEZAHLT VARCHAR2 5 D_KUNDE BILDUNG VARCHAR2 30 D_KUNDE BILDUNGS_NR NUMBER 22 D_KUNDE BRANCHE VARCHAR2 30 D_REGION BUNDESLAND VARCHAR2 255 D_LAGER BUNDESLAND VARCHAR2 50 D_LIEFERANTEN BUNDESLAND VARCHAR2 255 D_LAGER BUNDESLAND_NR NUMBER 22 D_LIEFERANTEN BUNDESLAND_NR NUMBER 22 D_REGION BUNDESLAND_NR NUMBER 22 F_POSITION DISCOUNT_PROZENT NUMBER 22 Die Feldliste (Beispiel)

Die Modellfirma: SERVICE GmbH Ursprungsgeschäft Baumärkte Erweiterungen Vermittlung von Handwerker-Service- Leistungen Vermittlung von Finanzdienstleitungen rund um das Bauen Direktes Endkundengeschäft über Internet Lieferservice direkt ins Haus Unterscheidung Privat- / Firmenkunden SERVICE GmbH

Erwartungen aus dem Unternehmen Buchhaltung: Es fehlen Daten Warum sind die Spediteursrechnungen so hoch? Sind alle Bestellungen korrekt bezahlt worden? Wie hoch sind die Versandkosten pro Lieferung? Was wurde storniert? Marketing: Absatzzahlen sind nicht aussagefähig Wie viel Kunden gibt es? Lohnt die Kundenkarte? Welche Segmentierung gibt es? Controlling: Vergleichbarkeit fehlt Was sind rentable Sparten? Wie rentabel sind einzelne Produkte? Was kosten Produkte im Einkauf? Wie teuer wurden Produkte verkauft? SERVICE GmbH Vertrieb: wünscht leichtere Auswertungen Was sind wichtige Produkte? Was sind rentable Sparten? Hat sich der Servicebereich gelohnt? Management: Kennzahlen fehlen Wie hoch sind die liquiden Mittel? Wie hoch sind die Außenstände? Vertrieb Marketing Buchhaltung Management Controlling 22

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Referenzdaten Referenzdaten

Stammdaten

Das Auswerte- Schema

Das Szenario und die Mengen 67.840.000 100 67.840.000 305 220.000 5479 100024 10 16461 15.104.000 67.840.000 65.920.001 37 34 6782745 1999 2996370

Schlüssel im Star Dim_Artikel Artikelsparte_Langname Levelschlüssel Artikelsparte Sparte Master Detail – Schlüssel: Numerische Felder Zwischen Zeit-Tabelle und Fakten-Tabelle DATE- Format FK-Constraint nicht nötig aber für den Optimizer bei Abfragen sinnvoll I.d.R. Keine PKs auf den Faktentabellen Parent Aggregation Artikelgruppe_Langtext Levelschlüssel Artikelgruppe Hierarchie Parent Aggregation Artikel_Langtext Levelschlüssel/ Objektname Artikel Business Key Artikel_Schlüssel Konsolidierungslevel Betrachtungslevel Künstlicher Dimension Key Dim_Schlüssel Fakten-FKs Fakten (Umsatz) 28

PK PK FKs PK PK PK PK

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Design-Prinzip - Ziel: Leichte Auswertbarkeit Verteilung der Daten in den Schichten Schichten-übergreifender Abfragebereich schafft Schnelligkeit ? Enterprise Information Layer User View Layer R S R S D D F F D D schafft Flexibilität B B D F D Zusammenhängender Abfragebereich D B D F F D D D B B B

Design-Prinzip - Ziel: Leichte Auswertbarkeit Verteilung der Daten in den Schichten Schichten-übergreifender Abfragebereich schafft Schnelligkeit Gleiche Daten an mehreren Stellen In unterschiedlichen Dimensionen Redundante (konvergente) Fakten- Daten Synchronisierung über Zentrale Stamm- und Referenzdaten Standardisierten ETL-Prozess Enterprise Information Layer User View Layer R S R S D D F F D D schafft Flexibilität B B D F D Zusammenhängender Abfragebereich D B D F F D D D B B B

Sich überschneidende Dimensionen Einzelne Attribute sind gleich Region Bundesland Kreis Wohnort Name Kunden_NR Kunde Region Bundesland Kreis Ort Filial_Kategorie Filial_NR Filiale Artikel_NR Menge Kunden_NR Preis Filial_Nr Umsatz 33

Standardisieren über einheitliche Referenzdaten Enterprise Information Layer User View Layer Referenzdaten

Master Detail – Fakten Tabellen

Die Wechselwirkung zwischen Master Detail Fakten-Tabellen

Konvergente Fakten-Felder

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Wo und wie wird im DWH indiziert Lade-Aktivitäten Lese-Aktivitäten Data Integration Layer Enterprise Information Layer User View Layer Process neutral / 3 NF Keine Indexe B*tree für Eindeutigkeit und als Primary Key Bitmaps Bitmaps B*tree für Primary Keys In den Dimensionen Tabellen

Bitmap-Index-Definitionen in Fakten-Tabellen CREATE bitmap index idx_BM_KAUF_ZEIT_ID on F_KAUF_Partition(ZEIT_ID) local; CREATE bitmap index idx_BM_KAUF_PRODUKT_ID on F_KAUF_Partition(PRODUKT_ID) local; CREATE bitmap index idx_BM_KAUF_ORT_ID on F_KAUF_Partition(ORT_ID) local; CREATE bitmap index idx_BM_KAUF_KUNDEN_ID on F_KAUF_Partition(KUNDEN_ID) local; CREATE bitmap index idx_BM_KAUF_FILIAL_ID on F_KAUF_Partition(FILIAL_ID) local; CREATE bitmap index idx_BM_KAUF_MITARBEITER_ID on F_KAUF_Partition(MITARBEITER_ID) local; CREATE bitmap index idx_BM_KAUF_MANAGER_ID on F_KAUF_Partition(MANAGER_ID) local; CREATE bitmap index idx_BM_KAUF_FILIALLEITER_ID on F_KAUF_Partition(FILIALLEITER_ID) local; Bitmap-Indexe auf alle Fremdschlüssel-Felder der gößeren Fakten-Tabellen (Ausnahme KAUF_ID) Bei partitionierten Fakten- Tabellen:LOCAL Index Komprimierung erfolgt automatisch Regelmäßiges Löschen und Neuanlegen der Indexe Star Query-Transformation

Umgang mit Bitmap-Indexe Rowid Name Abschluss Rating AAAHfVAAJAAAKOKAAA Meier Klasse_10 5 AAAHfVAAJAAAKOKAAB Schubert Abitur AAAHfVAAJAAAKOKAAC Klaus-Gustav AAAHfVAAJAAAKOKAAD Schmidt Diplom AAAHfVAAJAAAKOKAAE Langbein Doktor AAAHfVAAJAAAKOKAAF Hund AAAHfVAAJAAAKOKAAG Vogel AAAHfVAAJAAAKOKAAH Messner Abschluss= Klasse_10 Abschluss= Abitur Abschluss= Diplom Abschluss= Doktor 1 Feststellen, für welche Spalten Indexe nötig sind Selektivität der Werte in den betroffenen Spalten Prüfen Platzverbrauch im Blick haben Regelmäßig neu machen SELECT Name FROM KD_Table WHERE Abschluss=‘Diplom‘;

Platzverbrauch Bitmap-Indexe SQL> SELECT index_name,index_type blevel, (leaf_blocks*8/1000) MB, NUM_ROWS, distinct_keys FROM user_indexes; INDEX_NAME BLEVEL MB NUM_ROWS DISTINCT_KEYS ------------------------------ --------------------------- ---------- ---------- ------------- IDX_BM_LIEFERUNG_KAUF_ZEIT_ID BITMAP 99.656 76530 76447 IDX_BM_ZAHLUNGEN_ZEIT_ID BITMAP 117.672 83538 83349 IDX_BM_ZAHLUNGEN_PRODUKT_ID BITMAP 218.72 54851 210 IDX_BM_ZAHLUNGEN_KUNDEN_ID BITMAP 116 114030 3687 IDX_BM_ZAHLUNGEN_FILIAL_ID BITMAP 70.624 17662 31 IDX_BM_POSITION_ZEIT_ID BITMAP 104.104 83375 83349 IDX_BM_POSITION_PRODUKT_ID BITMAP 186.584 46854 210 IDX_BM_POSITION_KUNDEN_ID BITMAP 105.104 113930 3687 IDX_BM_POSITION_FILIAL_ID BITMAP 61.064 15271 31 IDX_BM_KAUF_ZEIT_ID BITMAP 65.848 83352 83349 IDX_BM_KAUF_PRODUKT_ID BITMAP 8.472 2211 23 IDX_BM_KAUF_ORT_ID BITMAP 29.28 7327 31 IDX_BM_KAUF_KUNDEN_ID BITMAP 70.8 113758 3687 IDX_BM_KAUF_FILIAL_ID BITMAP 29.264 7325 31 IDX_BM_KAUF_MITARBEITER_ID BITMAP 61.352 52979 1682 IDX_BM_KAUF_MANAGER_ID BITMAP 17.736 4424 20 IDX_BM_KAUF_FILIALLEITER_ID BITMAP 9.016 2241 4 1.373392 GB

select sum(k. gesamt_wert), p. segment, r. bundesland, z select sum(k.gesamt_wert), p.segment, r.bundesland, z.Kalender_jahr_code from F_Kauf_PARTITION K, d_Zeit Z, d_region R, d_produkt P where to_date(K.zeit_id,'DD-MON-YY') = to_date(Z.zeit_id,'DD-MON-YY') and K.ort_id = R.ort_id and K.produkt_id = p.produkt_id group by p.segment, r.bundesland, z.Kalender_jahr_code | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time ----------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 106 | 15048 (1)| 00:00:01 | 1 | HASH GROUP BY | | 1 | 106 | 15048 (1)| 00:00:01 |* 2 | HASH JOIN | | 1 | 106 | 15047 (1)| 00:00:01 |* 3 | HASH JOIN | | 1 | 87 | 14975 (1)| 00:00:01 | 4 | NESTED LOOPS | | | | | | 5 | NESTED LOOPS | | 1 | 65 | 14962 (1)| 00:00:01 | 6 | TABLE ACCESS FULL | D_PRODUKT | 305 | 5185 | 6 (0)| 00:00:01 | 7 | PARTITION RANGE ALL | | | | | | 8 | BITMAP CONVERSION TO ROWIDS | | | | | |* 9 | BITMAP INDEX SINGLE VALUE | IDX_BM_KAUF_PRODUKT_ID | | | | | 10 | TABLE ACCESS BY LOCAL INDEX ROWID| F_KAUF_PARTITION | 1 | 48 | 14962 (1)| 00:00:01 | 11 | TABLE ACCESS FULL | D_ZEIT | 5479 | 117K| 12 (0)| 00:00:01 | 12 | TABLE ACCESS FULL | D_REGION | 16461 | 305K| 71 (0)| 00:00:01 ----------------------------------------------------------------------------------------------------------------

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Partitioning senkt Verwaltungs-/Betriebskosten 24/7 Online Aktualisierung Index Aktualisierung Statistiken In Memory Komprimierung Kollektive Sicht (alle Tabellendaten) Storage Backup Archivierung Mai ja sehr günstig Partition- bezogene Sicht Juni nein Juli günstig nein nein August nein September Oktober ja High end ETL-Prozess November November ja ja

Partitionierung Welche Tabellen werden wie partitioniert Große Tabellen (ab mehrere Millionen Sätze) Meist die Fakten-Tabellen Meist RANGE auf Zeit-Spalte Effekte bei Sub-partitionierung Range -> 70%- 80% Performance-Optimierung

Partitioniert Partitioniert Partitioniert Partitioniert

Beispiel F_KAUF_PARTITION create table f_kauf_partition ( zeit_id date, Kauf_id number, Produkt_id number, ort_id number, Kunden_id number, Gesamt_Wert number, Gesamt_Discount_Prozent number, Filial_id number, Mitarbeiter_ID number, Manager_ID number, Filialleiter_ID number) PARTITION BY RANGE (ZEIT_ID) ( PARTITION jan10 VALUES LESS THAN (TO_DATE('2010-02-01','SYYYY-MM-DD')), PARTITION feb10 VALUES LESS THAN (TO_DATE('2010-03-01','SYYYY-MM-DD')), PARTITION mar10 VALUES LESS THAN (TO_DATE('2010-04-01','SYYYY-MM-DD')), PARTITION apr10 VALUES LESS THAN (TO_DATE('2010-05-01','SYYYY-MM-DD')), PARTITION mai10 VALUES LESS THAN (TO_DATE('2010-06-01','SYYYY-MM-DD')), PARTITION jun10 VALUES LESS THAN (TO_DATE('2010-07-01','SYYYY-MM-DD')), PARTITION jul10 VALUES LESS THAN (TO_DATE('2010-08-01','SYYYY-MM-DD')), ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PARTITION nov13 VALUES LESS THAN (TO_DATE('2013-12-01','SYYYY-MM-DD')), PARTITION dec13 VALUES LESS THAN (TO_DATE('2014-01-01','SYYYY-MM-DD')), PARTITION next_month VALUES LESS THAN (MAXVALUE)); ;

Beispielabfrage select sum(k.gesamt_wert) Wert, p.segment segment, r.bundesland land, z.Kalender_jahr_code Jahr from F_Kauf_PARTITION K, d_Zeit Z, d_region R, d_produkt P where to_date(K.zeit_id,'DD-MON-YY') = to_date(Z.zeit_id,'DD-MON-YY') and K.ort_id = R.ort_id and K.produkt_id = p.produkt_id and Z.monat_des_Jahres = 1 and Z.KALENDER_JAHR_CODE = 2012 group by p.segment, r.bundesland, z.Kalender_jahr_code [F_Kauf K,]

Mit Partitioning Elapsed: 00:00:08.90 Execution Plan ---------------------------------------------------------- Plan hash value: 217629528 -------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | | 0 | SELECT STATEMENT | | 1 | 119 | 15048 (1)| 00:00:01 | | | | 1 | HASH GROUP BY | | 1 | 119 | 15048 (1)| 00:00:01 | | | |* 2 | HASH JOIN | | 1 | 119 | 15047 (1)| 00:00:01 | | | |* 3 | HASH JOIN | | 1 | 100 | 14975 (1)| 00:00:01 | | | | 4 | NESTED LOOPS | | | | | | | | | 5 | NESTED LOOPS | | 1 | 65 | 14962 (1)| 00:00:01 | | | | 6 | TABLE ACCESS FULL | D_PRODUKT | 305 | 5185 | 6 (0)| 00:00:01 | | | | 7 | PARTITION RANGE ALL | | | | | | 1 | 49 | | 8 | BITMAP CONVERSION TO ROWIDS | | | | | | | | |* 9 | BITMAP INDEX SINGLE VALUE | IDX_BM_KAUF_PRODUKT_ID | | | | | 1 | 49 | | 10 | TABLE ACCESS BY LOCAL INDEX ROWID| F_KAUF_PARTITION | 1 | 48 | 14962 (1)| 00:00:01 | 1 | 1 | |* 11 | TABLE ACCESS FULL | D_ZEIT | 31 | 1085 | 12 (0)| 00:00:01 | | | | 12 | TABLE ACCESS FULL | D_REGION | 16461 | 305K| 71 (0)| 00:00:01 | | |

Ohne Partitioning Elapsed: 00:00:30.10 Execution Plan ---------------------------------------------------------- Plan hash value: 2124788479 ------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | | 0 | SELECT STATEMENT | | 80 | 4960 | 29304 (2)| 00:00:01 | | 1 | HASH GROUP BY | | 80 | 4960 | 29304 (2)| 00:00:01 | |* 2 | HASH JOIN | | 154 | 9548 | 29303 (2)| 00:00:01 | | 3 | VIEW | VW_GBC_13 | 154 | 6622 | 29231 (2)| 00:00:01 | | 4 | HASH GROUP BY | | 154 | 11088 | 29231 (2)| 00:00:01 | |* 5 | HASH JOIN | | 4680K| 321M| 29003 (2)| 00:00:01 | | 6 | TABLE ACCESS FULL | D_PRODUKT | 305 | 5185 | 6 (0)| 00:00:01 | |* 7 | HASH JOIN | | 4680K| 245M| 28974 (2)| 00:00:01 | |* 8 | TABLE ACCESS FULL| D_ZEIT | 31 | 1085 | 12 (0)| 00:00:01 | | 9 | TABLE ACCESS FULL| F_KAUF | 15M| 287M| 28888 (1)| 00:00:01 | | 10 | TABLE ACCESS FULL | D_REGION | 16461 | 305K| 71 (0)| 00:00:01 |

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Statistiken sammeln- auch für Partitioen Aktualität der Statistiken Skripte mit allen Partitionen EXEC DBMS_STATS.GATHER_TABLE_STATS ('SV','F_KAUF',estimate_percent=>20); EXEC DBMS_STATS.GATHER_TABLE_STATS ('SV','F_Kauf_partition', estimate_percent=>20, GRANULARITY => 'PARTITION');

Storage-Bedarf Regelmäßige Kontrolle der verbrauchten Ressourcen select substr(segment_name,1,25) Segment, round((bytes/1000000000),2) GB,bytes, blocks,extents from user_segments where segment_type = 'TABLE‘ and segment like ‘F%’; SEGMENT GB BYTES BLOCKS EXTENTS ------------------------------ ---------- ---------- ---------- ---------- F_KAUF .63 627048448 76544 146 F_LIEFERUNG 2.58 2578448384 314752 222 F_POSITION 1.95 1946157056 237568 212 F_ZAHLUNGEN 4.1 4097835008 500224 245 F_CHARGE 1.74 1744830464 212992 209 F_STORNO .25 251658240 30720 101 F_EINKAEUFE .01 12582912 1536 27 F_RETOUREN .1 100663296 12288 83

Platzverbrauch von partitionierten Tabellen SELECT table_name, sum(num_rows), sum(blocks), round(sum(((blocks*8192)/1000000000)),2) GB FROM user_tab_partitions group by table_name order by table_name TABLE_NAME SUM(NUM_ROWS) SUM(BLOCKS) GB ------------------------------ ------------- ----------- ---------- F_KAUF_PARTITION 15103875 126816 1.04 F_LIEFERUNG_PARTITION 65924495 477444 3.91 F_POSITION_PARTITION 67822775 420463 3.44 F_ZAHLUNGEN_PARTITION 67832265 802824 6.58

Komprimierung alter table TMP_KAUF_POSITION move compress; Einfache Tabellen Partitionierte Tabellen alter table TMP_KAUF_POSITION move compress; ALTER TABLE F_KAUF_PARTITION MOVE PARTITION APR10 COMPRESS FOR ALL OPERATIONS NOLOGGING;

Datenmengen ohne Partitionierung Vorher Nachher Komp-Zeit Anz. Zeilen F_ZAHLUNGEN 6.44 4.1 2:23.47 67.840.000 TMP_KAUF_POSITION 2,55 1.48 1:45.19 F_POSITION 3.36 1.95 1:18.92 F_LIEFERUNG 3.78 2.58 1:31.57 65.920.001 F_KAUF 0.87 0.63 0:17.95 15.104.000

Datenmengen mit Partitionierung Ohne Part Nachher Komp-Zeit Anz. Zeilen F_ZAHLUNGEN 6.57 6.44 3 67.840.000 TMP_KAUF_POSITION 2,55 F_POSITION 3.44 3.36 4 F_LIEFERUNG 3.91 3.78 65.920.001 F_KAUF 1,03 0.87 1.03 4:17.95 15.104.000

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views

Automatisches Summenmanagement Materialized Views Level 4 Regionen Regionen_ID Transparanz: Abfragen nur auf die Original-Tabellen Flexibel: Alle Felder einer Dimensionstabelle sind abfragbar Stale: Stellt selbst fehlende Aktualität fest ETL-Effizient: Aktualisiert sich selbst Level 3 Bundesland Bundesland_ID Level 2 Regionen Dimension Kreise Kreise_ID Level 1 Orte Orte_ID PLZ Query Rewrite Parallel eingesetzte Techniken Materialized Views Query Rewrite Verwendung von Dimension Tables Fakten Tabelle Materialized View

Materialized Views sparen Plattenplatz und minimieren die Objektanzahl Top/Alle_Artikel Summe pro Segement Segement Summe pro Sparte Artikelsparte Query Review Summe pro Gruppe Artikelgruppe Summe pro Artikel Artikel Summe pro Charge Artikelcharge Summe pro Charge Menge Umsatz

Nested Materialized Views nutzen bereits ausgeführte IO-Leistung Materialized View Level 4 Aufwendige Join-Operation DIM_Zeit FAKT_Umsatz DIM_Produkte Umsatz Prod.Gr A Umsatz Prod. Gr B relativ zum Gesamtjahresumsatz Summierung/Monat Summierung/Jahr Umsatz Prod.Gr B Materialized View Level 3 Materialized View Level 2 Materialized View Level 1 Basistabellen IO

Anwendung: Auswertungen über Ein-/Verkäufe Level 1: Getrennte MAVs mit Monats-Aggregat pro Produkt auf Einkaufs-Fakten auf Verkaufs-Fakten Level 2: Zusammenführen der Ein-/Verkaufs-Aggregation mit Mengenvergleiche und Berechnungen Level 3: Basierend auf den Mengen von Level 2 werden Finanzberechnungen gemacht Level 3: Zusätzliche Berechnungen Aggregation pro Produktgruppe / Segment usw

Produktgruppen-Sicht Level 4 Mv_EA_Finanz_Kum_Gruppe_Monat Produktgruppen-Sicht Finanz-Sicht / Berechnungen LFD_Bestands_Wert / Produkt / Monat LFD_Saldo / Produkt / Monat Kumulierter EK / Produkt Kumulierter VK / Produkt Kumuliertes Saldo Level 3 Mv_EA_Finanz_Kum_Monat Jahres-Sicht Bestands-/Lager-Sicht / Berechnungen LFD_Bestands_Menge / Produkt / Monat VK_Menge / Produkt / Monat EK_Menge / Produkt / Monat Kumulierte EK Menge / Produkt Kumulierte VK Menge / Produkt Mav_Einkauf_Verkauf_Diff_Jahr Mv_EA_Menge_Kum_Monat Level 2 Mav_Produkt_Monat_einkaeufe Level 1 Mav_Produkt_Monat_Verkaeufe EA: Einkauf/Verkauf Kum: kumuliert F_EINKAEUFE F_POSITION F_KAUF

Das Materialized View Konzept Optionen beim Anlegen Option BUILD DEFERRED Option REFRESH FORCE ON DEMAND Option ENABLE QUIRY REWRITE Sprechende Namen wählen Definition nur auf dem untersten Level der verbundenen Dimensionen Immer COUNT() in die SELECT-Definition dbms_mview.pmarker(u.rowid) – Funktion mit einbauen Dimension-Table Definitionen einbauen

Materialized View Beispiel create MATERIALIZED VIEW Mav_Zeit_Region_Produkt_kauf BUILD DEFERRED REFRESH FORCE ON DEMAND ENABLE QUERY REWRITE as select sum(k.gesamt_wert), p.Produkt_ID, r.ort_id, z.zeit_id, COUNT(*) from F_Kauf K, d_Zeit Z, d_region R, d_produkt P where K.zeit_id = Z.zeit_id and K.ort_id = R.ort_id and K.produkt_id = p.produkt_id group by p.Produkt_ID, r.ort_id, z.zeit_id

Dimension (Beispiel) CREATE DIMENSION d_produkt LEVEL Produkt IS d_produkt.PRODUKT_ID LEVEL Produktgruppe IS d_produkt.PRODUKTGRP_ID LEVEL Segment is d_produkt.SEGMENT_ID LEVEL Vermittlungs_Art IS d_produkt.VERMITTL_ART_ID LEVEL Produktart IS d_produkt.PRODUKTART_ID LEVEL Kanal IS d_produkt.KANAL_ID LEVEL Alle_Produkte IS d_produkt.ALLE_PRODUKTE HIERARCHY H_Produkt_SEGment (Produkt CHILD OF Produktgruppe CHILD OF Segment CHILD OF Produktart CHILD OF Kanal CHILD OF Alle_Produkte ) HIERARCHY H_Produkt_Vermittlungs_art (Produkt CHILD OF Produktgruppe CHILD OF Vermittlungs_Art CHILD OF Produktart CHILD OF Kanal CHILD OF Alle_Produkte ) ATTRIBUTE att_Produkt LEVEL Produkt DETERMINES (d_produkt.PRODUKT, d_produkt.VK_PREIS,d_produkt.PREF_LIEFER_ID) ATTRIBUTE att_Produktgruppe LEVEL Produktgruppe DETERMINES d_produkt.PRODUKTGRUPPE ATTRIBUTE att_Segment LEVEL Segment DETERMINES d_produkt.SEGMENT ATTRIBUTE att_Vermittlungs_Art LEVEL Vermittlungs_Art DETERMINES d_produkt.VERMITTL_ART ATTRIBUTE att_Vermittlungs_Art LEVEL Produktart DETERMINES d_produkt.PRODUKTART ATTRIBUTE att_KANAL LEVEL Kanal DETERMINES d_produkt.KANAL ;

Data Warehouse Technik im Fokus Themenübersicht Data Warehouse Technik im Fokus Ausgangssituation Architekturüberlegungen Startpunkt Anwender Namensregelungen Das physische Modell Verteilung auf Schichten Schlüssel und Indizierung Compression Partitionierung Statistiken Storage-Bedarf Materialized Views Die Abfragen und die erreichten Kennzahlen

Umsatz pro Segment UMSATZ SEGMENT ---------- ---------------------- Select sum(kp.vk_wert) Umsatz, p.segment from f_position kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.segment; UMSATZ SEGMENT ---------- ---------------------- 25358040 Erstellungsleistung 203098265 Baumarktware 4365920 Buergschaft 5354648 Finanzgeschaeft 80138814.9 IT-Ware 1331202 Darlehensvermittlung 44640800 Planungsleistung

Top 3 Produkte pro Segment select * from (select rank() over (partition by p.segment order by sum(kp.vk_wert) desc ) as rangfolge, p.produkt, p.segment, round(sum(kp.vk_wert),0) as umsatz from f_position_partition kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.segment,p.produkt order by p.segment) where rangfolge < 4 RANGFOLGE PRODUKT SEGMENT UMSATZ ---------- --------------------------- ------------------------------- ---------- 1 Universal_Wagenheber Baumarktware 17361703 2 Bohrmaschine 800 Watt Baumarktware 8568086 3 Duschbecken 80 Baumarktware 7655290 1 Absicherungsbuergschaft Buergschaft 4365920 1 Kapitalvermittlung Darlehensvermittlung 1331202 1 Bauleitung Erstellungsleistung 22695550 2 Elektorarbeiten Erstellungsleistung 891822 3 Maurerarbeiten Erstellungsleistung 890588 1 Investitionsdarlehen Finanzgeschaeft 2646342 2 Hyothekendarlehen Finanzgeschaeft 2259600 3 Kleinkredit Finanzgeschaeft 448706 1 GRX_GRUMOR IT-Ware 25661311 2 SUN_AZOR_BIG IT-Ware 22529704 3 XT_MM IT-Ware 9559710 1 Architektenplan Planungsleistung 22605050 2 Statikplan Planungsleistung 22035750

Verhältnis Handelsware / Vermittlungsleistung Select sum(kp.vk_wert) Umsatz_pro_Prod_Art, p.produktart from f_position kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.produktart UMSATZ_PRO_PROD_ART PRODUKTART --------------------------------------- 81050610 Vermittlung 283237080 Handelsware

Weitere Kennzahlen (Ausschnitt) (Marketing) Kunden-Mengenverhältnis Privat-Kunden Firmen-Kunden Umsatz-Verhältnis Privat-Kunden Firmen-Kunden Verhältnis Umsatz mit und ohne Kundenkarte   select count(status), status from d_kunde group by status; select sum(ka.GESAMT_WERT) Umsatz, kd.kundenkarte * from f_kauf ka, d_kunde kd where ka.kunden_id = kd.kunden_id group by kd.kundenkarte select round(sum(ka.VK_WERT),0) Umsatz, p.segment from f_position ka, d_Produkt P where ka.produkt_id = p.produkt_id group by p.segment * order by umsatz  

Bestell- und Liefervorgänge (Buchhaltung) SQL> select * from (select count(kauf_id) Anz_Lieferungen from f_lieferung), (select sum(Gesamt_wert) Lieferwert from f_lieferung), (select sum(Lieferkosten) Kosten_Lieferungen from f_lieferung), (select count(kauf_id) Anz_Positionen from f_position), (select count(kauf_id) Anz_Kaeufe from f_kauf), (select count(kauf_id) Anz_Lieferfreie_Kaeufe from f_kauf where produkt_id != 0), (select count(*) Anz_Stornos from (select distinct Kauf_ID, Positions_ID from f_storno)), (select sum(p.VK_Wert) Wert_Stornos from f_position p,f_storno s where p.kauf_id = s.kauf_id and p.position_id = s.positions_id) ANZ_LIEFERUNGEN LIEFERWERT KOSTEN_LIEFERUNGEN ANZ_POSITIONEN ANZ_KAEUFE ANZ_LIEFERFREIE_KAEUFE ANZ_STORNOS WERT_STORNOS --------------- ---------- ------------------ -------------- ---------- ---------------------- ----------- ------------ 5025000 1262158240 63107912 5135000 1115000 110000 2980 155510.87

Umsatz, Einkauf, Gewinn pro Produkt Controlling select a.Produkt,a.Umsatz_pro_Prod,b.einkauf_pro_Prod, (a.Umsatz_pro_Prod-b.einkauf_pro_Prod) Gewinn_pro_Prod from (select round(sum(kp.vk_wert),0) Umsatz_pro_Prod, p.produkt Produkt from f_position kp, d_produkt p where p.produkt_id = kp.produkt_id group by p.produkt) a, (select round(sum(e.menge*e.ek_preis),0) einkauf_pro_Prod, p.produkt Produkt from f_einkaeufe e, d_produkt p where p.produkt_id = e.produkt_id group by p.produkt) b where a.produkt = b.produkt order by a.Umsatz_pro_Prod PRODUKT UMSATZ_PRO_PROD EINKAUF_PRO_PROD GEWINN_PRO_PROD -------------------------------------------------- --------------- ---------------- --------------- Luesterklemmen 1,5 23281 7132 16149 Muffe 15mm 46744 12387 34357 Reinigungstuecher 46821 12802 34019 Eimer_10l 69715 19609 50106 Sitzauflage 69738 20788 48950 Schrauben_M12 69924 20750 49174 Schrauben_M9 70052 22337 47715 Bindeseil 70415 18577 51838

DATA WAREHOUSE