OWB Workbook Workshop Hamburg, Oktober 2010 OWB Release 11.2 Version 1 Inhalt OWB Workbook ................................................................................. 1 Der Übungsrechner........................................................................ 3 Installation ...................................................................................... 3 Orientierung in der neuen Umgebung ........................................... 3 Übersicht über das Workshop-Szenario ........................................ 4 Einlesen Textdateien und Arbeiten mit External-Tables................ 5 Erstes Mapping und erste neue Tabelle ........................................ 6 Einen Blick in die Datenbank und Umgang mit DB-Schemen ....... 7 Control Center Manager ................................................................ 7 Importieren von Tabellen-Definitionen aus einem DatenbankSchema .......................................................................................... 8 Umgang mit bestehenden Datenbank-Prozeduren und Aufrufparametern ........................................................................... 9 Der Tabelleneditor ....................................................................... 10 Metadaten-Browser...................................................................... 11 Joiner ........................................................................................... 11 Interaktives Generieren und Testen ............................................ 11 Einbauen von Funktionen ............................................................ 12 Group By und Order by ................................................................ 12 Splitter und Schreiben in eine Textdatei ...................................... 13 Verwendung von Distinct und Sequence .................................... 13 Aufbau eines künstlichen Schlüssels für eine Dimensions-Tabelle ..................................................................................................... 13 Komplexeres Mapping mit Zwischenschritten, Lookups, Truncate ..................................................................................................... 14 Expressions und CASE Blöcke.................................................... 15 Aufbau einer multidimensional verwendbaren Zeit-Dimension ... 17 Aufbau einer Dimension über den Wizzard ................................. 18 Aufbau eines Star Schemas ........................................................ 18 Metadatenauswertungen ............................................................. 18 Aufbau der Workflow/Prozess-Umgebung................................... 19 MDL-Dateien ................................................................................ 20 OMBPlus ...................................................................................... 20 Sonstige Punkte / Themen .......................................................... 20 Das Kennenlernen eines Tools kann eine zeitaufwendige Angelegenheit sein. Ziel muss es daher sein, in möglichst kurzer Zeit das nötige Rüstzeug für die praktische Anwendung zu erlernen. Konzentration auf die in der Praxis benötigten wichtigsten Features ist daher angebracht. Die Praxis des Oracle Warehouse Builders ist das Erstellen eines Data Warehouse Systems. Die hier vorliegenden Übungen zeigen daher einen kleinen Ausschnitt in wesentliche Schritte in diesem Entwicklungsprozess. Es sind Umgang mit Textdateien Arbeiten mit Datenbanktabellen Arbeiten mit Funktionen und Prozeduren in der Datenbank Nutzen der wesentlichen Operatoren in einem ETL-Prozesse, wie Joiner, Expressions, Lookups, Splitter, Distinct und Group By Das Zusammenfassen von Mappings in einem komplexeren Prozesse Monitoring OWB verfügt über noch viele andere Funktionen, die allerdings in der Regel seltener genutzt werden. Hat man einmal ein Grundverständnis von OWB erworben, so kann man sich diese Spezialthemen leicht auch ohne aufwendige Schulung über die Dokumentation selbst erarbeiten, wenn man sie benötigt. In dieser Weise gelingt hoffentlich eine schnelle Einarbeitung. OWB hat sich in der Praxis als das einfache und passende Werkzeug für die Entwicklung von Oracle-basierten WarehouseSystemen gezeigt. Deswegen geht die Anzahl der Installationen in die Tausende und ist kaum feststellbar. 3/20 Der Übungsrechner Login User: Passw. edu Ora#2010 Datenbank: Datenbank und Listener sind bereits hochgefahren SID ORCL Rechnername: localhost DB Port 1521 Installation 1. Vor der Installation die Spracheneinstellungen des Rechners ändern: -> Regional and Language Options 2. Installieren Sie OWB auf Ihrem Rechner. Orientierung in der neuen Umgebung 3. Orientieren Sie sich in der neuen Oberfläche a. Klicken Sie sich durch die einzelnen Fenster durch. b. Schieben Sie unter den Umgebungseigenschaften das Undo Behaviour auf den Wert 20 c. Machen das „Property Inspector“ - Fenster sichtbar. Kann man in diesem Fenster schon etwas sehen? Machen Sie etwas sichtbar. d. Wie viele User sind in Ihrer Umgebung registriert? e. Wie lautet die eine Location, die Sie bereits jetzt nach der Installation haben? f. Machen Sie die „Start Page“ unsichtbar und wieder sichtbar. 4/20 Übersicht über das Workshop-Szenario 4. Die Workshop-Übungen dienen dem Kennenlernen der einzelnen Funktionen. Um den Aufwand der Vorbereitung gering zu halten, werden Prozeduren genutzt, die im Verlauf der Übungen Testdaten erzeugen, mit denen Sie arbeiten. Andere Daten werden als Text-Datei genutzt, um das Arbeiten mit External-Tables kennenzulernen. Um eine kleine Vorstellung von einem realen Arbeiten mit OWB zu erhalten, wurden zwei Bereiche/DB-User (OLTP , DWH) gewählt. In der Praxis wird es sicher mehr Bereiche geben, aber diese Übungen sollten einfach gehalten werden. Wenn alle Übungen abgeschlossen sind, sollten Tabellen entstanden sein, wie sie in einem Star-Schema nutzbar sind. Tabellen und Textdateien für den Workshop. Die kursiv dargestellten Objekte entstehen im Verlauf des Workshops. Die übrigen sind bereits vorhanden oder werden als Textdaten erzeugt. 5/20 Einlesen Textdateien und Arbeiten mit ExternalTables 5. Richten Sie ein Modul zum Einlesen von Textdateien ein. 6. Lesen Sie die Datei ORTE.CSV ein. Achten Sie auf die erste Zeile in der Textdatei. Sie sollte als Spaltenüberschriften genutzt werden. 7. Richten Sie ein Oracle-Modul mit dem Namen DWH ein. Dieses Modul sollte auf das Datenbank-Schema DWH zeigen. 8. Suchen Sie unter dem Reiter „Locations“ die neu entstandene Location und testen Sie den Zugriff. 9. Erzeugen Sie in dem neuen Modul „DWH“ die External Table mit dem Namen „EX_Orte“. Verwenden Sie dabei die zuvor erstellte Definition der Text-Datei. 10. Deployen Sie die External Table aus dem Project - Tree heraus. Beobachten Sie dabei die entsprechenden Meldungen in dem Log-Output-Fenster. Es sollten nur grüne Häkchen zu sehen sein. 11. Wieviele Objekte wurden tatsächlich in die Datenbank generiert? 12. Betrachten Sie sich die Daten der Text-Datei über die External Table in dem Data-Browser. 6/20 Erstes Mapping und erste neue Tabelle 13. Erstellen Sie in dem Modul DWH ein neues Mapping mit dem Namen MP_ORTE. a. Benutzen Sie in diesem neuen Mapping die zuvor erstellte External Table als Vorlage für eine neu zu erstellende Tabelle TB_Orte. b. Überführen Sie die neue erstelle Tabelle TB_Orte in das Modul DWH. c. Betrachten Sie sich die neue Tabelle in dem ModulTree. d. Deployen Sie die neue Tabelle und das neue Mapping. e. Starten Sie das Mapping aus dem Projekt-Tree heraus und beobachten Sie wie viele Sätze gelesen und geschrieben werden. f. Überprüfen Sie über den Data Browser ob auch tatsächlich alle Sätze in der neuen Tabelle angekommen sind. 7/20 Einen Blick in die Datenbank und Umgang mit DB-Schemen 14. Definieren Sie sich mit SQL Plus einen neuen DB-User mit dem Namen DWH2: Auf Kommando-Ebene: SQLPLUS sys/sys as sysdba create user OLTP identified by OLTP; grant dba to OLTP; 15. Richten Sie in OWB ein Modul OLTP ein, das auf das neue Schema zeigt. 16. Wiederholen Sie für diesen DB-User OLTP die Übungen 9-13 in dem Modul OLTP. (Erstellen External table und Deploy). a. Welcher Fehler tritt bereits bei dem Deploy-Versuch der External-Table auf? b. Kann der Fehler ignoriert werden? c. Welchen Fehler stellen Sie am Ende bei dem Versuch des Deploy auf das Mapping fest? 17. Lösen Sie das Problem, indem Sie den neuen User OLTP für die Verwendung des OWB-Repositories registrieren. 18. Speichern Sie Ihre OWB Metadaten ab. Control Center Manager 19. Starten Sie den Control Center Manager und suchen Sie die zuvor gestarteten Jobs. 20. Entscheiden Sie mit welcher Deployment-Oberfläche Sie eher arbeiten möchten. 8/20 Importieren von Tabellen-Definitionen aus einem Datenbank-Schema 21. Tabellendaten laden: a. Starten Sie SQLPLUS für das Schema DWH b. Rufen Sie aus SQLPLUS heraus die Prozedur „01_DWH_Kursdaten.sql“ auf. SQL> start pfad\01_DWH_Kursdaten.sql 22. Importieren Sie alle Tabellen-Definitionen aus dem Schema DWH, die sich noch nicht in dem OWB-Projekt befinden. 23. Wiederholen Sie den Vorgang für das Schema OLTP a. Starten Sie SQLPLUS für das Schema OLTP b. Rufen Sie aus SQLPLUS heraus die Prozedur „01_OLTP_Kursdaten.sql“ auf. SQL> start pfad\01_OLTP_Kursdaten.sql 24. Speichern Sie Ihre OWB Metadaten ab. 25. Überprüfen Sie über den Data Viewer, ob sich in den Tabellen bereits Daten befinden. Die Tabellen Kunde, Tage, Bestellung und Bestellpositionen müssten leer sein. 9/20 Umgang mit bestehenden DatenbankProzeduren und Aufrufparametern 26. Importieren Sie in beiden Modulen (DWH, OLTP) alle Prozeduren und Funktionen, die sich jetzt in den Schemen DWH und OLTP befinden in Ihr OWB-Projekt. 27. Füllen der Kunden-Tabelle: a. Erstellen Sie in dem Modul OLTP ein neues Mapping MP_GEN_Kunde. b. Fügen Sie einen Transformation - Operator in das Mapping ein und wählen Sie dabei die Prozedur KUNDE_GEN. c. Fügen Sie jetzt einen Mapping-Input-Operator ein und definieren Sie in diesem Operator ein „Output-Attribut“ mit dem Namen ANZAHL. d. Verbinden Sie dieses Feld mit dem Aufruf-Feld der Prozedur ANZ_KUNDE. e. Legen Sie jetzt für den Aufrufparameter ANZAHL den Default-Wert 1000 fest. f. Deployen Sie das Mapping und starten es. g. Überprüfen Sie, ob sich jetzt Daten in der Tabelle KUNDE befinden. 28. Wiederholen Sie den Vorgang für die Tabelle TAGE, allerdings in dem Modul DWH. Beachten, Sie dass Sie nun 2 Parameter vom Typ DATE benötigen und wählen Sie für STARTDATE '01-JAN-90', ' und ENDDATE '31-DEC-15‘ 29. Überprüfen Sie, ob sich jetzt Daten in der Tabelle TAGE befinden und ob die Formate stimmen. 30. Wiederholen Sie den Vorgang für die Tabellen BESTELLUNG und BESTELLPOSITIONEN. Rufen Sie hierzu die Prozedur BESTELLUNGEN_GEN mit dem Aufrufwert von 1000 auf. Dieses ist in dem Modul OLTP durchzuführen. 10/20 Der Tabelleneditor 31. Wechseln Sie in das Modul DWH. 32. Erzeugen Sie mit dem Tabellen-Editor die Tabelle Artikel mit folgender Struktur. Artikelnummer Artikelname Artikelpreisnetto Verpackungspreis Lieferantennummer Artikelgruppennummer Artikelgruppe Artikelspartennummer Artikelsparte 33. 34. 35. 36. Wählen Sie die passenden Feldtypen. Definieren Sie einen Primary Key für das Feld Artikelnummer. Überführen Sie die neue Struktur in die Datenbank. Wiederholen Sie den Deploy-Prozess. a. Welche Fehlermeldung stellen Sie fest? b. Wiederholen Sie den Deploy-Vorgang noch einmal. Was stellen Sie fest? 11/20 Metadaten-Browser 37. Starten Sie den OWB-Browser Listener. a. Z. B.: D:\ora\product\11.2.0\dbhome_1\owb\bin\win32\startOw bbInst.bat 38. Starten Sie den OWB Browser. 39. Suchen Sie alle Jobs, die Sie bisher gestartet haben. Joiner 40. Überführen Sie die Text-Dateien Artikel, Artikelgruppe und Artikelsparte mit Hilfe eines Joiners in die zuvor erstellte Tabelle Artikel. 41. Beachten Sie eventuelle Warnungen bei der Generierung. 42. Versuchen Sie trotz der Warnungen das Mapping zu starten. 43. Suchen Sie nach möglichen Fehlerursachen über den Metadaten-Browser. Interaktives Generieren und Testen 44. Erzeugen Sie in dem zuvor erstellten Mapping eine Intermediate-Generierung. Für unterschiedliche Group-Bereiche in den Operatoren. 45. Versuchen Sie einzelne sinnvolle Code-Fragmente in SQLPlus laufen zu lassen. 12/20 Einbauen von Funktionen 46. Kopieren Sie das zuvor erstellte Mapping und speichern Sie es unter einem neuen Namen. 47. Füllen Sie das Feld VERPACKUNGSPREIS über die Funktion RAN_M_M mit einem Zufallswert zwischen 2 und 10. 48. Testen Sie das neue Mapping. Group By und Order by 49. Erzeugen Sie eine Auswertetabelle, die die Menge aller Kunden pro Segment aufnehmen kann. Die Liste sollte nach Segmenten aufsteigend sortiert sein. Der folgende Befehl dient als Orientierung. select segment,count(*) from kunde group by segment order by segment; 13/20 Splitter und Schreiben in eine Textdatei 50. Erzeugen Sie 2 Zieltabellen für die Kunden-Segmente kleiner 10 und größer gleich 10. 51. Schreiben Sie diese Tabellen dann weiter in jeweils eine Textdatei. Verwendung von Distinct und Sequence 52. Erstellen Sie eine Referenztabelle aus dem Feld BERUFSGRUPPE der Tabelle KUNDE. a. Achtung: die Tabelle Kunde befindet sich in dem Modul OLTP. Die neue Tabelle BERUFSGRUPPE wird jedoch in dem Modul DWH liegen. b. Die Referenztabelle besteht aus 2 Spalten BERUFSGRUPPE und BERUFSGRUPPENNR c. Das Feld BERUFSGRUPPE nimmt alle distinct-Werte aus dem Feld BERUFSGRUPPE von KUNDE auf. d. In dem Feld BERUFSGRUPPENNR sollte mit Hilfe einer Sequence eine laufende Nummer generiert werden. Hierzu sollten Sie ein Sequence-Objekt anlegen, das auch deployed werden sollte. Aufbau eines künstlichen Schlüssels für eine Dimensions-Tabelle 53. Erstellen Sie eine Dimensionstabelle D_Artikel als Ableitung von der bereits bestehenden Tabelle Artikel. Die neue Tabelle D_Artikel soll einen neuen künstlichen Schlüssel in Form einer laufenden Nummer erhalten. Verwenden Sie dazu eine Sequenz. 54. Überprüfen Sie nach dem Überführen aller Objekte in die Datenbank, dass zu jedem Originalschlüssel aus der Bestellpositionstabelle ein neuer Schlüssel zu finden ist. 14/20 Komplexeres Mapping mit Zwischenschritten, Lookups, Truncate 55. Erstellen Sie in mehreren Schritten eine Tabelle D_KUNDE, die Sie später als Dimensionstabelle nutzen können. Kundennummer Kundenname Wohnort Wohnortnummer Segment Berufsgruppe Berufsgruppennummer a. Leiten Sie Wohnort und Wohnortnummer aus der Tabelle Bestellung (ORTNR) und der Tabelle ORTE ORT) ab. b. Ergänzen Sie die neue Tabelle um die Informationen BERUFSGRUPPE und BERUFSGRUPPENNUMMER indem Sie die zuvor erstellte Tabelle BERUFSGRUPPE verwenden. c. Lösen Sie die Aufgabe in 2 Schritten und verwenden Sie als „Zwischenablage“ eine temporäre Tabelle TMP_KUNDE. d. Wie verhindern Sie, dass sich in der Zwischentabelle nach mehrfachen Testläufen Daten ansammeln. 56. Betrachten sie die übrigen Möglichkeiten des Lookup-Operators a. Was ist, wenn mehrere Lookup-Werte gefunden werden? b. Was ist, wenn kein Lookup-Wert für einen Schlüssel vorhanden ist? 15/20 Expressions und CASE Blöcke 57. Erstellen Sie in dem Module DWH eine Tabelle F_UMSATZ, die Sie später auch als Faktentabelle nutzen können. Ortnr Kundennr Bestellnr Artikelnr Positionsnr Zeitnr Datum Einzelpreis Menge Steuersatz Gesamtsumme_Pos a. Führen Sie die OLTP-Tabellen BESTELLUNG und BESTELLPOSITIONEN über einen Joiner zusammen. b. Übernehmen Sie Ortnr, Kundennr, Bestellnr, Datum, Menge c. Übernehmen Sie den neuen künstlichen Schlüssel in der Tabelle D_Artikel als Artikelnummer für die Faktentabelle. Die Artikelnummer aus der Bestellpositionstabelle muss über einen Lookup in die D_Artikel-Tabelle ausgetauscht werden. 58. Die Aufgabe ist komplex. Führen Sie daher einen Zwischenschritt ein. Deployen Sie die neue Tabelle und das Mapping. a. Welchen Fehler stellen Sie bei dem Deployen des Mappings fest? b. Wenn Sie 3 mal die Meldung: “ORA-06550: PACKAGE BODY, line 21, column 18: PL/SQL: ORA-00942: table or view does not exist” finden, so liegt die Ursache in dem fehlenden Zugriffsrecht auf Tabellen in dem Schema OLTP. c. Öffnen Sie über SQLPLUS das Schema OLTP und geben Sie den Zugriff auf die Tabellen frei. GRANT SELECT ANY TABLE TO PUBLIC; d. Wiederholen Sie dann die Überführung des Mappings in die Datenbank. 16/20 59. Es ist eine gute Praxis die Entwicklung eines Mappings in mehreren Zwischenversionen durchzuführen. Kopieren Sie daher das zuvor begonnene Mapping und entwickeln Sie es unter einem anderen Namen weiter. a. Bevor Sie mit der Weiterentwicklung beginnen, überführen Sie das kopierte Mapping in die Datenbank und testen Sie dieses, damit Sie von einem sicheren Stand aus weiterentwickeln können. b. Leiten Sie den Einzelpreis aus der Artikel-Tabelle ab c. Leiten Sie den Steuersatz über die ArtikelgruppenNummer ab (Artikelgruppennr 1 -> Steuersatz = 7, Artikelgruppennr 2 -> Steuersatz = 12, Artikelgruppennr 3 -> Steuersatz = 19) CASE feldname (oder Ausdruck) WHEN ’Wert_X’ THEN ’Returnvalue_X’ WHEN ’Wert_Y’ THEN ’Returnvalue_Y’ ELSE ’Kein Wert’ END d. Berechnen Sie die Gesamtsumme_Pos aus den Werten Menge und Einzelpreis als Multiplikation. 60. Überführen Sie die Zeitnummer aus der Zeit-Tabelle in die Tabelle F_UMSATZ. Nutzen Sie hierzu das Datum der Tabelle Bestellung. 17/20 Aufbau einer multidimensional verwendbaren Zeit-Dimension 61. Erstellen Sie eine Zeitdimension über den entsprechenden Wizzard. 62. Erstellen Sie das Binding zur Dimension. 63. Überführen Sie die Strukturen in die Datenbank. 64. Überführen Sie auch das entstandene Mapping in die Datenbank. 65. Betrachten Sie sich die entstandenen Daten über den Data Viewer. 66. Entstanden ist eine sehr umfangreiche Zeitdimension. Eine solche Dimension wird üblicherweise in einer MOLAPDatenbank bzw. in der Oracle OLAP-Option verwendet. Für unser Beispiel ist sie überdimensioniert. Es fehlt auch ein laufender Zähler für die einzelnen Tage, den man als kompakten Schlüssel in dem Starschema nutzen könnte. Aus dieser Dimension kann man jedoch eine angepasste Variante nach eigenem Geschmack ableiten. a. Um eine Dimension für ein Starschema zu erhalten nutzen Sie entweder die vorher entstandene Zeitdimension oder die Zeittabelle. 18/20 Aufbau einer Dimension über den Wizzard 67. Erstellen Sie eine Artikeldimension über den Wizzard. a. Orientieren Sie sich bei der Festlegung der Spalten an der bereits bestehenden Tabelle D_Artikel. b. Führen Sie das Binding durch und Deployen Sie alle Objekte in die Datenbank. Aufbau eines Star Schemas 68. In der Übung ist jetzt ein kleines Starschema entstanden. Informationen wie Zeit und Ort lagen bereits als Testdaten vor. a. Vervollständigen Sie die Definitionen und die Dateninhalte, um ein vollständiges Starschema zu erhalten. Metadatenauswertungen 69. Analysieren Sie alle Abhängigkeiten der Textdatein „Orte.csv“ 70. Betrachten Sie auch den umgekehrten Weg von der Tabelle D_Artikel aus startend. 71. Gelingt es Ihnen auch die Daten einzelner Spalten zu verfolgen? 19/20 Aufbau der Workflow/Prozess-Umgebung 72. Installieren Sie das Workflow-Schema in Ihrer Umgebung a. D:\ora\product\11.2.0\dbhome_1\owb\wf\install\wfinstall. bat b. 73. Definieren Sie sich für Ihre Übungen ein Workflow-Modul a. Registrieren Sie dazu das Workflow-Schema OWF_MGR für das OWB-Repository 74. Erstellen Sie sich zunächst einen einfachen Prozess, indem Sie z. B. das Mapping zur Erstellung der Artikel-Tabelle in den Prozess aufnehmen. 75. Deployen Sie das neu erstellte Prozess-Package. 76. Starten Sie den Prozess und und testen Sie das Ergebnis. 77. Monitoring: a. öffnen Sie den Metadaten-Browser, um den Lauf des Workflow-Prozesses zu kontrollieren. 78. Bauen Sie nach und nach alle relevanten Mappings in Ihren Prozess ein a. Achten Sie darauf, dass diejenigen Mappings, die unabhängig von einander sind, also deren Ergebisse nicht aufeinander aufbauen, parallel ablaufen. 20/20 MDL-Dateien 79. Erstellen Sie eine Sicherung aller Metadaten, die Sie im Verlauf des Übungsprojektes erstellt haben. 80. Nutzen Sie die erstelle Metadatendatei, um ein versehentlich gelöschtes Mapping wieder zurückzuholen. OMBPlus 81. Erstellen sie sich mit Hilfe eines OMB-Scriptes einen Listenartigen Bericht, mit allen Modulen, Tabellen und den dazu gehörenden Spalten. Sonstige Punkte / Themen Collection Debugger Update / Delete / Insert... Language Name - Andere Sparachen nutzen Zurückholen der ursprünglichen Positionionen von Fenstern etc. Debugger Target Loading Order