Einsatz eines Parameter Set mit dynamisch generiertem Inhalt

Schrittweise Umsetzung anhand einer Beispiel-Anforderung.

Verfasst von: Yohanes Korbafo, IT-Consultant

In einem DataStage Entwicklungsprojekt sei beispielhaft folgende Anforderung gegeben: Eine Liste von 10 Jobparametern soll einheitlich in mehreren Parallel Jobs verwendet werden. Die Parameterwerte sind aber abhängig von einer anderen Variablen, z.B. von einem bestimmten Stichtag bzw. Gültigkeitsdatum (#BUSINESS_DATE#), und sie ändern sich dynamisch von Lauf zu Lauf. 

Im Folgenden wird beschrieben wie sich die Werte (Values) eines Parameter Set „von außen“ unter Verwendung von DataStage dynamisch/flexibel vorgeben bzw. ändern lassen. 

Parameter Sets bündeln 1 bis n Jobparameter mit den dazugehörigen Values in einem Objekt. Dadurch können die Jobparameter ganz bequem als Sammlung in einem Job hinzugefügt werden und müssen nicht umständlich einzeln hinterlegt werden. Außerdem können sie so – im Rahmen des Deployment-Prozesses – als Set exportiert und importiert werden.

Dabei kann ein Parameter Set mit einer oder mehreren Value-Dateien (zwecks Wertzuweisung) verknüpft werden, welches die Flexibilität zusätzlich erhöht.

Zur Umsetzung unserer Beispiel-Anforderung gehen wir nun schrittweise vor.

1. Parameter Set erstellen und Value-Datei definieren

In der Registerkarte „Parameters“ des Parameter Set werden einzelne Parameter so definiert, wie sie auch in den Jobs individuell angelegt werden würden. D.h. man gibt hier den Namen, die Beschreibung für die Eingabeaufforderung, den Datentyp und optional einen Standardwert für den jeweiligen Parameter an. In unserem Beispiel heißt das Parameter Set „MeineParameter“ mit den Parametern „JN_Param_01 – 10“ – jeweils vom Datentyp String. Standardwerte (Default Values) werden nicht vorgesehen, da die Wertzuweisung (ja eben) über eine Value-Datei erfolgen soll.

Dynamische Parameter 1

Parameter im Parameter Set definieren

In der Registerkarte „Values“ wird nun ein Dateiname für die hier angezeigten Parameterwerte angegeben (hier: „MeineValue“). Die Values sind an dieser Stelle allesamt noch leer. 

Dynamische Parameter 2

Value File ohne Wert-Zuweisungen definieren

2. Value-Datei mit aktuellen Werten versorgen

Standardmäßig legt DataStage die Value-Dateien im jeweiligen Projektverzeichnis ab. In unserem Beispiel lautet der Projektname „Meine_Project“.

Dynamische Parameter 3

Value-Datei Speicherort (links) und Inhalt (rechts)

Es muss nun dafür gesorgt werden, dass die Value-Datei mit den entsprechenden Werten für die 10 Parameter beladen wird. Die Dateistrukturen wie hier oben in der Abbildung zu sehen müssen dabei natürlich erhalten bleiben.

Dafür bietet sich die Entwicklung eins Parallel Job an. Dieser Job (hier: „JB_SetParamValue“) dann zukünftig regelmäßig im Sequence Job mit, um die nachfolgenden Jobs mit den aktuellen Parameterwerten zu versorgen. 

„JB_SetParamValue“ besteht in unserem Beispiel aus drei Schritten.

Dynamische Parameter 4

Job „JB_SetParamValue“

a. SQL-Abfrage im DB2-Connector

In unserem Beispiel sind die Parameterwerte das Ergebnis einer Datenbankabfrage auf eine Steuertabelle und sind abhängig u.a. vom Jobparameter #BUSINESS_DATE#. Das SQL gibt eine Zeile aus – bestehend aus 10 Spalten entsprechend der Anzahl der Parameter.

				
					-- Input Data for Parameter Set
select
    max(decode(SCHLUESSEL,'PARAM_01',WERT)) as JN_Param_01,
    max(decode(SCHLUESSEL,'PARAM_02',WERT)) as JN_Param_02,
    max(decode(SCHLUESSEL,'PARAM_03',WERT)) as JN_Param_03,
    max(decode(SCHLUESSEL,'PARAM_04',WERT)) as JN_Param_04,
    max(decode(SCHLUESSEL,'PARAM_05',WERT)) as JN_Param_05,
    max(decode(SCHLUESSEL,'PARAM_06',WERT)) as JN_Param_06,
    max(decode(SCHLUESSEL,'PARAM_07',WERT)) as JN_Param_07,
    max(decode(SCHLUESSEL,'PARAM_08',WERT)) as JN_Param_08,
    max(decode(SCHLUESSEL,'PARAM_09',WERT)) as JN_Param_09,
    max(decode(SCHLUESSEL,'PARAM_10',WERT)) as JN_Param_10
from(
    select SCHLUESSEL, case when WERT = 'J' then 1 else 0 end as WERT
    from ADMIN.ADMIN_STEUERUNG
    where 1=1
       and STEUER_TAB = 'YOHANES_BEISPIEL'
       and GUELTIG_AB <= '#BUSINESS_DATE#'
)
with ur;

				
			
Dynamische Parameter 5

Ergebnis der SQL-Abfrage

b. Parameterwert final ableiten in Transformer Stage

Im Transformer werden die Parameterwerte final abgeleitet. Umfang und Komplexität variieren natürlich je nach Anforderung, so dass „Kreativität“ gefragt sein könnte. 

In diesem Beispiel genügt ein einfaches If-Then-Else Konstrukt.

				
					If Input.JN_Param_XX = 1
        Then 'JN_Param_XX=J'
      Else 'JN_Param_XX=N'

				
			

c. Value-Datei erstellen

Im Letzten Schritt wird die Value-Datei per Sequential File Stage erzeugt. Alle dafür wesentlichen Einstellungen sind den Screenshots zu entnehmen.

Dynamische Parameter 6

Sequential File Stage (Propteries-Tab)

Besonders hinzuweisen ist hier auf die Format-Einstellung „Field defaults > Delimiter = \n“. Der Zeilenumbruch bewirkt, dass in der Ausgabedatei die Spaltennamen untereinander stehen so wie es das Parameter Set erfordert.

Dynamische Parameter 7

Sequential File Stage (Format-Tab)

Startet man nun den Job „JB_SetParamValue“ , wird die Value-Datei „MeineValue“ mit den entsprechenden Werten für die 10 Parameter erzeugt. Das Ergebnis kann man sich z.B. im Parameter Set anschauen.

Dynamische Parameter 8

Parmeter Set „MeineParameter“ (Values-Tab)

3. Value-Datei verwenden

Die Value-Datei wird in der betreffenden Job Activity einfach als Value Expression für das Parameter Set hinterlegt.

Dynamische Parameter 9

Auswählen von “MeineValue” für das Parameter Set

Fazit

DataStage bietet mit dem Zusammenspiel von Parameter Set und Value-Datei eine besonders flexible Möglichkeit, um dynamisch mit Parametern in Jobs zu arbeiten. Insbesondere dann, wenn sich die Parameterwerte von Lauf zu Lauf ändern können und somit die Anforderung besteht, die Value-Datei „von außen“ immer wieder neu bestücken zu müssen.

Finden Sie diesen Beitrag gut? Teilen Sie ihn gerne:

Möchten Sie über neue Magazin-Beiträge informiert werden?

Folgen Sie uns

Scroll to Top