Data Warehouse

Werbung
Data Warehouse
Daten übernehmen und
vorbereiten
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 1
Datenstruktur
im Data Warehouse
• Star - Schema
• Snowflake - Schema
• Starflake - Schema
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 2
Star Schema
Kunde
Lieferanten
Verkaufstransaktionen
Ort
Produkte
Zeit
Fakten
Worzyk
FH Anhalt
Dimensionsdaten
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 3
Snowflake Schema
Fakten
Snowflake Dimensionsdaten
Verkaufstransaktionen
Ort
Produkte
Art
Region
Woche
Zeit
SSV
Monat
Worzyk
FH Anhalt
Osterverkauf
Farbe
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 4
Starflake Schema
Fakten
Dimensionsdaten
Snowflake Dimensionsdaten
Lieferanten
Kunde
Verkaufstransaktionen
Ort
Ort
Zeit
Region
Woche
Zeit
SSV
Worzyk
FH Anhalt
Produkte
Monat
Osterverkauf
Art
Produkte
Farbe
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 5
Oracle Data Mining Architektur
OWB
Client
Datenbank
z.B.
Oracle 8.0.5
Data Warehouse
Net8
Oracle
Warehouse Builder
8i 8.1.6
Worzyk
FH Anhalt
Repository
Darwin
Client
OCI
ODBC
Oracle
Intelligent WebHouse
Darwin
Sun Solaris
HP UX
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 6
Beispieldatenbank
Quelle
Zahlungsart
Bestellung Kopf
Verkäufer
R-2
R-1
R-3
R-5
Lieferung
Bestellung Artikel
R-6
Kalender
Segment
Rechnung
R-7
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 7
Beispieldatenbank
OWB
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 8
Beispieldatenbank
Quelle
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 9
Beispieldatenbank
Quelle
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 10
Beispieldatenbank Quelle
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 11
Beispieldatenbank
Quelle
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 12
Beispieldatenbank
Quelle
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 13
Beispieldatenbank
Ziel (Warehouse Schema)
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 14
Beispieldatenbank OWB
Ziel (Faktentabelle)
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 15
Beispieldatenbank OWB
Ziel (Dimensionen)
Levels und Hierarchien
Beispiel: Zeit
H1: YearL->QuarterL->MonthL->WeekL->DayL
H2: YearL->WeekL->DayL
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 16
Beispieldatenbank OWB
Ziel (Warehouse Schema)
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 17
Beispieldatenbank
Ziel (Warehouse Schema)
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 18
Tabellen
ta_probant
probant
aufgaben_nr
ergebnis_1
ergebnis_2
ergebnis_3
ergebnis_4
richtig
datum
ip_adresse
Worzyk
FH Anhalt
ta_aufgaben
aufgaben_nr
augfaben_text
loesung_1
loesung_2
loesung_3
loesung_4
kommentar_1
kommentar_2
kommentar_3
kommentar_4
ta_mathetest_historie
datum
text
ta_seite1
datum
ip_adresse
richtige_loesung
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 19
Beispieldatenbank
Quelle -> Ziel
product
Worzyk
FH Anhalt
channel
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 20
Beispiel
Mathetest
• Wie sehen die zeitlichen Verläufe aus
• Wie lange braucht der einzelnen
Probant pro Frage
• Welche Einträge sind plausibel
• Welche Daten der Eltern sind
plausibel?
• Wie korrelieren die Antworten auf die
Testfragen?
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 21
Rohdaten
30.6.196017.4.19571
deeeeeeeee5
24.03.195126.01.19481
00.00.0000.00.0040
15.11.195023.01.194814
1409530805481
29.7´5429.9´523
01.01.0001.01.009
20.05.195623.03.19531.
1.1.19601.1.19601
ab0
ab0
Worzyk
FH Anhalt
5
17
7
10
1
1
54
54
54
2
3
54
Apr
Apr
Apr
Apr
Apr
Jul
Sep
Sep
Oct
Oct
Jan
Jan
15
15
15
17
18
13
27
27
26
30
10
11
2000 1:28PM
2000 1:29PM
2000 1:29PM
2000 4:07PM
2000 2:41PM
2000 4:34PM
2000 8:20AM
2000 2:05PM
2000 9:54PM
2000 12:29PM
2001 1:46PM
2001 6:57PM
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 22
Import der Faktendaten
Sybase -> Oracle
1. select – insert
2. dump - restore
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 23
Sybase
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 24
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 25
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 26
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 27
Faktentabelle
drop table ta_zeitreihe;
create table ta_zeitreihe(
schluessel number(6) not null,
probant char(24) not null,
aufgaben_nr number(3) not null,
ergebnis_1 number(1) null,
ergebnis_2 number(2) null,
ergebnis_3 number(1) null,
ergebnis_4 number(4) null,
richtig char(1) not null,
datum date null,
ip_adresse char(15) null,
jahrestag char(7) null
);
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 28
select - insert
Faktentabelle
select
"insert into ta_zeitreihe values (sq_zeitreihe.nextval,"+"'"
+probant+"',"+convert(char(2),aufgaben_nr)+","
+convert(char(1),isnull(ergebnis_1,0))+","
+convert(char(1),isnull(ergebnis_2,0))+","
+convert(char(1),isnull(ergebnis_3,0))+","
+convert(char(1),isnull(ergebnis_4,0))+",'"+richtig
+"',to_date('"+convert(char(12),datum,104)+convert(char(8),datu
m,108)
+"','dd.mm.yyyy hh24:mi:ss')"
+",'"+ip_adresse+"');"
from ta_probant
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 29
SQL*Loader
Übersicht
Input
Datenfiles
Log
File
Daten
bank
Worzyk
FH Anhalt
SQL*Loader
Loader
Control
File
Bad
File
Discard
File
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 30
Funktionen von SQL*Loader
•
•
•
•
Mehrere Eingabedateien gleichzeitig
SQL-Funktionen für die Eingabefelder
Laden mehrerer Tabellen in einem Lauf
Zusammenfassen mehrerer Zeilen zu
einem logischen Datensatz
• Generierung von Schlüsseln
• Eingabe von Platte, Band, named pipes
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 31
Control file
• Enthält
– Pfade für Eingabe, Log, fehlerhafte
Datensätze, verworfene Datensätze
– Struktur der Eingabedaten
– Feldprüfungen
– Zieltabellen
– Vorschriften zur Fehlerbehandlung
• wird beim Aufruf übergeben
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 32
Control file
Beispiel
LOAD DATA
INFILE 'example.dat'
INTO TABLE emp
(empno
POSITION(01:04)
ename
POSITION(06:15)
job
POSITION(17:25)
mgr
POSITION(27:30)
sal
POSITION(32:39)
comm
POSITION(41:48)
...
Worzyk
FH Anhalt
INTEGER
CHAR,
CHAR,
INTEGER
DECIMAL
DECIMAL
EXTERNAL,
EXTERNAL,
EXTERNAL,
EXTERNAL,
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 33
Control file
Beispiel
LOAD DATA
INFILE *
INTO TABLE DEPT
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(DEPTNO, DNAME, LOC)
BEGINDATA
12,RESEARCH,"SARATOGA"
10,"ACCOUNTING",CLEVELAND
11,"ART",SALEM
21,"SALES",PHILA.
22,"SALES",ROCHESTER
42,"INT'L","SAN FRAN"
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 34
Control file
Beispiel
load data
infile 'example.dat' "fix 11"
badfile 'example.bad'
discardfile 'example.dsc'
discardmax 999
truncate
into table example
(rown position(1-5), cmnt position(6-10))
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 35
Filtern der Datensätze
Eingabe
SQL*Loader Feldprüfung
Discard
File
SQL*Loader Auswahl
Bad
File
DBMS
Worzyk
FH Anhalt
Daten
bank
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 36
Syntax control file
-- comment
OPTIONS (options)
LOAD
CONTINUE_LOAD
DATA
READBUFFERS n
infile_clause
INSERT
APPEND
REPLACE
Concatenation_clause
into_table_clause
PRESERVE BLANKS
Worzyk
FH Anhalt
BEGINDATA
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 37
Syntax control file
infile_clause::=
INFILE
input_filename
*
BADFILE
DISCARDFILE
bad_file_name
discard_file_name
DISCARDS
n
DISCARDMAX
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 38
Syntax control file
concatenation_clause::=
n
CONCATENATE
(n)
COTINUEIF
pos_spec_operator
THIS
(
‘ char_string‘
)
NEXT
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 39
Syntax control file
pos_spec_operator::=
)
( start
:
-
end
=
!=
<>
=
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 40
Syntax control file
into_table_clause::=
INTO TABLE tablename
INSERT
APPEND
REPLACE
AND
WHEN
FIELDS
delimiter_spec
field_condition
,
(
Worzyk
FH Anhalt
column_name
column_spec
)
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 41
Syntax control file
delimiter_spec::=
termination_spec
enclosure_spec
termination_spec
enclosure_spec
OPTIONALLY
WHITESPACE
TERMINATED
by
‘ char‘
ENCLOSED
by
Worzyk
FH Anhalt
‘ char‘
AND
‘ char‘
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 42
Syntax control file
column_spec::=
POSITION
pos_spec
(*
datatype_spec
)
+n
NULLIF field_condition
DEFAULTIF field_condition
“ sql_string“
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 43
Syntax control file
datatype_spec::=
delimiter_spec
INTEGER
FLOAT
EXTERNAL
(length)
DECIMAL
( precision
)
, scale
EXTERNAL
(length)
CHAR
(length)
DATE
(length)
Worzyk
FH Anhalt
“ mask“
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 44
Aufruf des SQL*Loader
SQLLDR80 schlüsselwort=wert [, schlüsselwort=wert ]
Gültige Schlüsselworte:
USERID - ORACLE userid/password
CONTROL - controlfile
LOG - logfile
BAD - badfile
DATA - datafile
LOAD - Anzahl der einzulesenden logischen Datensätze
ERRORS - Anzahl der erlaubten Fehler
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 45
Mathetest
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 46
Mathetest
Auswertung pro Stunde
select to_char(datum,'hh24'), count(*)
from ta_zeitreihe
group by to_char(datum,'hh24')
order by to_char(datum,'hh24');
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 47
Mathetest
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 48
Mathetest
Auswertung pro Wochentag
select to_char(datum,'day'), count(*),
to_char(datum,'d')
from ta_zeitreihe
group by to_char(datum,'day'),
to_char(datum,'d')
order by to_char(datum,'d');
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 49
Mathetest
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 50
Mathetest
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 51
Mathetest
• Faktentabelle
– Alle Einträge der Originaltabelle und zusätzlich ein
eindeutiger Zähler und Tagesnummer
• Dimensionstabelle
– Jeder Tag seit Beginn des Tests mit: fortlaufende
Nummer, Tagesnummer, Monat, Jahr, Datum
• Dimensionstabelle
– zu jedem Eintrag in der Faktentabelle: Wochentag,
Stunde, Tagesnummer
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 52
Dimensionstabelle
TAG
---------1
2
3
4
5
6
7
8
9
10
11
Worzyk
FH Anhalt
DATUM
-------13.04.00
14.04.00
15.04.00
16.04.00
17.04.00
18.04.00
19.04.00
20.04.00
21.04.00
22.04.00
23.04.00
JAHREST
MONAT
------- ---------2000104
4
2000105
4
2000106
4
2000107
4
2000108
4
2000109
4
2000110
4
2000111
4
2000112
4
2000113
4
2000114
4
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 53
Datumsfunktionen von Oracle
ADD_MONTHS
Syntax
ADD_MONTHS(d,n)
Purpose
Returns the date d plus n months. The argument n can be
any integer. If d is the last day of the month or if the
resulting month has fewer days than the day component
of d, then the result is the last day of the resulting month.
Otherwise, the result has the same day component as d.
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 54
Datumsfunktionen von Oracle
LAST_DAY
Syntax
LAST_DAY(d)
Purpose
Returns the date of the last day of the month that contains
d. You might use this function to determine how many
days are left in the current month.
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 55
Datumsfunktionen von Oracle
NEXT_DAY
Syntax
NEXT_DAY(d, char)
Purpose
Returns the date of the first weekday named by char
that is later than the date d. The argument char must
be a day of the week in your session's date
language-either the full name or the abbreviation.
The minimum number of letters required is the
number of letters in the abbreviated version; any
characters immediately following the valid
abbreviation are ignored. The return value has the
same hours, minutes, and seconds component as the
Worzyk
FH Anhalt
argument d.
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 56
Datumsfunktionen von Oracle
ROUND
Syntax
ROUND(d[,fmt])
Purpose
Returns d rounded to the unit specified by the format model
fmt. If you omit fmt, d is rounded to the nearest day. See
"ROUND and TRUNC" for the permitted format models
to use in fmt.
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 57
Datumsformate in Oracle
YYYY
Q
MM
M ONTH
M ON
WW
IW
W
DDD
DD
D
DAY
DY
J
HH
HH24
MI
SS
Worzyk
FH Anhalt
4-stellige Jahreszahl
Quartal
M onat 01-12
M onatsname
Abkürzung des M onatsnamens
Wochennr
Wochennr nach ISO
Woche im M onat
Tag im Jahr 1-366
Tag im M onat 1-31
Tag in der Woche
Tagesname
Abkürzung des Tagesnamens
Julianischer Tag; Tag 1 ist 1. Januar 4712 vor Chr.
Tagesstunde 1-12
Tagesstunde 1-24
M inute
Sekunde
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 58
Datumsfunktionen von Sybase
dateadd - adds an interval to a specified date.
It takes three arguments-- the datepart, a
number, and a date. The result is a
datetime value equal to the date plus the
number of date parts.
select newpubdate = dateadd(day, 21, pubdate)
from titles
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 59
Datumsfunktionen von Sybase
datediff - calculates the number of date parts
between two specified dates. It takes three
arguments. The first is a date part. The
second and third are dates, either datetime or
smalldatetime values. The result is a signed
integer value equal to date2 - date1, in date
parts.
select newdate = datediff(day, pubdate, getdate())
from titles
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 60
Datumsfunktionen von Sybase
datename - produces the specified datepart
(the first argument) of the specified date
(the second argument) as a character
string. Takes either a datetime or
smalldatetime value as its second
argument.
select datename(month getdate())
Worzyk
FH Anhalt
November
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 61
Datumsfunktionen von Sybase
datepart - produces the specified datepart
(the first argument) of the specified date
(the second argument) as an integer. Takes
either a datetime or smalldatetime value as
its second argument.
select datepart(month getdate())
Worzyk
FH Anhalt
11
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 62
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 63
Datenkonvertierung Sybase
convert (datatype [(length) | (precision[,
scale])], expression[, style])
Converts between a wide variety of
datatypes and reformats date/time and
money data for display purposes.
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 64
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 65
Dimensionstabelle
TAG
---------1
2
3
4
5
6
7
8
9
10
11
Worzyk
FH Anhalt
DATUM
-------13.04.00
14.04.00
15.04.00
16.04.00
17.04.00
18.04.00
19.04.00
20.04.00
21.04.00
22.04.00
23.04.00
JAHREST
MONAT
------- ---------2000104
4
2000105
4
2000106
4
2000107
4
2000108
4
2000109
4
2000110
4
2000111
4
2000112
4
2000113
4
2000114
4
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 66
Dimensionstabelle
Worzyk
FH Anhalt
drop table ta_Dim_zeit_1;
create table ta_dim_zeit_1(
tag_nr number(3) not null,
Datum date null,
jahrestag char(7),
monat number(2)
);
select to_number(to_char(max(datum),'J'))
- to_number(to_char(min(datum),'J'))+1
from ta_zeitreihe;
insert into ta_dim_zeit_1 (tag_nr)
select schluessel
from ta_zeitreihe
Datenbanksysteme 3 Sommer 2003
where schluessel <= 382
Datenübernahme - 67
Dimensionstabelle
select to_char(min(datum),'J'), min(datum)
from ta_zeitreihe;
update ta_dim_zeit_1
set datum =
to_date(to_char(2451647+tag_nr,'9999999'),'J');
update ta_dim_zeit_1
set jahrestag =
to_char(datum,'YYYY')||to_char(datum,'ddd'),
monat = to_char(datum,'MM');
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 68
Auswertung pro Tag
select to_char(d1.datum, 'yy.mm.dd'),
count(z.schluessel) "Anzahl"
from ta_dim_zeit_1 d1,
ta_zeitreihe z
where d1.jahrestag = z.jahrestag (+)
group by to_char(d1.datum, 'yy.mm.dd'),
d1.jahrestag
order by to_char(d1.datum, 'yy.mm.dd');
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 69
Worzyk
FH Anhalt
Datenbanksysteme 3 Sommer 2003
Datenübernahme - 70
Herunterladen