Click to edit title

Werbung
DATA WAREHOUSE
Oracle Data Warehouse –
Datenbank basierte ETL-Prozesse
Reduzieren Sie Ihre Ladezeiten! Organisieren Sie Ihre ETL-Prozesse!
DATA WAREHOUSE
Themenübersicht
Datenbank-basierte ETL-Prozesse
• Anforderungen an den ETL-Prozess im Data Warehouse
Insert Picture Here
• Speichermanagement und Grundlagentechniken
Click to edit title
• Blöcke,
Extents, Segmente, Tablespace
Click to edit Master text
styles
• Direct Path Load, Mengenbasiertes Laden
• Logging / NoLogging
• Hilfsmittel für schnelles Laden
• Prüftechniken mit SQL
• Szenario zum Prüfen von Daten
• Weitere Techniken und Tools
2
Das große Klagen
Bzgl. System-Nutzen
• Lieferzeiten der Daten zu lange (Latenzen)
• Zu schwerfällig bei Änderungen
Insert Picture
Click to
edit title
• Informationen
mehrfach
vorhanden
Click
to edit Master
text stylesSichten
• Fehlende
unternehmensweite
• Nicht die richtigen Informationen für die Anwender
• Anwender haben zu wenig unmittelbaren Einfluss auf die Daten
Bzgl. Maintenance und Technik
• Immer teuerer
• Maintenance-Aufwand zu hoch / Personal
• Explodierende Datenmengen -> Storage- / Ladezeitenthematik
Here
ETL ist mehr als nur Daten von A nach B kopieren
Quellsystem
DWH-System
n-tier
n-tier
Insert Picture Here
Click to edit title
Click to edit Master text styles
Application Server
ETL?
ETL?
4
Application Server
Data Integration
Layer
Enterprise Information
Layer
Click to edit title
Click to edit Master text styles
User View
Layer
BI-Tool Server + Caches
Was definieren wir als ETL-Prozesse?
Insert Picture Here
OLTP + Data Warehouse + BI
von
5
L a t e n z
bis
Reduzieren Sie Ihre
Ladezeiten auf ¼!
Hilfsmittel in der Datenbank (Auflistung)
• Parallelisierung
• Partitioning / Partition Exchange Load (PEL)
• Direct Path Load
• Set-Based SQL
• Pipelined Table Functions
Click
to edit Master text styles
• Materialized Views
• External Tables / Loader
• Transportable Tablespace
• Data Pump
• Database Link
• Direkt FTP-Load
Click to edit title
Insert Picture Here
1. Integrieren
1. Integrieren
2. Informations-Mehrwerte
3. Kopieren
4. Sammeln
• Identifizieren von identischen oder zusammenhängenden
Informationen
• Synonymen-/Homonymen-Thematik
•
Click to edit title
Aggregationslevel angleichen
Click to
edit Master
text styles
• Identifizieren
und Angleichen
• Formate, Zustände, Sichtweisen etc...
8
Betrag / Summe
Artikel / Produkt
Insert Picture Here
Artikel / Artikelgruppe
Meter / Kilometer
Lose Stücke / Gebinde
2. Informations-Mehrwerte
• Qualitativ gute Informationen schaffen
1. Integrieren
2. Informations-Mehrwerte
3. Kopieren
4. Sammeln
• Datenqualitäts-Checks
•
•
•
•
•
Vollständigkeit
Datentypen
Referentielle Integrität
Eindeutigkeit
Korrekte Werte
Click to edit title
Insert Picture Here
Click to edit Master text styles
• Fachliche Regeln überprüfen
• Berechnungen / Aggregationen / Zusammenfassungen
• Anreichern und Vermengen mit Referenzdaten
• Lookups
• Marktdaten
• Vergleichszahlen
9
3. Kopieren
1. Integrieren
2. Informations-Mehrwerte
3. Kopieren
4. Sammeln
• 1:1-Datenbewegung
• Einfachste Aufgabe
• Mengen-Operationen
Click to edit title
• Ohne zusätzliche Logik
Click to edit Master text styles
• Überwindung von Systemgrenzen
• Vorschriften zum Mapping
• Schnittstellen-Konventionen
• Aspekt der Performance
10
Insert Picture Here
4. Sammeln
• Einlagern von Daten
1. Integrieren
2. Informations-Mehrwerte
3. Kopieren
4. Sammeln
• Zeitliche Rahmenvorgaben
• Historisierung
Click von
to Daten
edit title
• Versionieren
• Kategorisieren
/ Inventarisieren
Click
to edit Master
text styles von Daten
• Dokumentieren der eingelagerten Informationen
•
•
•
•
11
Referenzen aufbauen
Alterungs-Eigenschaften berücksichtigen
Dokumentieren
Mehr als nur eine Momentaufnahme
Insert Picture Here
Ziele eines effizienten ETL-Prozesses
• Ressource-schonend
• Rechenzeit, Storage
• Schnell änderbar und pflegbar
Insert
to edit title
• KurzeClick
Laufzeiten
Click
to edit Master
text styles
• Erzeugen
von stimmigen
Abfrage-Ergebnissen
• Erleichterung für BI-Tools
....
Picture Here
Allgemeine Regeln
• Schichtenmodell als Orientierung nutzen
• Auf die spezifischen Anforderungen und Situationen in den
jeweiligen Schichten reagieren
Insert Picture
Click to edit
• Transformationen
so frühtitle
wie möglich im Verlauf des
Click Schichtenmodells
to edit Master text styles
• Alle Schichten innerhalb derselben Datenbank
• Daten nur dann bewegen, wenn sich qualitativ etwas verändert.
• Nur diejenigen Daten laden, die wirklich benötigt werden
• Prüfungen an wenigen Stellen konzentrieren
• Bei Data Marts prüfen, ob sie permanent bereit gehalten werden
Here
R
T
R
User View Layer
D
S
B
T
Click to edit Master
text styles
B
B
B
B
B
Strategische
Daten
D
Zusammenhängender
Abfragebereich
Enterprise Information Layer
S S
Click Tto edit title
Operative
Daten
14
Data Integration Layer
aufbereiten
integrieren
Flexibilität und schnelles Bereitsstellen
F
Insert
Picture
Here
D
D
D
F
D
F
D
D
Taktische
Daten
R: Referenztabellen
T: Transfertabellen
S: Stammdaten
B: Bewgungsdaten
D: Dimensionen
F: Fakten
Angemessen in den Situationen agieren
Data Integration
Layer
Enterprise Information
Layer
Keine to edit title
Referenzdaten
Click
Stammdaten
Daten
Bewegungsdaten
Click to edit Master text styles
(granulare
Transaktionsdaten)
User View
Layer
Insert Picture
Dimensionen
Fakten
Vorberechnete
Kennzahlen
Here
R: Referenztabellen
T: Transfertabellen
S: Stammdaten
B: Bewgungsdaten
D: Dimensionen
F: Fakten
15
Die Organisation des ETL-Prozesses
Data Integration
Layer
Enterprise Information
Layer
Insert Picture Here
Click
to editStammtitle
Die Masse
Richtig
Click
to edit Master
selektieren
aller
Prüfungen
User View
Layer
text
styles
Referenzdaten
aktualisieren
Nur
Möglichst viele
denormalisierende
Kennzahlen
Joins
in die
Datenbank
Repository
(Glossar, alle Objekte)
Für alle Aktionen den frühest möglichen Punkt finden
16
Angemessen in den Situationen agieren
Data Integration
Layer
Enterprise Information
Layer
Temporäre
20% Volumen f. viele
Click
to
edit
title
Daten
Kleine Tabellen
Click to edit Master text styles
80% Volumen f.
wenige
große Tabellen
=> partitioniert
17
User View
Layer
Wieder
Insert Picture
herstellbare
Daten
Here
Lade-Aktivitäten an Schichtübergängen
Integration
Persistent
Flüchtige Daten
Clearing-Verfahren,
technisches, logisches,
semantisches Prüfen
Enterprise
Click to edit title
Normalisieren
(Granularisieren)
Click to edit Master text styles
Generische
Datenstrukturen
(isolierte Tabellen,
teil-ausgeprägte Datentypen)
User View
Kopien / teilpersistent
dynamisch
Denormalisieren
Historisieren
z.T. Aggregieren
3 NF Datenstrukturen
(ER-Tabellen,
ausgeprägte Datentypen)
Insert Picture Here
Multidimensionale Modelle
(ER-Tabellen,
ausgeprägte Datentypen)
Aktivierte Constraints
Keine Constraints
Kopieren
Selektieren
18
Mengenbasiertes
Prüfen ohne
Constraints
Umschlüsselung
Lookups -> Referenz-/Stammdaten
Joins
Aufbauen von Distinct-Strukturen
(Normalisieren)
Umschlüsselung
Lookups -> Dimensionsdaten
Joins - Denormalisieren
Verfahren für schnelles ETL in der Datenbank
Data Integration
Layer
Enterprise Information
Layer
Insert
Picture
Here
Beknnte
Kenn-
ClickContraintto editPartition
title
freies
Direct Path
Prüfen mit
in temporäre
MengenTabellen
basiertem
SQL
Exchange
&LOAD
in partit.
Tabellen
(PEL)
Click to edit Master text styles
Selektieren
Statt
kopieren
User View
Layer
Unveränderte
Bewegungsdaten liegen
lassen
zahlen ausGroße
Fakten-Tab. schließlich
über PEL. über
MAVRefresh
Kennzahlen
in die DB
weniger
Koipien in
BI-Tools
Themenübersicht
Datenbank-basierte ETL-Prozesse
• Anforderungen an den ETL-Prozess im Data Warehouse
Insert Picture Here
• Speichermanagement und Grundlagentechniken
Click to edit title
• Blöcke,
Extents, Segmente, Tablespace
Click to edit Master text
styles
• Direct Path Load, Mengenbasiertes Laden
• Logging / NoLogging
• Hilfsmittel für schnelles Laden
• Prüftechniken mit SQL
• Szenario zum Prüfen von Daten
• Weitere Techniken und Tools
20
Zuordnung Datenobjekten und Speicher
DB-Objekte
Table
Click to edit title
Click to editPartition
Master text styles
Index
Mview
Insert Picture Here
Speicherobjekte
Click to edit title
Click to edit Master text styles
Insert Picture Here
Die automatische Extent-Vergrößerung
• Automatische Allokierung von weiteren Segmenten
• Exponentielles Vergrößerungs-Mass
select
Insert Picture Here
t.TABLE_NAME,
t.blocks,t.EMPTY_BLOCKS,t.AVG_SPACE,t.AVG_ROW_LEN,t.NUM_ROWS,
Click
to
edit
title
t.pct_free, t.compression,s.EXTENTS,s.bytes seg_bytes,e.blocks ext_blks,e.bytes ext_bytes
Click from
to edit user_segments
Master text
styles
s, user_tables t, user_extents e
where
t.TABLE_NAME = s.segment_name
and e.SEGMENT_NAME = s.SEGMENT_NAME
and t.TABLE_NAME = 'F_UMSATZ';
TABLE_NAME BLOCKS EMPTY_BLOCKS AVG_ROW_LEN NUM_ROWS PCT_FREE COMPRESS EXTENTS SEG_BYTES EXT_BLKS EXT_BYTES
----------------- ------------ ----------- -------- -------- -------- ------- ---------- -------- --------F_UMSATZ
277772
0
34 51200000
10 DISABLED
217 2281701376
8
65536
F_UMSATZ
277772
0
34 51200000
10 DISABLED
217 2281701376
128
1048576
F_UMSATZ
277772
0
34 51200000
10 DISABLED
217 2281701376
1024
8388608
F_UMSATZ
277772
0
34 51200000
10 DISABLED
217 2281701376
8192 67108864
Block- und Satzstruktur
Click to edit title
Insert Picture Here
Click to edit Master text styles
Row header
Datenbank Block
Column length
Column value
High Water Mark
Nach INSERTS:
Extent ID
0
1
2
3
4
Segment
Insert Picture Here
Click to edit title
Click to edit Master text styles
High-water mark
Nach DELETES:
Extent ID
0
1
2
3
4
Segment
Used block
Unused block
Free space
after delete
Wie wird die „High Water Mark“ bestimmt
TOTAL_BLOCKS
Click to edit title
Click
to edit Master
text
styles
Extent ID
0
1
2
UNUSED_BLOCKS
Insert Picture Here
3
4
Segment
High-water mark
LAST_USED_EXTENT_FILE_ID,
LAST_USED_EXTENT_BLOCK_ID
Deallocate Space
0
1
2
3
4
Segment
Extent ID
Before
deallocation
Insert Picture Here
Click to edit title
TABLE
tablename
ClickALTER
to edit
Master
text styles
High-water mark
DEALLOCATE UNUSED;
Extent ID
0
1
2
4
Segment
After
deallocation
Used block
3
Unused block
Free space
after delete
Truncate Table
TRUNCATE TABLE tablename
Insert Picture Here
Click to edit title
Click to Extent
edit ID
Master text
styles
0
1
Segment
Free space
High-water mark
Direct Path Load
INSERT /*+APPEND */ INTO DWH.F_UMSATZ
NOLOGGING
Insert Picture Here
SELECT
* FROM
OLTP.BESTELLUNGEN;
Click
to edit
title
Click to edit Master text styles
F_UMSATZ
Server
process
Segment
Used block
Free space after delete
High-water mark
Blocks used by inserted rows
Paralleler Direct Path Load
ALTER SESSION ENABLE PARALLEL DML;
INSERT /*+APPEND PARALLEL(F_UMSATZ,2) */
INTO Click
DWH.F_UMSATZ
Insert
to editNOLOGGING
title
SELECT * FROM OLTP.BESTELLUNGEN;
Picture Here
Click to edit Master text styles
Slave
process
Slave
process
F_UMSATZ
Segment
Used block
Free space after delete
High-water mark
Temporary segments
„Convential“ und „Direct Path“ - Load
Instance
SGA
Array
insertClick
Shared pool
Insert
Picture Here
Extent
to edit title
ClickConventional
to edit Master text styles
Table
management
Data
save
Direct
path
High-water mark
Space used only by conventional load
Direct Path / Convential Path
SQL Loader
External Table
Insert Append
CTAS
Convential Path
SQL Command Processing
Click
to edit title
Space Management
O r a c l e
Direct
Path
Benutzer
Click to edit Master
text
styles
Find partial
blocks
Get new extents
Adjust High
Water Mark
Fill partial blocks
Read Database
Blocks
Buffer
Cache
Write Database
Blocks
Database
S e r v e r
Buffer Cache Management
- Manage queues
- Manage contention
Convential Path
• Commits
• Reuse Free Space in Blöcken
• Constraint Checks
• Immer Undo Data / Logging
• Daten zunächst immer in SGA Buffer
• Tabelle für andere Benutzer offen
Direct Path
• Data Save
• Schreiben oberhalb der High Water Marks
• Keine Constraint Checks
• Nur PK, Not Null, Unique Key
• Kein Logging
• Daten nicht in SGA Buffer
• Tabelle gesperrt für andere Benutzer
Insert Picture Here
Testfall
F_Umsatz
F_Umsatz_DP
ARTIKEL_ID
KUNDEN_ID
ZEIT_ID
REGION_ID
KANAL_ID
UMSATZ
MENGE
UMSATZ_GESAMT
ARTIKEL_ID
KUNDEN_ID
ZEIT_ID
REGION_ID
KANAL_ID
UMSATZ
MENGE
UMSATZ_GESAMT
Click to
edit title
51.100.000
Click to edit MasterSätze
text styles
Insert Picture
Here
51.100.000
SQL> insert into f_umsatz_DP select * from f_umsatz;
51200000 Zeilen erstellt.
Abgelaufen: 00:07:57.73
SQL> insert /*+ APPEND */ into f_umsatz_DP select * from f_umsatz;
51200000 Zeilen erstellt.
Abgelaufen: 00:00:27.24
SQL> insert /*+ APPEND PARALLEL(F_UMSATZ_DP,2) */ into f_umsatz_DP select * from f_umsatz;
51200000 Zeilen erstellt.
Abgelaufen: 00:00:20.68
Sätze
Beliebte Fehler
Schreiben einzelner INSERTS
mit APPEND
Create or Replace procedure ABC as
.....
Cursor pos is select .....
....
Begin
open pos;
loop
exit when pos%notfound;
.....
Insert /*+ APPEND */ into Ziel_Tabelle
select ......
......
Commit;
end loop; .....
End;
Click to edit title
Stattdessen INSERTS mit
vielen Sätzen
Insert /*+ APPEND */ into
ziel_Tabelle
select ......
Insert Picture Here
Click to edit Master text styles
Direct Path Load nur mit
echten Mengen und nicht
bei Einzel-Inserts
Beliebte Fehler
Batch-Lauf 1
Batch-Lauf 2
(Session 1)
(Session 2)
Click to edit title
Insert /*+ APPEND */ into
F_UMSATZ
select ......
Click to edit Master text styles
Insert Picture Here
Insert /*+ APPEND */ into
F_UMSATZ
select ......
Tabelle
BESTELLUNG
Gegenseitiges Blockieren durch Direct Path Loads auf
In unterschiedlichen Sessions auf die gleiche Tabelle
Empfehlungen bzgl. Spacemanagement
• PCTFREE auf 0 setzen
• In der Regel sind keine späteren UPDATES nötig
• Spart gegenüber dem Default von 10% auch 10% IO und jede Verarbeitung ist
Insert Picture Here
um 10% schneller
• Sollten
dennoch UPDATES
gemacht werden müssen:
to
edit Master
text styles
Click to edit title
Click
• Partitionieren der Tabelle
• Die jüngsten Partitionen mit separatem Tablespace definieren und PCTFREE auf
gewünschten Wert setzen
• Wenn keine UPDATES mehr zu erwarten sind -> umkopieren auf eine Partition mit
einem Tablespace mit PCTFREE=0
• Blocksize hochsetzen 16K, 32K
• Wirkt sich bei Massen-Inserts bei einer gößeren Datenmenge
positiv auf die Performnce aus
Klassische PL/SQL Cursor – Verarbeitung
(Negativ – Beispiel)
Für alle
Bewegeungssätze z. B.
300.000)
Loop
(0,1 Sec /
Lauf)
select
t_Ref_1 (z. B. 10000)
select
t_ref_2 (z. B. 5000)
select
t_ref_3 (z. B. 50)
select
t_ref_4 (z. B. 6000)
cursor
t_Quelle_Stage_1 (z. B. 100000)
select
t_ref_5 (z. B. 8000)
select
t_ref_6 (z. B. 400)
select
t_ref_7 (z. B. 80)
select
t_ref_8 (z. B. 12000)
Click to edit title
Insert Picture Here
Click to edit Master textcursor
styles
t_Quelle_Stage_2 (z. B. 5000)
8,3 Std*
select
t_ref_9 (z. B. 15000)
+
Diverse Updates und
Inserts auf
Protokolltabellen
* Wert aus einer Bank (2003), wäre heute wesentlich weniger
Insert
Faktentabelle
Das Simulations-Szenario
Tabelle T10
Name Type
------------------F0 NUMBER
F1 NUMBER
F2 NUMBER
F3 VARCHAR2(50)
F4 DATE
F5 VARCHAR2(50)
F6 VARCHAR2(50)
F7 NUMBER
Tabelle T20
~ 10 Millionen Sätze
Click to edit title
Click to edit Master text styles
Name Type
------------------F0 NUMBER
F1 NUMBER
F2 NUMBER
F3 VARCHAR2(50)
F4 DATE
F5 VARCHAR2(50)
F6 VARCHAR2(50)
F7 NUMBER
Insert Picture Here
F0
F1 F2 F3
F4
F5
F6
F7
----- --- ---------- ----------------------------------------- --------- ----------------------------------------- --------------------------------- --28839 74
3 IamPFnAz6qnhWZlqao1AHgaR9gQczm4SSvtJn9lU 27-JAN-11 upOLaDSvWuxmv4pFlZsgtEPqgi43uRgI1uQjF7kV x2AFYV3W2QIcxf5mPzl39MpErCZI7rc1eQMXuMs8
42
28840 10 89 ESh7uiu6Hqo6cwqqk9B7D1w9biFR3QjCVDyNWjaq 01-MAY-08 Mcj4QZEVmiG5Qof4eoPwqARLFhlc1xpLmgrAzL5i jvuabLwH44YODTusRR3Huyz7sECCTrLFGZA5QJdD
12
28841 4 59 PA2OpnqxTISxHoHsJ5BZrIJArDGhcKCIi1lAzJyj 17-DEC-10 ebU5ogfehM87oO1f8e1VVrFOjJBsZJEUQLcyOls7 GP5zpIb5EzAsPrT9EuL6tdcJ2BVGbFXtch3F4rkO
58
28842 79 74 P4q95WqLs9yWOdx6yryAt7zNgO8YeGzqmXTLdHJe 26-NOV-09 eTsS6sZdjeZbRWSnjq2m3ivoACc29dQENlVYjtkK DTTfROusF1hU1LLGHNRXWWGwpFlO47zedJWgEdX5
55
............................................................................................................................. ...........................
Der ungünstigste Fall
Einzelinserts – Simuliert über Cursor-Prozedur
CREATE OR REPLACE PROCEDURE PR_x AS
CURSOR crs_T10 IS
SELECT * FROM T10;
bstnr number;
V_F0
NUMBER;
V_F1
NUMBER;
V_F2
NUMBER;
V_F3
VARCHAR2(50);
V_F4
DATE;
V_F5
VARCHAR2(50);
V_F6
VARCHAR2(50);
V_F7
NUMBER;
Lese-Operation T10 Tabelle
Click to edit title
Insert Picture Here
Click to edit Master text styles
Datenbewegung über Variablen
BEGIN
open crs_T10;
loop
FETCH crs_T10 into V_F0 ,V_F1,V_F2,V_F3,V_F4,V_F5,V_F6,V_F7;
insert /*+ NOLOGGING */ into T20 values(V_F0,V_F1,V_F2,V_F3,V_F4,V_F5,V_F6,V_F7);
EXIT WHEN crs_T10%NOTFOUND;
END loop;
END;
Laufzeit: 08:31 (Minuten : Sekunden)
Schreibvorgang
Der einfache INSERT
insert into t20 select * from t10;
• INSERT in leere Tabelle
Click to edit title
Laufzeit: 01:46 (Minuten : Sekunden)
Click
to edit Master text styles
• INSERT in gefüllte Tabelle
Laufzeit: 01:58 (Minuten : Sekunden)
• INSERT in gefüllte Tabelle (Wiederholung)
Laufzeit: 01:58 (Minuten : Sekunden)
Insert Picture Here
Logging / Nologging
• INSERT im Archivelog-Modus
Click to edit title
insert into t20 select * from t10;
Click toLaufzeit:
edit 02:56
Master
text
styles
(Minuten
: Sekunden)
• INSERT mit NOLOGGING im ARCHIVE-Modus
insert /*+ NOLOGGING */ into t20 select * from t10;
Laufzeit: 01:48 (Minuten : Sekunden)
Insert Picture Here
Logging / Nologging
• Wird der Archivelog-Modus benötigt oder nicht?
• Relevant für
• Backup
• DataGuard / Golden Gate
• Flashback
to
edit Master text styles
Click to edit title
Click
• Wichtigster Punkt ist: BACKUP
• Abhängig vom Backup-Konzept
Insert Picture Here
Auswirkungen auf das Backup-Konzept
• Plattensicherung
• Oft einfach, weil eingespielte Verfahren
• Grosser Ressourcenverbrauch
Click to edit title
Insert Picture Here
• Alle (DWH-Bereiche) werden gesichtert -> großer Platzbedarf
• Teure Backup-Software
Click to
editimmer
Master
text
• Nicht
sicher,
weil styles
korrupte Datenbank-Blöcke nicht erkannt werden
können
• Man kann ohne Archivlog fahren -> ETL schneller und einfacher
• Sicherung mit RMAN
• Ressourcen-günstigstes Verfahren
• Man muss mit Archivlog fahren
• ETL etwas langsamer
• Massenloads müssen mit NOLOGGING gefahren werden -> separate Sicherung
RMAN- Backup-Verfahren:
Was wird gesichert?
Data Integration Layer
T
R
R
S S
Click Tto edit title
T
Click to edit Master
text styles
Keine Sicherung
User View Layer
Enterprise Information Layer
D
S
B
F Picture
Insert
Here
D
B
D
Keine Sicherung,
Inkremental Backup
wenn Data Marts
nur für Referenz- und
komplett neu aufgebaut
Stammdaten
Werden
große
RMAN
Bewegungsdatentabellen
(Incremental) am besten nach Abschluss des
ETL-Laufes sichern
RMAN (Incremental)
44
D
R: Referenztabellen
T: Transfertabellen
S: Stammdaten
B: Bewgungsdaten
D: Dimensionen
F: Fakten
Direct Path Load
• Create Table As Select (CTAS)
Click to edit title
Create Table t20 as select * from t10;
Click toLaufzeit:
edit01:00
Master
styles
(Minuten :text
Sekunden)
• INSERT mit APPEND - Hint
insert /*+ APPEND */ into t20 select * from t10;
Laufzeit: 01:00 (Minuten : Sekunden)
Insert Picture Here
Arbeiten mit Buffer-Caches
• Wiederholtes Laden ohne zuvor die Buffer-Caches zu leeren
• Der SELECT-Teil läuft schneller
Click to edit title
1. Verarbeitung
Click insert
to edit
Master
text
styles
/*+ APPEND
*/ into
t20 select
* from t10;
Laufzeit: 01:00 (Minuten : Sekunden)
2. Verarbeitung
insert /*+ APPEND */ into t20 select * from t10;
Laufzeit: 00:25 (Minuten : Sekunden)
Insert Picture Here
Verlagern des Ladeprozesses auf SSD-Platten
• Bestimmte Arbeitstabellen des ETL-Prozesses liegen auf
gesonderten SSD-Platten
• Die aktiven Partitionen großer Tabellen
• Temporäre Tabellen
Insert Picture Here
Click to edit title
Click to edit
text Enterprise
styles Information
Data Master
Integration
Layer
CTAS
CTAS
Layer
T
20% R
T
PEL
R
S
S
S
SSD
SSD
T
SSD
80%
D
D
SSD
D
B
PEL
D
F
B
SSD
SSD
T
SSD SSD
User View
Layer
SSD SSD
PEL
A
R: Referenztabellen
T: Transfertabellen
S: Stammdaten
B: Bewgungsdaten
D: Dimensionen
F: Fakten
A: Aggregate
Partitionierte
Tabellen
Prüfungen
Verlagern des Ladeprozesses auf SSD-Platten
• Test mit Direct Path Load
CTAS mit SSD
Click to edit title
Create Table T20 as select * from t10;
Laufzeit: 00:10 (Minuten : Sekunden)
Click to
edit Master text styles
APPEND mit SSD
insert /*+ APPEND */ into t20 select * from t10;
Laufzeit: 00:10 (Minuten : Sekunden)
Insert Picture Here
Alle Messdaten in der Übersicht
Click to edit title
Click to edit Master text styles
Insert Picture Here
Themenübersicht
Datenbank-basierte ETL-Prozesse
• Anforderungen an den ETL-Prozess im Data Warehouse
Insert Picture Here
• Speichermanagement und Grundlagentechniken
Click to edit title
• Blöcke,
Extents, Segmente, Tablespace
Click to edit Master text
styles
• Direct Path Load, Mengenbasiertes Laden
• Logging / NoLogging
• Hilfsmittel für schnelles Laden
• Prüftechniken mit SQL
• Szenario zum Prüfen von Daten
• Weitere Techniken und Tools
50
Es gibt 6 Prüf-Kategorien
Tabellen-über
greifende Regeln
Attribut-bezogene Regeln
1.
2.
Not Null / Pflichtfelder
Formatangaben
numeric
Alphanumerisch
Date
Masken
a)
b)
c)
d)
A
3.
4.
Click to edit title
Div. Check Constraint
9.
D
C
E
Primary Key / Eindeutigkeit
Aggregat – Bedingungen
a)
b)
8.
Ober- Untergrenzen von Summen
Anzahl Sätze pro Intervall usw.
12.
13.
14.
Referenz-Zusammenhänge
Verweise auf Sätze einer anderen Tabelle (Relation)
Zeitinvariante Inhalte (z. B. Anz. Bundesländer)
Zeitabhängige Veränderungen
Über die Zeit mit anderen Daten korrelierende Feldinhalte
Verteilungs-/Mengen-bezogene Regeln
F
15.
Verteilung
a)
b)
Rekursive Zusammenhänge
Verweise auf andere Sätze derselben Tabelle (Relation)
Ober- Untergrenzen von Summen
Anzahl Sätze pro Intervall usw.
Zeit-/ Zusammenhang-bezogene Regeln
Satz-übergreifende Regeln
6.
7.
Insert Picture Here
Aggregat – Bedingungen
–
Satz-bezogene Regeln
Abhängigkeiten von Werten in anderen
Attributen desselben Satzes
10.
11.
–
5.
Child-Parent (Orphan)
Parent-Child
a)
b)
a)
b)
Wertbereiche
Click to
edit
Master text styles
Ober-/Untergrenzen / Wertelisten
B
Foreign Key
16.
Arithmetische Mittel
Varianz / Standardabweichungen
Qualitätsmerkmale und Mengen
Mengen-basierte Prüfungen mit SQL
Attribut-bezogene Regeln
1.
2.
Not Null / Pflichtfelder
Formatangaben
numeric
Alphanumerisch
Date
Masken
a)
b)
c)
d)
A
3.
4.
Click to edit title
Div. Check Constraint
Wertbereiche
Click to edit
Master text styles
Ober-/Untergrenzen / Wertelisten
–
Satz-bezogene Regeln
B
5.
Abhängigkeiten von Werten in anderen
Attributen desselben Satzes
select
bestellnr,
case
when -- wenn Feld BESTELLNR nicht numerisch
REGEXP_LIKE(BESTELLNR, '[^[:digit:]]')
then 1
else 0
End Num_Check_bestellnr
select
from bestellung;
CASE
WHEN (F1 = 3 and F2 = F3 + F4)
then 1
ELSE 0
end
from fx
Satz-übergreifende Regeln
C
6.
7.
Primary Key / Eindeutigkeit
Aggregat – Bedingungen
a)
b)
8.
Ober- Untergrenzen von Summen
Anzahl Sätze pro Intervall usw.
Rekursive Zusammenhänge
Verweise auf andere Sätze derselben Tabelle (Relation)
Insert Picture Here
insert /*+ APPEND */ into err_non_unique_bestellung
select bestellnr from
(select
count(bestellnr) n,
bestellnr
from bestellung
group by bestellnr)
where n > 1;
Umgang mit SQL und PL/SQL im DB-ETL
So nicht ...
Aber z. B. so ...
Create or replace procedure Proc_A
V1
number;
V2
number;
V3
varchar2;
V4
varchar2;
....
Cursor CS as select s1,s2 from tab_src;
Begin
open CS;
loop
fetch CS into v1,v2,...;
select f1 into v3 from tab1;
select f1 into v4 from tab2;
insert into Ziel _tab s1,s2,s3,s4
values(v1,v2,v3,v4);
end;
end;
insert into ziel
select f1, f2, f3, f4 from
(with CS as
select s1 v1,s2 v2 from tab_src
Select tab1.f1 f1 ,tab2.f2 f2, CS.s1 f3,CS.s2 f4
from tab1,tab2,CS
Where...
);
Click to edit title
Click to edit Master text styles
Insert Picture Here
Prüfungen Kategorie A
Attribut-/Column-bezogene Regeln
1. Not Null / Pflichtfelder
2. Formatangaben
a)
b)
c)
d)
numeric
Alphanumerisch
Date
Masken
Click to edit title
Click to edit Master text styles
3. Div. Check Constraint
4. Wertbereiche
Ober-/Untergrenzen / Wertelisten
Insert Picture Here
Prüfen mit oder Ohne Datenbank-Constraints
•
•
•
•
Constraints verlangsamen den Massen-Insert des ETL-Prozesses
=> Ohne Constraints arbeiten
=> Prüfen mit SQL-Mitteln
Insert Picture Here
Click
to
edit
title
=> Prüfen mit DML-Errorlogging
Click to
editbeiMaster
text sinnvoll
styles
• Nur
wenigen Daten
Prüfkonzepte
• Fachliche Prüfungen kaum möglich
• Eventuell zusätzliche Prüfungen nötig
• Einfach implementierbar
• Bessere Performance
• Nur bei aktivierten Constraints
Insert Picture Here
Click to edit title
Stage-Tabelle
Click to edit Master text styles
+ Geprüfte Daten
Kopieren
Statistik
Routine
Date
Number
Varchar2()
Bad
File
56
DML
Error Log
Check
Constraints
Fehlerhafte
Sätze
Statistiken
Error Logging
Kunde
INSERT INTO Kunde
KUNDENNR
VORNAME
NACHNAME
ORTNR
STRASSE
TELEFON
Click to edit title
VALUES (......)
LOG ERRORS INTO
kunde_err('load_20040802
Click
to edit Master text styles
')
Kunde_err
KUNDENNR
VORNAME
NACHNAME
ORTNR
STRASSE
TELEFON
ORA_ERR_NUMBER$
ORA_ERR_MESG$
ORA_ERR_ROWID$
ORA_ERR_OPTYP$
ORA_ERR_TAG$
57
• Constraints
•
•
•
•
Unique Key / Primary Key
Foreign Key
Insert Picture Here
NOT NULL
Check Constraint
Testfall
Bestellung_Check
Bestellung
BESTELLNR
ORTNR
KUNDENNR
DATUM
ANZAHLPOS
Click to edit title
BESTELLNR
ORTNR
KUNDENNR
DATUM
ANZAHLPOS
UNIQUECONSTRAINT
Insert Picture Here
1.100.000
Click to
edit Master text styles
Sätze
100.000
doppelt
Bestellung_Check_Errors
BESTELLNR
ORTNR
KUNDENNR
DATUM
ANZAHLPOS
ORA_ERR_NUMBER$
ORA_ERR_MESG$
ORA_ERR_ROWID$
ORA_ERR_OPTYP$
ORA_ERR_TAG$
Testfall
begin
dbms_errlog.create_error_log(
dml_table_name
err_log_table_name
);
end;
Click to edit title
=> 'BESTELLUNG_CHECK',
=> 'BESTELLUNG_CHECK_ERRORS'
Insert Picture Here
Click to edit Master text styles
SQL> insert into bestellung_check select * from bestellung
2 LOG ERRORS INTO bestellung_check_errors ('daily_load') REJECT LIMIT 200000
3 ;
1000000 Zeilen erstellt.
Abgelaufen: 00:00:50.63
Die Alternative
1.
create table Bestellung_non_unique as
select bestellnr from
(select count(BESTELLNR) n, bestellnr
from bestellung
group by bestellnr)
where n > 1;
Click to edit title
Insert Picture Here
Tabelle wurde erstellt.
Click to edit Master text styles
Abgelaufen: 00:00:00.49
2.
insert /*+ APPEND */ into bestellung_check
select B.BESTELLNR,B.ORTNR,B.KUNDENNR,B.DATUM , B.ANZAHLPOS
from bestellung B
where B.BESTELLNR not in (select bestellnr from Bestellung_non_unique);
900000 Zeilen erstellt.
Abgelaufen: 00:00:02.26
Zusammen
00:00:03.15
Check Constraint mit Regular Expressions
CREATE TABLE Check_KUNDE (
KUNDENNR
NUMBER,
GESCHLECHT NUMBER,
VORNAME
VARCHAR2(50),
NACHNAME
VARCHAR2(50),
ANREDE
VARCHAR2(10),
GEBDAT
DATE,
ORTNR
NUMBER,
STRASSE
VARCHAR2(50),
TELEFON
VARCHAR2(30)
);
Regel:
Click to edit title
Click to edit Master text styles
Im Kundennamen müssen Buchstaben
vorkommen und
keine reine Zahlenkolonne
Insert Picture Here
ALTER TABLE check_kunde
ADD CONSTRAINT Ch_KD_Name
CHECK(REGEXP_LIKE(NACHNAME, '[^[:digit:]]'));
INSERT INTO check_kunde (Kundennr, Geschlecht, Vorname, Nachname, Anrede, Gebdat,
Ortnr, Strasse, Telefon)
VALUES (9,1,'Klaus','123','Herr','01.01.60',2,'Haupstr.',08923456);
FEHLER in Zeile 1:
ORA-02290: CHECK-Constraint (DWH.CH_KD_NAME) verletzt
• Verwendung von Regular Expressions steigert die Performance
bei Prüfungen
61
Beispiele
* Match 0 or more times
Modus
? Match 0 or 1 time
+ Match 1 or more times
{m} Match exactly m times
[:alnum:] Alphanumeric characters
Click to edit title
[:alpha:] Alphabetic characters
[:blank:] Blank Space Characters
Click
to edit Master text styles
[:cntrl:] Control characters (nonprinting)
{m,} Match at least m times
Insert Picture Here
{m, n} Match at least m times but no more than n times
\n Cause the previous expression to be repeated n times
[:digit:] Numeric digits
[:graph:] Any [:punct:], [:upper:], [:lower:], and [:digit:] chars
[:lower:] Lowercase alphabetic characters
[:print:] Printable characters
[:punct:] Punctuation characters
Zeichenklassen
[:space:] Space characters (nonprinting), such as carriage return, newline, vertical tab, and form feed
[:upper:] Uppercase alphabetic characters
[:xdigit:] Hexidecimal characters
62
Wichtiges Hilfsmittel für Einzelfeldprüfungen:
CASE-Anweisung
SELECT
CASE
WHEN isnumeric('999') = 1 THEN 'numerisch' ‚
ELSE 'nicht numerisch'‚
END Ergebnis
FROM dual;
CREATE OR REPLACE FUNCTION isnumeric (
p_string in varchar2) return boolean AS
l_number number;
BEGIN
l_number := p_string;
RETURN 1;
EXCEPTION
WHEN others THEN RETURN 0;
END;
Click to edit title
Click to edit Master text styles
63
Insert Picture Here
Hilfsfunktion:
Date_Check
create or replace function IsDate (str
varchar2) return varchar2 is inDate
varchar2(40);
FUNCTION dateCheck (inputDate varchar2,
inputMask varchar2) RETURN varchar2
Click to edit title
Click to edit Master text styles
IS dateVar date;
BEGIN
dateVar:= to_date(inputDate,inputMask);
return 'true';
exception
when others then
return 'false';
END;
• In Verbindung mit der
CASE-Anweisung
BEGIN
inDate:= trim(str);
if dateCheck(inDate, 'mm-dd-yyyy') = 'false'
AND dateCheck(inDate, 'mm-dd-yy') = 'false'
AND dateCheck(inDate, 'yyyy-mm-dd') = 'false'
AND dateCheck(inDate, 'yy-mm-dd') = 'false'
AND dateCheck(inDate, 'yyyy-mon-dd') = 'false‚
AND dateCheck(inDate, 'yy-mon-dd') = 'false‚
AND dateCheck(inDate, 'dd-mon-yyyy') = 'false‚
AND dateCheck(inDate, 'dd-mon-yy') = 'false‚
AND dateCheck(inDate, 'mmddyy') = 'false‚
AND dateCheck(inDate, 'mmddyyyy') = 'false‚
AND dateCheck(inDate, 'yyyymmdd') = 'false'
AND dateCheck(inDate, 'yymmdd') = 'false‚
AND dateCheck(inDate, 'yymmdd') = 'false'
AND dateCheck(inDate, 'yymondd') = 'false‚
AND dateCheck(inDate, 'yyyymondd') = 'false‚
AND dateCheck(inDate, 'mm/dd/yyyy') = 'false'
AND dateCheck(inDate, 'yyyy/mm/dd') = 'false‚
AND dateCheck(inDate, 'mm/dd/yy') = 'false'
AND dateCheck(inDate, 'yy/mm/dd') = 'false‚
AND dateCheck(inDate, 'mm.dd.yyyy') = 'false'
AND dateCheck(inDate, 'mm.dd.yy') = 'false'
AND dateCheck(inDate, 'yyyy.mm.dd') = 'false'
AND dateCheck(inDate, 'yy.mm.dd') = 'false'
then
return 'false';
else
return 'true';
end if;
--exception
--when others then return 'false';
Insert Picture Here
END;
64
Abarbeitungslogik für Einzelfeldprüfung mit CASE
Gepruefte_Daten
Stage-Tabelle
Varchar2()
Feld1
Feld2
Feld3
Temp-Tabelle
Varchar2()
Feld1
Feld2
Feld3
Click to edit title
Kopieren
INSERT INTO
temp_table
SELECT
Click to edit Master
text styles
CASE ....
FROM
Stage_Table
Feld1_is_null
Feld1_is_numeric
Feld2_is_numeric
INSERT ALL
WHEN
Feld_1_is_null =1
into
Error_Daten
Date
Number
Insert Picture
Here
WHEN
Feld_1_is_null=0
into
Gepruefte_Daten
Varchar2()
Error_Daten
Date
Number
Varchar2()
• Temporäre Tabelle ist optional
• Ist wesentlich übersichtlicher
• Erlaubt Kombination von unterschiedlichen Prüfkriterien
65
Abarbeitungslogik mit CASE
OLTP_Kunden
Bestellnr
Menge
INSERT INTO OLTP_Kunden_tmp
SELECT Bestellnr,Menge,Summe,Name,Ort,BestDatum,
CASE WHEN (Bestellnr is NULL)
then 1 ELSE 0
END Bestellnr_isNull,
CASE WHEN (isNumeric(Menge) = 1)
then 1 ELSE 0
END Menge_isNumeric,
CASE WHEN (isNumeric(Summe) = 1)
then 1 ELSE 0
END Summe_isNumeric,
CASE WHEN (Summe is NULL)
then 1 ELSE 0
END Summe_isNull,
CASE WHEN (isDate(BestDatum) = 1)
then 1 ELSE 0
END BestDatum_isDate
FROM OLTP_Kunden;
Click to edit title
Click
to edit Master text styles
Summe
Name
Ort
BestDatum
OLTP_Kunden_tmp
Bestellnr
Menge
Summe
Name
Ort
BestDatum
Insert Picture Here
Bestellnr_isNull
Menge_isNumeric
Summe_isNumeric
Summe_isNull
BestDatum_isDate
...
Prüfungen Kategorie B
Satz-bezogene Regeln
Satz-bezogene Regeln
5. Abhängigkeiten von Werten in anderen Attributen desselben Satzes
Insert Picture Here
Click to edit title
• Lösung: Analog zu Kategorie A über CASE
F4
Click F1
to edit F2
MasterF3
text styles
3
7
3
4
9
5
1
4
select
CASE
WHEN (F1 = 3 and F2 = F3 + F4)
then 1
ELSE 0
end
from fx
1
0
Prüfungen Kategorie C
Satz-übergreifende Regeln
6. Primary Key / Eindeutigkeit
7. Aggregat – Bedingungen
a)
b)
Click to edit title
Ober- Untergrenzen von Summen
Anzahl Sätze pro Intervall usw.
Zusammenhänge
Click8. toRekursive
edit Master
text styles
Verweise auf andere Sätze derselben Tabelle (Relation)
Insert Picture Here
6. Eindeutigkeit / PK
Click to edit title
BESTELLUNG
BESTELLPOSITION
BESTELLNR PK
ORTNR
FK
KUNDENNR
BESTELLDATUM
ANZAHLPOS
BESTELLNR FK
POSITIONSNR PK
MENGE
FK
ARTIKELNR
DEPOTSTELLE
RABATT
Insert Picture Here
Mengenbasiertes Sammeln doppelter Sätze in Fehlertabelle
Click• Lösung:
to edit
Master text styles
insert /*+ APPEND */ into err_non_unique_bestellung
select bestellnr from
(select
count(bestellnr) n,
bestellnr
from bestellung
group by bestellnr)
where n > 1;
D_ARTIKEL
7. Aggregatbildung
F_UMSATZ
•Anforderung: Wenn der Umsatz pro Artikel
unter 20% des Artikelgruppen-Gesamtwertes fällt,
dann ROT
•Lösung:
Mit analytischen Funktionen:
Auf Satzebene über Informationen
von Satzgruppen verfügen
Click to edit title
Click
to edit Master text styles
select Artikelname,
FK
ARTIKEL_ID FK
KUNDEN_ID
FK
FK
ZEIT_ID
FK
REGION_ID
KANAL_ID
UMSATZ
MENGE
UMSATZ_GESAMT
ARTIKEL_NAME
GRUPPE_NR
GRUPPE_NAME
SPARTE_NAME
PK
SPARTE_NR
ARTIKEL_ID
Insert Picture Here
Artikelgruppe,
Wert,
sum(wert) over (partition by Artikelname) Artikelgesamtwert,
sum(wert) over (partition by Artikelgruppe) Gruppengesamtwert,
case
when
(round(((sum(wert) over (partition by Artikelname))/(sum(wert) over (partition by
Artikelgruppe))*100),0) ) < 20
then 'ROT'
ELSE 'GRUEN'
end Prozent
from Artikel
8. Rekursive Zusammenhänge
•Anforderung:
Die Summe aller
Member_Value-Werte pro Parent
muss gleich dem Group_Value-Wert
des Parent sein.
Click to edit title
•Lösung:
Über Sub-Select
in
dem nach
Parent
Click
to edit
Master
text
styles
gruppiert und summiert wird.
select distinct A.F_key
from
rk A,
(select sum(member_value) sum_member, parent
from rk
where parent != 0 group by group_value, parent) B
where A.member_value = 0 and
A.group_value = B.sum_member;
F_Key
Parent
Member
_Value
Group
_Value
3
9
12
15
4
17
23
28
0
3
3
3
0
4
4
4
0
4
6
2
0
3
8
1
12
0
0
0
15
0
0
0
Insert Picture Here
Prüfungen Kategorie D
Tabellen-übergreifende Regeln
9. Foreign Key
a)
b)
Child-Parent (Orphan)
Parent-Child
Click to edit title
10. Aggregat – Bedingungen
Ober- Untergrenzen von Summen
Click toa)b) edit
text
AnzahlMaster
Sätze pro Intervall
usw.styles
11. Referenz-Zusammenhänge
Verweise auf Sätze einer anderen Tabelle (Relation)
Insert Picture Here
9. Foreign Keys
•Anforderung:
Zu jeder Bestellung muss es einen
Kunden geben.
Click to edit title
BESTELLUNG
KUNDE
KUNDENNR PK
KUNDENNAME
BERUFSGRUPPE
SEGMENT
KUNDENTYP
BESTELLNR PK
ORTNR
FK
KUNDENNR
BESTELLDATUM
ANZAHLPOS
Insert Picture Here
Click to edit Master text styles
•Lösung: Sub-Select in Where-Klausel.
insert /*+ APPEND */ into err_orphan_Bestellung
select bestellnr
from bestellung
where
Kundennr not in (select Kundennr from kunde);
10. Aggregatbedingungen
Anzahl Sätze pro Einheit
•Anforderung:
Anzahl Positionen muss
einen bestimmten Wert haben.
Click to edit title
•Lösung: Sub-Select in FROM-Klausel.
BESTELLUNG
BESTELLPOSITION
BESTELLNR PK
ORTNR
FK
KUNDENNR
BESTELLDATUM
ANZAHLPOS
BESTELLNR FK
PK
POSITIONSNR
MENGE
FK
ARTIKELNR
DEPOTSTELLE
RABATT
Click
to edit Master text styles
insert /*+APPEND */ into err_anz_pos_Bestellposition
select
BESTELLNR,
anzahl_pos,
bst_ANZAHLPOS
from
(select
bestellnr,
count(positionsnr) Anzahl_pos,
ANZAHLPOS bst_anzahlpos
from Best_Pos
group by bestellnr,ANZAHLPOS)
where Anzahl_pos <> bst_anzahlpos;
Insert Picture Here
Szenario
•
Regel bzgl. der Bestellungen
•
•
•
•
Es darf keine Bestellung ohne Positionen geben.
Bestellnummern müssen eindeutig sein.
Es kann nur Bestellungen mit gültigen Kundennummern geben.
Bestellungen müssen immer in einem Zeitraum +/- 10 Tage von dem Tagestadum liegen.
• Regeln bzgl. der Bestellpositionen
•
•
•
•
•
•
Click to edit title
Insert Picture Here
Der durchschnittliche Wert einer Position muss > 5 sein.
Positionsnummern müssen pro Bestellung lückenlos von 1 beginnend aufsteigen sein.
Es darf nur Bestellpositionen mit einer gültigen Bestellnummer geben.
Es darf nur Bestellpositionen mit einer gültigen Artikelnummer geben.
Rabatt darf nur für Firmenkunden gegeben werden.
Formatprüfungen:
Click to edit Master text styles
•
•
•
Feld Depostelle 3-stellig alphanumerisch und 3-stellig numerisch
Feld Rabatt mus numerisch sein und mindestens den Wert 0 haben
Feld Menge muss gefüllt sein (NotNull) und muss > 0 sein
• Qualitative Prüfungen
•
Wenn der Gesamtwert pro Bestellung muss < 1000 beträgt, dann muss , wenn groesser, dann markieren.
•
Der Gesamtumsatz ist i. d. R. in dem 4ten Quartal am höchsten.
•
Bestellungen haben einen bestimmte Anzahl Positionen.
Die Beispiel - Quellumgebung
ARTIKEL
ARTIKEL_GRUPPEN
ARTIKEL_SPARTEN
SPARTE_NAME
SPARTE_NR PK
GRUPPE_NR PK
GRUPPE_NAME
FK
SPARTE_NR
Click to edit title
ARTIKEL_NAME
ARTIKEL_ID PK
GRUPPE_NR FK
PREIS
Insert Picture Here
Click to edit Master text styles
BESTELLUNG
KUNDE
KUNDENNR PK
KUNDENNAME
BERUFSGRUPPE
SEGMENT
KUNDENTYP
76
BESTELLNR PK
ORTNR
KUNDENNR FK
BESTELLDATUM
ANZAHLPOS
BESTELLPOSITION
BESTELLNR FK
POSITIONSNR PK
MENGE
FK
ARTIKELNR
DEPOTSTELLE
RABATT
Beispielprüfungen
Click to edit title
Click to edit Master text styles
Insert Picture Here
Beispielprüfungen
Click to edit title
Click to edit Master text styles
Insert Picture Here
1. Schritt: Prüfungen von
Tabellen-übergreifenden Beziehungen
ARTIKEL
ARTIKEL_GRUPPEN
ARTIKEL_SPARTEN
SPARTE_NAME
SPARTE_NR PK
GRUPPE_NR PK
GRUPPE_NAME
FK
SPARTE_NR
Click to edit title
Click to edit Master text styles
6
KUNDE
KUNDENNR PK
KUNDENNAME
BERUFSGRUPPE
SEGMENT
KUNDENTYP
21
79
BESTELLUNG
BESTELLNR PK
ORTNR
KUNDENNR FK
BESTELLDATUM
ANZAHLPOS
ARTIKEL_NAME
ARTIKEL_ID PK
GRUPPE_NR FK
PREIS
Insert Picture Here
18
2
13
BESTELLPOSITION
BESTELLNR FK
POSITIONSNR PK
MENGE
FK
ARTIKELNR
DEPOTSTELLE
RABATT
2. Schritt: Prüfungen und Berechnungen von
Satz-übergreifenden Abhängigkeiten
ARTIKEL
ARTIKEL_NAME
ARTIKEL_ID PK
GRUPPE_NR FK
PREIS
ARTIKEL_GRUPPEN
GRUPPE_NR PK
GRUPPE_NAME
FK
SPARTE_NR
ARTIKEL_SPARTEN
SPARTE_NAME
SPARTE_NR PK
Insert Picture1 Here
13
Click to edit title
Click to edit Master text styles
BESTELLUNG
6
KUNDE
KUNDENNR PK
KUNDENNAME
BERUFSGRUPPE
SEGMENT
KUNDENTYP
4
21
80
BESTELLNR PK
ORTNR
KUNDENNR FK
BESTELLDATUM
ANZAHLPOS
18
2
13
BESTELLPOSITION
9
BESTELLNR FK
POSITIONSNR PK
MENGE
FK
ARTIKELNR
DEPOTSTELLE
RABATT
14
10
3. Schritt: Feldprüfungen
ARTIKEL
ARTIKEL_NAME
ARTIKEL_ID PK
GRUPPE_NR FK
PREIS
ARTIKEL_GRUPPEN
GRUPPE_NR PK
GRUPPE_NAME
FK
SPARTE_NR
ARTIKEL_SPARTEN
SPARTE_NAME
SPARTE_NR PK
Insert Picture1 Here
13
Click to edit title
Click to edit Master text styles
6
KUNDE
KUNDENNR PK
KUNDENNAME
BERUFSGRUPPE
SEGMENT
KUNDENTYP
4
21
81
5
BESTELLUNG
BESTELLNR PK
ORTNR
KUNDENNR FK
BESTELLDATUM
6
ANZAHLPOS
8
18
2
BESTELLPOSITION
11
13
9
FK
BESTELLNR 12
POSITIONSNR PK 14
MENGE 15 16 17
FK 18
ARTIKELNR
10
DEPOTSTELLE19
RABATT
20
Regeln bei der Ablauf-Planung
• Alles was mengenbasiert prüfbar ist, kommt zuerst
• Feldbezogene Prüfungen sind nachgelagert
• Bei aufwendigen Joins abklären, ob diese mehrfach benötigt
Insert Picture
Click
edit title
werden,
wennto
ja, dann
Here
• Prüfen
einer Join-Tabelle
Click to
edit Master
text styles
• Nach Möglichkeit diese Prüfungen in eine zeitlich enge Abfolge bringen
• Aufwendige feldbezogene Prüfungen, Prüfungen mit Funktionen
usw. werden in einer einzigen Transformation zusamengefasst
• Bei Datenübernahme aus Datenbanken ist zu prüfen, ob innerhalb
der Zielumgebung noch geprüft werden muss
• Bei Text-Eingabe-Daten die External Table bzw. Loader – Prüfmittel
nutzen
Anordnung und Gruppierung der Ladeschritte des
Beispiel-Szenarios
KUNDE
err_anz_pos_Bestellposition
err_orphan_Bestellung
err_childless_Bestellung
Click to
edit title
err_orphan_PositionArtikel
err_AVG_Pos_Wert
Insert Picture Here
err_seq_pos_Bestellposition
Click
to edit Master text stylesBEST_POS
BESTELLUNG
BESTELLPOSITION
Tmp_ BEST_POS
Tmp2_ BEST_POS
err_non_unique_bestellung
err_kd_Rabatt_ok
err_orphan_Position
err_Wert_Menge
Hauptdatenfluss
Beziehungsprüfungen
Hauptdatenfluss
Hauptdatenfluss
ARTIKEL
err_maske_depotstelle
err_not_null_Menge
err_not_Rabatt_Wert
Auflistung der Laufzeiten für die einzelnen Prüfungen
(unterschiedliche Massnamen)
Click to edit title
Click to edit Master text styles
Insert Picture Here
Themenübersicht
Datenbank-basierte ETL-Prozesse
• Anforderungen an den ETL-Prozess im Data Warehouse
Insert Picture Here
• Speichermanagement und Grundlagentechniken
Click to edit title
• Blöcke,
Extents, Segmente, Tablespace
Click to edit Master text
styles
• Direct Path Load, Mengenbasiertes Laden
• Logging / NoLogging
• Hilfsmittel für schnelles Laden
• Prüftechniken mit SQL
• Szenario zum Prüfen von Daten
• Weitere Techniken und Tools
89
Partition Exchange Loading (PEL)
Financial
Temporäre
Tabelle
Production
Human Res.
Click to edit title
P1
P2
P3
P4
Z1
Z2
Z3
Z4
4
4
9
8
Neuer Monat
Insert Picture Zeit
Here
Store
Click
to edit Master text styles
Supplier
Marketing
Service
Parallel Direct Path INSERT
(Set Based)
CREATE TABLE AS SELECT
(CTAS)
CREATE Indizes / Statistiken anlegen
EXCHANGE Tabelle
Monat 13
Monat 12
Monat 11
Monat 10
DROP
PARTITION
Faktentabelle
90
Region
Partition Exchange Loading (PEL)
-- Leere Partition an Zieltabelle hinzufügen
ALTER TABLE Bestellung ADD PARTITION "Nov08"
VALUES LESS THAN (to_date('30-Nov-2008','dd-mon-yyyy'));
-- Neue leere temporäre Tabelle erstellen
CREATE TABLE Bestellung_temp AS
SELECT * FROM Bestellung WHERE ROWNUM < 1;
Click to edit title
Insert Picture Here
Click to edit Master text styles
-- Inhalte laden
INSERT INTO "PART"."BESTELLUNG_TEMP"
(BESTELLNR, KUNDENCODE, BESTELLDATUM, LIEFERDATUM, BESTELL_TOTAL, AUFTRAGSART, VERTRIEBSKANAL)
VALUES ('2', '3', TO_DATE('23.Nov.2008', 'DD-MON-RR'),
to_date('23.Nov.2008', 'DD-MON-RR'), '44', 'Service', '6');
Commit;
-- Erstellen Index auf temporäre Tabelle
CREATE INDEX Ind_Best_Dat_Nov ON Bestellung_temp ("BESTELLNR") NOLOGGING PARALLEL;
-- Temporäre Tabelle an die Zieltabelle anhängen
ALTER TABLE Bestellung EXCHANGE PARTITION "Nov08"
WITH TABLE Bestellung_temp INCLUDING INDEXES WITHOUT VALIDATION;
91
PEL – Auswirkungen auf die DWH-Verwaltung und
Konzepte
• Angleichung des Partition-Kriteriums auf den Lade-Rythmus und damit die
„Zeit“
• Meist täglicher Load -> Tagespartitionen
• Späteres Merge auf Monatsebene möglich / nötig
Click to edit title
Insert Picture Here
Click
to edit
Master
styles nutzen für
• Zwang
zum
späterentext
Monats-Merge
• Komprimierung
• Reorganisation
• ILM-Konzept
• Eine Partitionierungs-Ebene ist durch das PEL-Verfahren meist schon belegt
• Local-Indizierung (wenn überhaupt gebraucht) entstehen automatisch
Exchange Partition
Data Integration
Layer
Enterprise Information
Layer
Click to edit title
Älteste
Archivieren
(drop partition)
Mai
Click to edit Master text styles
Juni
Checks
Tmp_table
CTAS
Direct Path
Juli
August
September
Oktober
November
Alter table exchange partition
Alter table
add partition
User View
Layer
Insert Picture Here
Aufbau Fakten-Tabellen
Data Integration
Layer
Enterprise Information
Layer
Click to edit title
Älteste
Archivieren
(drop partition)
Tmp_table
CTAS
Direct Path
Juli
August
September
Oktober
November
Tmp_table
Oktober
November
CTAS
Tmp_table
Alter table exchange partition
Insert
Picture Here
Fact-Table
Juni
Juli
August
September
Mai
Click to edit Master text styles
Juni
Checks
User View
Layer
Alter table
exchange partition
Mengenbasierte Alternative
(Performance – Optimierung bis zu Faktor 20 und mehr)
t_Ref_1
t_Ref_2
t_Ref_3
Click to editt_Ref_4
title
Insert Picture Here
Click to edit Master text t_Ref_5
styles
300.000
Outer
Join
Temp Table
t_Ref_6
t_Ref_7
Fakt Table
Cursor
loop
t_Ref_8
Satzweise
Prüfung
t_Ref_9
Protokoll
Aufgabenstellung:
Lookup-Argumente über Funktionen gewinnen
• Mehrstufige Verarbeitung
Click to edit title
1. Über Funktionen Argumente gewinnen
Click to2. edit
Master intext
styles
Argumente
Lookup-Aufrufe
einbauen
• WITH-Verarbeitung
Insert Picture Here
Insert into ziel select * from
(with lc as
( select
level
V_KAUF_ID,
ran_M_N(0,2000)
V_MITARBEITER_ID,
ran_M_N(1,100024)
V_KUNDEN_ID,
sysdate-ran_M_N(20,1000) V_Kaufdatum,
ran_M_N(999,1011)
V_PRODUKT_ID,
ran_M_N(0,4)
V_GESAMT_DISCOUNT_PROZENT
from Dual connect by level < 5)
select
L.V_KAUF_ID,
L.V_MITARBEITER_ID,
L.V_KUNDEN_ID,
L.V_Kaufdatum,
L.V_PRODUKT_ID,
M.FILIAL_ID,
M.MANAGER_ID,
F.FILIALLEITER_ID,
F.ORTNR,
P.VK_PREIS-((P.VK_PREIS*1)*L.V_GESAMT_DISCOUNT_PROZENT)/100 Gesamt_wert,
L.V_GESAMT_DISCOUNT_PROZENT
from
LC
L,
d_MITARBEITER
M,
d_filialen
F,
d_produkt
P
where
L.V_MITARBEITER_ID = M.MITARBEITER_ID
and
M.FILIAL_ID
= F.FILIAL_ID
and
L.V_ProdukT_id
= P.produkt_id)
Click to edit title
Click to edit Master text styles
Insert Picture Here
Beschreiben einer Master/Detail - Beziehung
• Ziel: Die Sätze in der Detail-Tabelle müssen immer einen Parent-Satz
haben
• Lösung:
Click to edit title
Click
Insert Picture Here
• Multiple Insert: Die Information aus einer Quelle steht immer zum Beschreiben
Parentund Child-Tabelle
zur Verfügung.
tovon
edit
Master
text styles
• Beide sind synchronisierbar
BESTELLUNG
BESTELLNR PK
ORTNR
FK
KUNDENNR
BESTELLDATUM
ANZAHLPOS
BESTELLPOSITION
BESTELLNR FK
POSITIONSNR PK
MENGE
FK
ARTIKELNR
DEPOTSTELLE
RABATT
Multiple Inserts verarbeiten
INSERT ALL
WHEN 1=1‚
THEN INTO BESTELLUNG
(KUNDENCODE,BESTELL_TOTAL,STATUS)
VALUES
(KUNDENCODE,BESTELL_TOTAL,STATUS)
WHEN 1=1,
THEN INTO BESTELLPOSITION
(BESTELLMENGE,BESTELL_TOTAL,PRODUKT_NR)
VALUES
(BESTELLMENGE, BESTELL_TOTAL, PRODUKT_NR)
SELECT WH_TRANSAKTIONEN.BESTELLMENGE
BESTELLMENGE,
WH_TRANSAKTIONEN.KUNDENCODE
KUNDENCODE,
WH_TRANSAKTIONEN.BESTELL_TOTAL
BESTELL_TOTAL,
WH_TRANSAKTIONEN.STATUS
STATUS,
WH_TRANSAKTIONEN.PRODUKT_NR
PRODUKT_NR
FROM
WH_TRANSAKTIONEN WH_TRANSAKTIONEN ;
Click to edit title
Click to edit Master text styles
99
Insert Picture Here
Multiple Inserts verarbeiten
INSERT ALL
WHEN STATUS = 'P'‚
THEN INTO WH_TRANS_PRIVAT
(BESTELLMENGE,KUNDENCODE,BESTELL_TOTAL,STATUS)
VALUES
(BESTELLMENGE,KUNDENCODE,BESTELL_TOTAL,STATUS)
WHEN STATUS = 'F'‚
THEN INTO WH_TRANS_FIRMA
(BESTELLMENGE,KUNDENCODE,BESTELL_TOTAL,STATUS)
VALUES
(BESTELLMENGE,KUNDENCODE,BESTELL_TOTAL,STATUS)
SELECT WH_TRANSAKTIONEN.BESTELLMENGE BESTELLMENGE,
WH_TRANSAKTIONEN.KUNDENCODE KUNDENCODE,
WH_TRANSAKTIONEN.BESTELL_TOTAL BESTELL_TOTAL,
WH_TRANSAKTIONEN.STATUS STATUS
FROM
WH_TRANSAKTIONEN WH_TRANSAKTIONEN
WHERE
(WH_TRANSAKTIONEN.STATUS = 'P‚ /*SPLITTER.PRIVATKUNDEN*/)
OR
(WH_TRANSAKTIONEN.STATUS = 'F‚ /*SPLITTER.FIRMENKUNDEN*/);
Click to edit title
Click to edit Master text styles
100
Insert Picture Here
Deltadaten Extrahieren
OLTP
1
DWH
Table
Änderungsdatum
Click to edit title
Trigger
Table
2
Click to edit
Master
text styles
Table
Insert Picture Here
Table
Queue
3
Table
Deltabildung
über MINUS
Table
4
LogFile
Logminer
Table
Queue
5
LogFile
Streams
Queue
Table
6
LogFile
Golden Gate
Queue
Table
Herausforderungen beim Extrahieren
• Unterschiedliche Namen in Quell- und Zielsystemen
• Bewahrung der Konsistenz
Click to edit title
• Zeitpunkt des Ladens kann kritisch sein
Insert Picture Here
Click to
edit Master
• Vollständigkeit
dertext
Datenstyles
• Unterschiedliche GRANTs der User
• Zusätzlicher Netzwerkverkehr
• Meist ist nur das Delta der geänderten Daten gewünscht
• Formate (Datum, Zeichensätze)
102
Einlesetechniken Vorsysteme
EBCDIC
ASCII
SQL-Loader
External Table
Database Link
Click
to
edit
title
Transportable TS
Oracle
Click to edit Master text Datapump
styles
ODBC
JDBC
Gateway
Non
Oracle
API
Applikation
z. B.
SAP R/3
API CALL
Direct Save
SQL
SQL
BS Copy
BS Copy
SQL
SQL
SQL
SQL
Insert Picture Here
Oracle
DWH
Die Quellen
 Nur die Daten laden, die gebraucht
werden
Click to edit
title1:1 Kopien in dieInsert Picture Here
 Keine
Click
to edit Master text Integrations-Schicht
styles
Selektieren
 Nach Möglichkeit vor Eintritt in die
statt
Datenbank Prüfungen durchführen
kopieren
 Bereits geprüfte Daten nicht mehr
prüfen
Nicht so ....sondern
Data Integration
Layer
1:1
T
Click
to edit title
Click 1:1
to edit Master
text styles
T
1:1
1:1
T
Data Integration
Layer
Insert Picture Here
CTAS
T
T
T
Warum?
Logik so früh wie möglich
Techniken für Data Marts / User View Layer
Viele verstecke
Aufwende
Click to edit title
Verlagerung von IT in
Click
to edit Master text styles
die Fachabteilungen
Redundanzen
Ursache vieler nicht
abgestimmter
Kennzahlen
Insert Picture Here
Minimales Bewegen
Große unveränderte
Tabellen liegen lassen
Enterprise Information
Layer
Click to edit title
User View
Insert
Picture Here
Layer
Zugriff auf beide
Click
to edit Master text styles
Schichten
Security mit Bordmittel
anstatt durch Kopieren
lösen
D
D
F
B
D
B
PEL
D
Kennzahlen
Kennzahlen nur als
Materialized Views
User View Layer
Insert Picture Here
Click to edit title
Automatisches Refresh
Click
edit Master text styles
anstattto
ETL
Standardisierte und
stimmige Kennzahlen
Wiederverwenden von
bereits aggregierten
Daten
L1
L2
L3
L4
Der Weg in die BI-Tools
So
Click to edit title
Verhindert unnötiges
Millionen von Sätzen
Insert Picture Here
Click
to edit Master text styles
Kopieren
Keine Verlagerung von
Pseudo-ETL in die BITools
Standardisierte
Kennzahlen
BI-Tool Server + Caches
So viel wie möglich in
der DB vorbereiten
User View Layer
User View Layer
Oder so
WenigeSätze
Weitere Einflussfaktoren und Techniken
• Parallelisierung
-> abhängig von Hardware
-> direktes Steuern über Hints
• Aktuelle Statistiken
-> Source Tabellen
Insert Picture Here
Click to edit->title
auch während des ETL-Laufes
• Ausnutzen
des text styles
Click
to edit Master
Cache-Effektes
-> Organisieren der Abarbeitungsreihenfolge
-> Eventuell Query-Result-Cache nutzen
• Vermeiden von großen
Join-Tabellen
-> eventuell kleine Join-Tabelle
mit wenigen Spalten
Weitere Einflussfaktoren und Techniken
• Schnelle mengen-basierte Prüfungen kommen zuerst,
teuere Prüfungen (Feld-Prüfungen) zuletzt durchführen
• Möglichst viel Hauptspeicher für Join-Operationen
Insert Picture Here
Click
to
edit
title
mit großen Tabellen
Click
to edit Master text styles
• Sort-Area-Size hoch setzen
• Blocksize auf 16 bzw. 32 K
• PCTfree auf Null setzen
• Partition Change Tracking (PCT) für inkrementelles
Refresh der MAVs
Keine unnötige Daten-Transporte ...
Data
Integration
Layer
Vorsystem
Click
tomitedit title
Vorsystem
1:1
Insert Picture Here
Vorrechner
Click to edit Master text styles
1:1
Enterprise
Information
Layer
User View
Layer
User View
1:1 Layer
1:1
1:1
Externe ETL-Server
User View
Layer
... sondern kurze Wege
Freie
Wahlmöglichkeit
für Ort und Art des ETL
Vorsystem
Data Integration
Layer
Enterprise Information Layer
Click
to edit
title
Insert
Picture Here
User View Layer
Click to edit Master text styles
Process neutral / 3 NF
Ein-Datenbank-Server
Externe ETL-Server
(Hauptsächlich zu Dokumentationszwecken)
Zusammenfassung der wichtigsten Techniken
Eine zusammenhängende Datenbank
Data Integration
Layer
Enterprise Information
Layer
20% R R S S S
CTAS
Click Tto edit title
CTAS
T
B
T
PEL
Vorbereitete
temporäre
Tabellen
Partition
Exchange
Konzentration aller Prüfungen
114
CTAS : Create Table As Select
Partitionierte
Tabellen
PEL
A
80%
Vorgelagerte SQL-MengenPrüfungen
basierte
Prüfungen
D
D
B
Partition
Exchange
Aggregatbildung
durch Materialized
Views
Denormalisierung (Joins)
und Aggregate
PEL : Partition Exchange and Load
R: Referenztabellen
T: Transfertabellen
S: Stammdaten
B: Bewgungsdaten
D: Dimensionen
F: Fakten
A: Aggregate
D
DPicture Here
Insert
F
PEL
Click to edit Master
text styles
T
User View
Layer
Prüfungen
Zusammenfassung der Techniken bezogen auf das
Schichten-Modell
Data Integration
Layer
Enterprise Information
Layer
Click Tto edit title
CTAS
20% R
R
S
S
S
CTAS
PEL
T
Click to edit Master
text styles
T
T
User View
Layer
Insert
D
DPicture Here
F
B
D
D
B
PEL
PEL
A
PCT
80%
Typ-/FormatPrüfungen
für Texte
Über
Loader bzw.
External TablePrüfungen
Temporäre
Prüf- und
Zwischentabellen
mit Direct
Path Load
(CTAS)
Partition
Exchange
Load als
Weiterverarbeitung
der External Tables
Referenzieren
von großen
Faktentabellen
in die
WarehouseSchicht hinein
R: Referenztabellen
T: Transfertabellen
S: Stammdaten
B: Bewgungsdaten
D: Dimensionen
F: Fakten
A: Aggregate
Kennzahlensysteme mit
Materialized
Views
Fast Refresh mit
Partition Change
Tracking (PCT)
Partitionierte
Tabellen
Prüfungen
DATA WAREHOUSE
Herunterladen