710 likes | 937 Views
Data Warehouse. Daten übernehmen und vorbereiten. Datenstruktur im Data Warehouse. Star - Schema Snowflake - Schema Starflake - Schema. Star Schema. Kunde. Lieferanten. Verkaufs- transaktionen. Ort. Produkte. Zeit. Fakten. Dimensionsdaten. Snowflake Schema. Fakten.
E N D
Data Warehouse Daten übernehmen und vorbereiten
Datenstrukturim Data Warehouse • Star - Schema • Snowflake - Schema • Starflake - Schema
Star Schema Kunde Lieferanten Verkaufs- transaktionen Ort Produkte Zeit Fakten Dimensionsdaten
Snowflake Schema Fakten Snowflake Dimensionsdaten Verkaufs- transaktionen Ort Produkte Art Zeit Region Woche Farbe Oster- verkauf SSV Monat
Starflake Schema Fakten Dimensionsdaten Snowflake Dimensionsdaten Lieferanten Kunde Verkaufs- transaktionen Ort Produkte Ort Art Zeit Region Produkte Zeit Farbe Woche Oster- verkauf SSV Monat
Oracle Data Mining Architektur OWB Client Darwin Client Data Warehouse Oracle Intelligent WebHouse Datenbank z.B. Oracle 8.0.5 OCI Net8 Oracle Warehouse Builder ODBC Darwin 8i 8.1.6 Repository Sun Solaris HP UX
Beispieldatenbank OWBZiel (Dimensionen) Levels und Hierarchien Beispiel: Zeit H1: YearL->QuarterL->MonthL->WeekL->DayL H2: YearL->WeekL->DayL
Tabellen ta_probant probant aufgaben_nr ergebnis_1 ergebnis_2 ergebnis_3 ergebnis_4 richtig datum ip_adresse ta_aufgaben aufgaben_nr augfaben_text loesung_1 loesung_2 loesung_3 loesung_4 kommentar_1 kommentar_2 kommentar_3 kommentar_4 richtige_loesung ta_mathetest_historie datum text ta_seite1 datum ip_adresse
product channel Beispieldatenbank Quelle -> Ziel
BeispielMathetest • 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?
Rohdaten 30.6.196017.4.19571 5 Apr 15 2000 1:28PM deeeeeeeee5 17 Apr 15 2000 1:29PM 24.03.195126.01.19481 7 Apr 15 2000 1:29PM 00.00.0000.00.0040 10 Apr 17 2000 4:07PM 15.11.195023.01.194814 1 Apr 18 2000 2:41PM 1409530805481 1 Jul 13 2000 4:34PM 29.7´5429.9´523 54 Sep 27 2000 8:20AM 01.01.0001.01.009 54 Sep 27 2000 2:05PM 20.05.195623.03.19531. 54 Oct 26 2000 9:54PM 1.1.19601.1.19601 2 Oct 30 2000 12:29PM ab0 3 Jan 10 2001 1:46PM ab0 54 Jan 11 2001 6:57PM
Import der FaktendatenSybase -> Oracle • select – insert • dump - restore
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 );
select - insertFaktentabelle 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),datum,108) +"','dd.mm.yyyy hh24:mi:ss')" +",'"+ip_adresse+"');" from ta_probant
Daten bank SQL*LoaderÜbersicht Loader Control File Input Datenfiles SQL*Loader Log File Bad File Discard File
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
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
Control fileBeispiel LOAD DATA INFILE 'example.dat' INTO TABLE emp (empno POSITION(01:04) INTEGER EXTERNAL, ename POSITION(06:15) CHAR, job POSITION(17:25) CHAR, mgr POSITION(27:30) INTEGER EXTERNAL, sal POSITION(32:39) DECIMAL EXTERNAL, comm POSITION(41:48) DECIMAL EXTERNAL, ...
Control fileBeispiel 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"
Control fileBeispiel 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))
Daten bank Filtern der Datensätze Eingabe SQL*Loader Feldprüfung Discard File Bad File SQL*Loader Auswahl DBMS
Syntax control file -- comment OPTIONS (options) LOAD CONTINUE_LOAD DATA READBUFFERS n infile_clause INSERT APPEND Concatenation_clause REPLACE into_table_clause PRESERVE BLANKS BEGINDATA
Syntax control file infile_clause::= INFILE input_filename * BADFILE bad_file_name DISCARDFILE discard_file_name DISCARDS n DISCARDMAX
Syntax control file concatenation_clause::= n CONCATENATE (n) COTINUEIF pos_spec_operator ‘ char_string‘ THIS ( ) NEXT
Syntax control file pos_spec_operator::= ) = ( start : end != - <> Ø=
Syntax control file into_table_clause::= INTO TABLE tablename INSERT APPEND REPLACE AND FIELDS delimiter_spec WHEN field_condition , ( column_name column_spec )
Syntax control file delimiter_spec::= termination_spec enclosure_spec termination_spec enclosure_spec OPTIONALLY WHITESPACE TERMINATED by ‘ char‘ ‘ char‘ ENCLOSED by AND ‘ char‘
Syntax control file column_spec::= POSITION pos_spec datatype_spec ( * ) +n NULLIF field_condition DEFAULTIF field_condition “ sql_string“
Syntax control file datatype_spec::= delimiter_spec INTEGER FLOAT EXTERNAL (length) DECIMAL ( precision ) , scale EXTERNAL (length) CHAR (length) DATE (length) “ mask“
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
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');
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');