Как получить несколько значений из условия Like в Lookup SQL Override, используя входной порт?

В моем сценарии мне нужно найти 3 таблицы. Ниже приводится выдержка из таблицы поиска. В одном из них примерно 6 миллионов строк, в двух других — по 500 строк в каждом, и они находятся на отдельных связанных серверах.

LOOKUP_TABLE Invoice_number Дата счета 123 05.05.2013 123A 05.05.2014 123B 05.05.2015

У меня есть номера счетов и даты, поступающие из исходного файла. Например: Исходная строка: - src_invoice: 123 Дата счета-фактуры: 05.05.2015 Мне нужны все строки с номером счета-фактуры, например «123_»

Таким образом, мой запрос переопределения LOOKUP SQL будет выбран * из LOOKUP_TABLE, где invoice_number как src_invoice+'_' ;

Но это дает мне ошибку, так как input_port не может быть заменен в переопределении sql.

Теперь я не хочу использовать некешированный поиск, так как мне нужно искать 3 таких lookup_tables, имеющих 6 миллионов, 500 и 500 строк каждая и на отдельных связанных серверах. Обращение к связанным серверам для поиска каждого исходного номера счета-фактуры трижды заняло бы много времени.

Причина, по которой мне нужно несколько строк, заключается в том, что мне нужны две вещи из таблиц поиска. 1.) Проверьте, является ли src_date = Lookup_table.Invoice_Date, затем пометьте как дубликат 2.) Если src_date != Lookup_table.Invoice_Date, добавьте алфавит к max(invoice_number). Таким образом, новый src_invoice будет 123C.

Любые советы приветствуются. Если вы считаете, что мой подход к этой проблеме неверен, пожалуйста, предоставьте альтернативное решение, которое не требует использования переопределения SQL поиска.

Спасибо


person VerVe    schedule 26.05.2016    source источник


Ответы (1)


Прежде всего: с 6M строками было бы лучше использовать Joiner Transformation вместо Lookup. И тщательно выберите узел Master на Столяре.

Далее: SQL Override здесь выполняется для создания кеша. Вы не можете создать кеш для одного счета и попытаться прочитать его для всех. Это было бы полезно только для uncached lookup, которые вы не хотите (и не должны) использовать в этом сценарии. Фактически, в этом сценарии вам вообще не нужна переопределение SQL.

Кстати: _ в SQL будет соответствовать ровно одному символу. Если вам нужно что-то, что начинается с «123» и может иметь более 4 символов, используйте вместо этого %.

person Maciejg    schedule 30.05.2016