Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators

Ähnliche Dokumente
Kapitel 4 Dynamisches SQL

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Prozedurale Datenbank- Anwendungsprogrammierung

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

Entwicklungsumgebung für die Laborübung

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Übung PL/SQL Trigger Lösungen

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

QMF Tabelle Q.OBJECT_DATA in DB2

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.

SQL (Structured Query Language) Schemata Datentypen

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

Entwicklungsumgebung für die Laborübung

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Übungsblatt 8- Lösungsvorschlag

NoSQL mit Postgres 15. Juni 2015

Extracting Business Rules from PL/SQL-Code

Oracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Housekeeping -2

Housekeeping -2

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Oracle 10g Einführung

Arbeit mit zusammengesetzten Datentypen

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Laden von Data Marts auch mal komplex DOAG BI, 9. Juni 2016 Dani Schnider, Trivadis AG

Datenbanken 1 und Objektorientierte Datenbanken

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

ids-system GmbH Tipp #3 Leer-Strings in SQL oder die Frage nach CHAR oder VARCHAR

Vollständig generisches DWH für kleine und mittelständische Unternehmen

Objekt-relationales Datenbanksystem Oracle

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Probeklausur Datenbanktechnologie

Der SAS DataStep und die Prozedur SQL Cellent Finance Solutions GmbH Seite: 1

Kuriositäten in der Oracle-Datenbank

Lösung zu Aufgabe 6. Lösung:

5.8 Bibliotheken für PostgreSQL

Vergessene (?) SQL- und PL/SQL- Funktionen

Komplexe XML-Dokumente über XSU und Objekt-Typen aus der Datenbank generieren

Datenbanksysteme 2013

Christine Hansen, Fabrizio Fresco, Patrick Malcherek

OWB Referenzarchitektur, Releasemanagement und Deployment. Carsten Herbe metafinanz - Informationssysteme GmbH

Oracle Virtual Private Database

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems

Oracle native json Support. Erste Schritte

Zeitlich abhängig von OWB?

Strukturierte Objekttypen

cs241: Datenbanken mit Übungen HS 2011

Objektrelationale und erweiterbare Datenbanksysteme

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports

Datenversionierung in Business-Anwendungen

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 18. Dez Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 8

Objektrelationale, erweiterbare Datenbanken WS 04/05

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Implementierung erster Klasse - Code Qualität in PL/SQL

Prozedurale SQL-Erweiterungen

SQL Developer Unit Tests

Abfragen (Queries, Subqueries)

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS XMLType. Christian Senger/Andreas Schmidt XMLType 1/32

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Wiederholung VU Datenmodellierung

Eigene Funktionen innerhalb von pgsql

SQLdetective - Ein günstiges Tool unter die Lupe genommen

Einführung in PL/SQL

Regionaltreffen Rhein Main 26. März 2007

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Ausnahmebehandlung. Ausnahmebehandlung mit PL/SQL. Ausnahmetypen. Ausnahmebehandlung

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Trennen von Regeln und PL/SQL-Code

Fehlerbehandlung mittels DML Error Logging

Erfahrungsbericht mit Oracle Spatial

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

PL/pgSQL. VL Datenbanksysteme. Ingo Feinerer

Informationen protokollieren

Übersicht der wichtigsten MySQL-Befehle

Kobra, übernehmen Sie! Endbenutzer an den Schalthebeln von Apex Ingrid Hayek Universität Innsbruck Innsbruck, Österreich

Programmieren mit statistischer Software

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

XML in der Oracle Datenbank

XML-Datenaustausch in der Praxis Projekt TOMIS bei der ThyssenKrupp Stahl AG

Die Nutzung von Webservices in der Oracle Datenbank. 11 März 2010

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Advanced Queues und XML-DB Integration von Oracle in einer SOA mit Hilfe von asynchroner Kommunikation und XML-Verarbeitung

Transkript:

Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators München, 21. Nowember 2007 Nicola Marangoni & Jörg Westermayer Nicola.Marangoni@SHS-VIVEON.com Joerg.Westermayer@SHS-VIVEON.com

Inhalt 01 Einleitung - Typischer Ist-Stand - Lösungsvorschlag 02 Metadaten - Verwaltung - Abhängigkeiten 03 Code Generator - Templates und Parameter - Ersetzung der Parameter - Codegenerierung 04 Remote Deployement - Ausführung von DDLs über DB Links - Übertragung der DDLs 05 Table Functions 21. Nowember 2007 Seite 2

01 EINLEITUNG

Typischer Ist-Stand Häufige ETL Architektur - Extraktion, Aggregation zusammen mit der Berechnung der Merkmalen - Ableitung von komplexen Merkmalen hardkodiert im ETL - Aufbau von komplexen Regelwerken direkt im Code (PL/SQL) oder Mappings - Unstrukturierte Regelwerke (keine direkte Referenz zu Scorecards und Segmentierungen) - Monolitische Struktur Interaktion mit dem Business User - Der Business User ist komplett vom Programmierer Abhängig - Schwierige Übersetzung von Business Definitionen in Code - Wenig strukturierte Zusammenarbeit 21. Nowember 2007 Seite 4

Lösungsvorschlag Trennung von ETL und Berechnung - Klassischem ETL Extraktion Aggregation - Berechnung von komplexen Merkmalen Berechnung von KPIs Business Regeln Quelle 1 Quelle 2 Quelle 3 Extraktion Aggregation Quelle n Steuerung über Metadaten - Definition der Merkmalen - Definition der Abhängigkeiten Standard ETL Metadaten gesteuert Input Berechnung Output 21. Nowember 2007 Seite 5

02 METADATEN

Abhängigkeiten Komplexe Bäume - Parent-Child Beziehungen - Beliebig tiefe Verschachtelung - Überprüfung von Schleifen Input 1 Input 2 Input 3 Input 4 Output 1 Output 2 Output 3 Output 4 Output 5 Output 6 Output 7 Output 8 21. Nowember 2007 Seite 7

Verwaltung Applikation Graphische Applikation - Komplette Pflege über Masken Maske Maske Maske Business Orientiert - Verwendung von Business Begriffe Benutzerfreundlich - Einfache und intuitive Navigation Metadaten 21. Nowember 2007 Seite 8

03 CODE GENERATOR

Codegenerierung Architektur - Die Parameter nehmen Werte, die aus den Metadaten stammen Metadaten Generierte DDLs Code Generator CREATE OR REPLACE PACKAGE pkg_load CREATE OR REPLACE VIEW v_input_vars AS SELECT Code Code Code ; Templates <p_param_1> <p_param_2> <p_param_n> <p_param_1> <p_param_2> <p_param_n> Code Code Code END pkg_load; 21. Nowember 2007 Seite 10

Templates View Enthalten in PL/SQL Variablen - Generische DDLs - Code Teile c_tmpl_generic_view := CREATE OR REPLACE VIEW <p_view_name> AS SELECT <p_column_list> FROM <p_source_name>; ; Loop c_tmpl_var_loop := FOR rec_vars IN ( SELECT FROM ) LOOP <p_init_stmt> Prozedur c_tmpl_generic_proc := PROCEDURE <p_procedure_name> IS <p_variable_declarations> BEGIN -- Insert statement INSERT INTO <p_target> SELECT <p_column_list> FROM <p_source>; EXCEPTION WHEN OTHERS THEN <p_exception code> END <p_procedure_name>; ; <p_var_name> := <p_var_expression>; <p_log_stmt> END LOOP; ; 21. Nowember 2007 Seite 11

Ersetzung der Parameter Ersetzung der Parameter - Reine Textverarbeitung - Parameter werden durch Code Teile ersetzt - Parameter werden durch Objektnamen ersetzt c_tmpl_generic_view := CREATE OR REPLACE VIEW <p_view_name> AS SELECT <p_column_list> FROM <p_source_name>; ; v_view_name := V_REVENUE_TOT ; v_column_list := SUM (revenue) AS revenue_tot ; v_source_name := T_REVENUE_DETAIL ; CREATE OR REPLACE VIEW V_REVENUE_TOT AS SELECT SUM (revenue) AS revenue_tot FROM T_REVENUE_DETAIL; 21. Nowember 2007 Seite 12

Ersetzung der Parameter Komplexe Verschachtelung von Templates und Codebestandteilen Generierender Code Templates -- Prepare variables for loop code v_procedure_core := c_loop_month;. v_insert_stmt := INSERT INTO T_REVENUE_TOT (revenue) VALUES (v_revenue) ; -- Build loop coode code_replace(v_procedure_core, p_insert_stmt,v_insert_stmt); -- Prepare variables for main procedure v_procedure := c_templ_generic_proc; -- Prepare variables for main procedure v_procedure_name := PRC_EXTRACT ; v_variable_declarations := v_buffer INTEGER; v_rev INTEGER; ; v_exception code := log( Error! ); ; -- Set main procedure properties code_replace(v_procedure, p_procedure_name,v_procedure_name); code_replace(v_procedure, p_variable_declarations,v_variable_declarations); code_replace(v_procedure, p_exception code,v_exception code); -- Add loop to procedure code_replace(v_procedure, p_procedure_core,v_procedure_core); c_loop_month := FOR rec_months IN ( SELECT fiscal_month FROM t_calendar ) LOOP SELECT SUM (revenue) INTO v_revenue FROM T_REVENUE WHERE fiscal_month = rec_months.fiscal_month; v_buffer := v_buffer + v_revenue; <p_insert_stmt>; END LOOP; ; c_tmpl_generic_proc := PROCEDURE <p_procedure_name> IS <p_variable_declarations> BEGIN -- Loop <p_procedure_core> EXCEPTION WHEN OTHERS THEN <p_exception code> END <p_procedure_name>; ; 21. Nowember 2007 Seite 13

Ersetzung der Parameter Beispiel: Ergebnis - Durch den Ersatz der Parameter mit Codebestandteile und Objektamen ist der DDL Code komplett PROCEDURE PRC_STORE_SUMS IS v_buffer INTEGER; v_revenue INTEGER BEGIN -- Procedure core FOR rec_month IN ( SELECT fiscal_month FROM t_calendar ) LOOP SELECT SUM (revenue) INTO v_revenue FROM T_REVENUE WHERE fiscal_month = rec_month.fiscal_month; v_buffer := v_buffer + v_revenue; INSERT INTO T_REVENUE_TOT (revenue) VALUES (v_buffer); END LOOP; EXCEPTION WHEN OTHERS THEN log( Error! ); END PRC_STORE_SUMS; 21. Nowember 2007 Seite 14

04 REMOTE DEPLOYEMENT

Ausführung von DDLs über DB Links Trennung von Generator und Objekte - Generierte Objekte unabhängig vom Framework - Die Target Datenbank kann auch ncht mehr erreichbar sein Framework Code Generato r Target Database DDL Reposito ry Objekte In ETL Out 21. Nowember 2007 Seite 16

Übertragung der DDLs - Die DDLs werden als CLOBs generiert - CLOBs können nicht über DB-Links übertragen werden. - Einteilung in kleinere Codeteile - maximale Größe eines VARCHAR2-Feldes - In der Target-Datenbank in einer Tabelle abgelegt - Zusammenfassung und Ausführung der DDLs. Framework Target Database Token 1 Token 1 CLOB DDL CLOB DDL Token n Token n DDL Repository 21. Nowember 2007 Seite 17

04 TABLE FUNCTIONS

Berechnung von komplexen Ausdrücken Das Input ist der Argument der Funktion Loop für jede Zeile Output Dataset als Return Wert Table Function Input Argument Return Output Loop for each record 21. Nowember 2007 Seite 19

HERZLICHEN DANK FÜR EURE AUFMERKSAMKEIT!!! Nicola Marangoni & Jörg Westermayer Nicola.Marangoni@SHS-VIVEON.com Joerg.Westermayer@SHS-VIVEON.com