Ich habe eine komplexe Transformation, bei der eine Nachschlagephase eine von etwa 30 verschiedenen/spezifischen Zeichenfolgenoperationen angibt, die in einer Zeile ausgeführt werden müssen. Ich frage mich, wie man dies in DataStage effizient macht?IBM DataStage: Zeichenfolge als Code/Ausdruck auswerten
Die Forderung ist so etwas wie dieses:
If
col_a = 1
Then
col_b := some_string_function(col_c)
Else If
col_a = 2
Then
col_b := some_other_string_function(col_d)
Else If
col_a = 3
Then
col_b := yet_another_string_function(col_c & col_d)
Else If ...
... und so weiter.
Was ich bisher erforscht:
Mein erster Impuls den Code (Feldname (n) und String-Funktionen) als String/Feld in der Lookup-Tabelle enthalten war und verwenden Sie diesen Code nach der Suche in einem Transformatorstufe Ausdruck. Es scheint jedoch keine Möglichkeit zu geben, eine Zeichenfolge als Code in einem Transformer-Ausdruck zu bewerten. Eine andere Lösung, die ich gefunden habe, besteht darin, den Code in eine Menge verschachtelter Steueranweisungen innerhalb einer Transformatorstufe zu stecken, was schrecklich ineffizient erscheint, zumal DataStage keine Steueranweisung zu bieten scheint, die etwas wie "CASE" entspricht "/"SCHALTER". Oder tut es?
Das Ersetzen der Steueranweisungen durch eine Schaltstufe, die in verschiedene Nachschlage-/Transformer-Stufen eingespeist wird, scheint effizienter zu sein, da sie parallel ausgeführt werden könnten, aber ein Designschwieriger wäre.
Ich habe noch nicht in Server-Routinen versucht.