суббота, 21 июля 2012 г.

5+1.

Как обещал, возвращаюсь к вопросу по новой функциональности ODI версии 11.1.1.6 под названием - отслеживание значений переменных во время выполнения сессии.

Для демонстрации того, как это работает, у меня как раз есть специально не для этого приготовленный пакет. Вот как выглядит его диаграмма:


Предназначен пакет для добавления некоторого количества строк в определенные таблицы, с повторением этого добавления определенное количество раз. Проще говоря, это цикл. Рассмотрим, что в пакете происходит пошагово:
  1. Вызов процедуры удаления того, что мы собираемся добавить. Обычно, является правильным подходом удалить то, что вы добавляете.
  2. Установка значения переменной v_Loop_Counter в 1. Переменная без сохранения истории (No History) типа Numeric, чтобы можно было использовать команду инкремента.
  3. Вызов процедуры, которая добавляет необходимое количество строк в нужные таблицы. Процедура делает добавление строк только в одну таблицу, но, в принципе, добавить в процедуру необходимое количество шагов для работы с другими таблицами очень просто.
  4. Далее идет команда Evaluate Varibale, которая сравнивает значение переменной v_Loop_Counter с константой. Цикл такого типа называется циклом с постусловием, так что если условие не выполняется, выполнение пакета заканчивается, но шаг 3 будет выполнен один раз в любом случае. Если же условие выполняется, выполняется следующая команда пакета.
  5. Увеличивается значение переменной v_Loop_Counter на единицу и выполнение передается на шаг 3.

Теперь можно рассмотреть, как выглядит сессия выполнения данного пакета при логгировании на уровне 6:


С точки зрения значения переменной меня будут интересовать шаги до начала тела цикла, а также те значения, которые переменная принимает в цикле.
Для того, чтобы увидеть значения переменной, необходимо открыть, двойным щелчком мыши, соответствующие шаги выполнения сессии и посмотреть в раздел "Variable and Sequence Values"


Шаг 1. Напомню, переменная без сохранения истории, соответственно, ее значение в момент выполнения шага номер 1 равняется нулю:


Шаг 2. Команда установки значения переменной. Отображаемое значение переменной равно 1:


Исходя из данного скришота, получается что ODI сохраняет значение переменной на момент завершения шага.

Шаги 3-4. Значение переменной не изменяется и остается равным единице.

Шаг 5. Значение переменной становится, после выполнения команды Increment, равным 2.


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

Комментариев нет:

Отправить комментарий