Вариант 1: ODI 12 c включает эту концепцию из коробки. На физической вкладке сопоставления нажмите на исходный узел (хранилище данных). Затем на панели свойств есть опция CUSTOM_TEMPLATE в меню «Параметры извлечения». Это позволяет вводить пользовательский оператор SQL, который будет использоваться вместо кода, сгенерированного ODI.
Однако он, вероятно, менее удобен во времени, чем вариант 2. SQL менее нагляден, чем компоненты отображения. Также, если вам нужно массово изменить его, это будет сложнее. Изменение компонента в нескольких сопоставлениях может быть сделано с помощью SDK. Изменение кода SQL потребует его анализа. У вас действительно может быть меньше информации в журналах вашего оператора, так как SQL будет рассматриваться только как один блок кода. Это также не обеспечит никакого происхождения.
Я полагаю, что использование управления потоком будет работать, но я не проверял его.
Вариант 2 занял бы больше времени, но с этим вы выиграете из всех функциональных возможностей ODI.
Я бы предпочел иногда использовать опцию 1 для действительно сложных SQL запросов, но использовать опцию 2 для большинства обычных случаев использования.