Affiliate

28. Juni 2012

Dynamischer OWB


Oft sind es kleine, ehr alltägliche Aufgaben, für die man beim OWB dann die Lösung sucht. Irgendwie hat man das meistens schon einmal gemacht, aber nun kommt man gerade nicht mehr drauf. Wie ging das noch mal?
Oft sind die Antworten auch mit Google nicht einfach zu finden, liegen diese dann doch oft stückweise über diverse Blogs und Foreneinträge verteilt vor. Meistens findet man dann seine Antwort, aber das Suchen dauert halt. Deshalb notiere ich für mich selbst hier solche 'Alltäglichkeiten', als persönliche Notiz. Wenn ich damit anderen helfen kann, bitte bedient Euch. Feedback willkommen.

Dynamische Quelltabellen

Das hier beschriebene Vorgehen funktioniert nur, wenn alle betroffenen Quelltabellen die gleiche Datenstruktur haben! Nachteil dabei, dass Mapping kann nicht mehr parallel mehrfach aufgerufen werden!
Wie also nun machen?


Dem Mapping wird ein Parameter (P_ART) übergeben. Dieser Parameter enthält z.B. den Namen oder Namensteile der gewünschten Quelltabelle. Über den PRE-MAPPING-PROCESS wird der Wert dieses Parameters einer Funktion (F_RENAME_SYNONYM) übergeben. 
Diese Funktion erstellt bzw. ersetzt in einem Synonym (X_ AUFGABEN) den Verweis auf die gewünschte Quelltabelle. 
Das Synonym wurde als Metainformation in den OWB importiert und bei der Erstellung des Mappings als Quelltabelle verwendet. 
Zur Laufzeit des Mappings werden die Daten nun aus der jeweiligen Tabelle gelesen, auf das das Synonym zu der Zeit aktuell verweist. So kann dynamisch für jeden Lauf die Quelltabelle gewechselt werden.

Quellen hierzu:
OWB – Reuse Mapping for Different Data Sources
Thread: Dynamically passing the source table name to OWB mapping

Dynamischer Filter

Wird immer mal wieder benötigt, ein Filter für z.B. Aufgaben soll entsprechend eines Parameters (P_ART) sich dynamisch anpassen und so unterschiedlich filtern. 
Dazu wird im FILTER-Expression die Bedingung entsprechend angepasst. Hier geschieht das z.B. durch ein CASE Statement, in dem je nach Art (P_ART) unterschiedlich die Daten dann ausgefiltert werden. 


Weitere Filterbestandteile sind hier eine Eingrenzung auf den Zeitraum ab 2009, auf ein Land und auf ein FA. Die letzteren beiden wurden ebenfalls per Parameter dem Mapping übergeben.
Der gesamte Filter-Ausdruck wird im Joiner des Mappings dann der WHERE-Bedingung hinzugefügt. 
Zur Laufzeit werden die Daten nun dynamisch, je nach Parameterwert, ausgefiltert.

Quelle hierzu:
case expressions and statements in oracle 9i

Dynamische Dateinamen für Exportdateien

Der OWB ist ja in der Lage als Ziel auch eine Datei zu schreiben. Möchte man nun den Dateinamen nicht fest in der CONFIGURATION des Mappings eintragen, sondern dynamisch bilden - aber wie.
Auch hier wird dem Mapping ein Parameter (P_ART) übergeben. Dieser Parameter soll nun auch den Namen der Exportdatei in Teilen mitbestimmen. Da alle Exportdateien in das gleiche Verzeichnis geschrieben werden, reicht es hier die Dateinamen bei jedem Ladelauf anzupassen. 



Dazu wird in der CONFIGURATION des Mappings bei den FlatFile Einstellungen der Eintrag `||P_ART||‘ vor dem allgemeinen Teil des Dateinamens eingetragen. 
Zur Laufzeit wird dieser Parameter dann durch seinen Wert ersetzt und bildet so den entsprechenden Dateinamen, ganz einfach also (sic!)

Quelle hierzu:
Thread: Export Data from Database Table into CSV File with OWB Mapping
Thread: OWB: Flat File Name - Can you use an input parameter

Alle Teile wurden mit dem OWB Version 11.2.0.3 erstellt.
Kommentar veröffentlichen

Anzeige