J'ai une transformation complexe où une étape de recherche spécifie l'une des 30 opérations de chaîne différentes/spécifiques qui doivent être effectuées sur une ligne. Je me demande comment le faire efficacement dans DataStage?IBM DataStage: évaluation d'une chaîne en tant que code/expression
L'exigence est quelque chose comme ceci:
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 ...
... et ainsi de suite.
Ce que j'ai exploré jusqu'à présent:
Ma première impulsion était d'inclure le code (nom du champ (s) et de chaîne) en tant que chaîne/champ dans la table de consultation et utiliser ce code après la recherche dans un expression de l'étage du transformateur. Cependant, il ne semble y avoir aucun moyen d'évaluer une chaîne comme code dans une expression de transformateur? Une autre solution que j'ai trouvée est de mettre le code dans beaucoup d'instructions de contrôle imbriquées à l'intérieur d'une étape de transformation, ce qui semble terriblement inefficace, surtout que DataStage ne semble pas offrir une instruction de contrôle équivalente à "CASE "/"COMMUTATEUR". Ou est-ce? Substituer (une partie de) les énoncés de contrôle avec une étape de transition alimentant différents stades de recherche/transfomtrie semblerait plus efficace puisqu'ils pourraient être faits en parallèle mais seraient difficiles à concevoir.
Je n'ai pas encore essayé les routines de serveur.