Простой цикл в datastage

У меня есть основная проблема понимания с datastage. Я новичок в этой области. Речь идет о реализации циклов. Сначала я получаю несколько строк запроса на выборку, используя этап соединителя. Теперь я хотел бы сделать еще несколько шагов для каждой строки. Результат каждой строки теперь следует использовать в качестве переменной на следующих этапах. Как я могу это сделать? Я знаю возможность петли на этапе трансформатора, но, похоже, не решает мою проблему.

Должен ли я работать со стадией петли в последовательности прыжков? Если да, то как?

эта проблема:

foreach($selectQueryResults as row) {
// do something with the row-value
}

Спасибо!


person binf    schedule 17.02.2017    source источник
comment
Эй, чувак, похоже, ты пытаешься заполнить параметры из исходного оператора SQL. Вы смотрели на создание запроса в подпрограмме, а затем на передачу ответов (возможно, с использованием пар ключ-значение) и настройку параметров таким образом? Для новичка это довольно сложная задача, поскольку она включает в себя понимание базового кода BASIC и функций DataStage для обновления параметров.   -  person Dan Griffiths    schedule 08.03.2017
comment
Здравствуйте, спасибо за подсказку. Но не могли бы вы показать мне простой пример?   -  person binf    schedule 09.03.2017


Ответы (1)


Должен признаться, у меня больше нет доступа ни к DataStage, ни к коду, который у меня когда-то был.

Это для распространения переменных этапа на уровне работы.

Однако рутинная деятельность для выполнения вашей задачи будет следующей.

  1. Распространить SQL как переменную
  2. Используйте DSExecute для выполнения функции командной строки (для вызова SQLPlus, nzsql или любой другой вашей командной строки) и передачи через переменную SQL.
  3. Вернуть результаты в другую переменную
  4. С помощью этой переменной вы можете разделить содержимое сначала по строке, а затем по разделителю, используя оператор цикла / for.
  5. Используйте DSSetParam для сопоставления пар ключ-значение с вашими параметрами конкретного задания с помощью функции DSAttachJob или просто распространяйте их как выходные данные рутинной операции.

Справочник по языку BASIC

DSSetParam

Помните, что обработка ошибок и комментарии важны в подпрограммах BASIC, в противном случае

Впоследствии это предназначено для распространения переменных этапа внутри преобразователя и является очень мощным инструментом после освоения.

Вот документация и примеры для определения переменных этапа в модели Transformer и агрегирования выходных данных. Обратите внимание, порядок переменных этапа чрезвычайно важен.

Петли преобразования

В преобразователе вы можете определить входящие столбцы как переменные этапа, использовать эти переменные этапа для агрегирования, конкатенации (строк), разделения, вычитания... в основном вы можете сделать нелепое количество, как только вы поймете это.

Я бы посоветовал сначала просмотреть примеры трансформеров, так как подозреваю, что это может быть то, что вы ищете.

Помните, что это не обязательно должно быть выполнено за один этап Трансформатора, вы можете выполнить первоначальную очистку на первом трансформаторе, а затем выполнить сложный цикл на втором, разбивая шаги на то, что вам подходит.

person Dan Griffiths    schedule 10.03.2017