DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Один сценарий для ежедневного и выборочного расчета.

В моей практике ODI используется для ежедневной загрузки и преобразования данных в Хранилище Данных. Обычно такое преобразование имеет одним из параметров дату загрузки.
Например, каждый день могут расчитываться ежедневные отчеты, соответственно, в сценариях загрузки таблиц отчетов должен присутствовать параметр даты. Если загрузка происходит в штатном режиме, в ETL пакете используется некая переменная, назовем ее #Loading_Date, которая обновляется (refresh) из параметров текущей загрузки (из некоторой таблицы в БД) и на эту дату производится расчет.
Если есть необходимость пересчитать отчет за произвольную дату, можно поступить двумя путями.
1. Сделать модификацию пакета, в которой либо задать вручную дату для переменной #Loading_Date, либо сделать эту переменную декларацией (declare) и задавать ее значение при запуске сценария.
2. Поддерживать две версии пакета, один с обновлением переменной, второй - с декларацией переменной для ручного пересчета.
Оба метода не очень удобны.
Для того, чтобы делать универсальные сценарии, пригодные и при использовании в автоматическом ежедневном расчете, и для пересчетов прошлых периодов, можно использовать следующий подход:
1. В пакете объявляется (declare) нужная переменная.
2. Проверка значения переменной(evaluate). При этом сравнение идет с отсутствием значения в поле Value
3. Шаг true - ведет к обновлению переменной (refresh), а затем к вызову расчета.
4. Шаг false - ведет к вызову расчета сразу.
К сожалению, данный подход не работает в версии ODI 10.1.3.4.8, так как на шаге 2 возникает ошибка. В более старших версиях такой подход вполне работоспособен.







jAntivirus