пятница, 3 сентября 2010 г.

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

В моей практике 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 возникает ошибка. В более старших версиях такой подход вполне работоспособен.

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

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