Неподключенное входное значение поиска не работает

В Informatica я пытаюсь получить дату после определенных рабочих дней (скажем, 10,20,30) на основе других условий (скажем, prio 1,2,3). У меня уже есть одна таблица DIM_DATE, где настроены праздники и рабочие дни. Нет никакой связи с таблицей приоритетов и таблицей DIM_DATE. Здесь я использую один несвязанный поиск с переопределением запроса. Ниже запроса, который я использовал:

select day_date as DAY_DATE
--,rank1
--,PRIORITY_name 
from (
select day_date as DAY_DATE,DENSE_RANK() OVER (ORDER BY day_date) as RANK1,PRIORITY_name as PRIORITY_NAME from (
select date_id,day_date from dim_date where day_date  between   to_date('10.15.2018','MM.DD.YYYY')   and  to_date('10.15.2018','MM.DD.YYYY') +interval '250' DAY(3) and working_day=1
)
,DIM_PRIORITY
where DIM_PRIORITY.PRIORITY_name='3'
) where  rank1=10
order by RANK1 --

В этом примере я жестко запрограммировал day_date,priority_name,rank1. Но мне нужно передать их все в качестве входных данных, поступающих от сопоставления.

Этот хардкод работает, но при вводе, например ?created?, он не работает. Здесь создана дата, которая будет исходить из потока картирования.

  1. Не могли бы вы предложить, возможно ли это, что я пытаюсь?

  2. ?created? выдает ошибку, в которой отсутствует правая скобка, но жестко закодированный запрос работает нормально в sql.


person Abhijit Gupta    schedule 12.11.2018    source источник
comment
Форматирование, выделение нужных частей   -  person Corion    schedule 12.11.2018
comment
Любое предложение плз   -  person Abhijit Gupta    schedule 13.11.2018


Ответы (1)


Вы сопоставляете свой входящий порт с одним из возвращаемых полей одной из записей в кеше с помощью условия поиска (не вводя порты в само переопределение).

Если это невозможно для вас по какой-то необъяснимой причине, вы можете определить 3 переменные отображения и установить их равными каждому из входных портов, о которых вы заботитесь (используя setvariable), прежде чем подавать запись в поиск. Затем используйте переменные в переопределении поиска

person Daniel Machet    schedule 13.11.2018
comment
Привет Даниил, спасибо за ответ. Я попытался использовать второй вариант, используя setvariable для 3 разных переменных сопоставления. Но, как и ожидалось, переменная сопоставления не меняется во время сеанса. Входные порты должны меняться для каждой строки в зависимости от входных исходных данных. Используя переменную сопоставления, он выбирает только значение первой строки, а затем не изменяется для второй входной строки. - person Abhijit Gupta; 22.11.2018
comment
Хм, честное замечание, единственный вариант, о котором я могу думать, - это удалить переопределение (если это означает создание представления в БД, пусть будет так), кэшировать все возможные возвращаемые значения в начале сеанса, а затем использовать входные порты в ваше условие поиска. Неважно, сколько записей вам придется кэшировать для этого - может быть лучше, чем запрашивать БД для каждой входной строки. - person Daniel Machet; 23.11.2018