2016-02-17 5 views
0

Мое требование необходимо выполнить инкрементное обновление от myrds до красного смещения каждый день, У меня есть первичный ключ в таблице rds как 'id' Есть ли какой-либо возможный способ сохранить id в переменной в Talend и когда NXT время Talend задание выполняется это проверить SQLИнкрементальное обновление с использованием talend

где sorucerds идентификатор> destredsfhit идентификатор

testjob

поэтому он должен обновить только строки, которые были вставлены после последнего обновления Я пытался, но он не работает по желанию Я новичок в Talend поэтому если любое предложение было бы большим подспорьем для меня

С уважением

+0

Вы можете запросить Redshift для 'MAX (id)', а затем выбрать из RDS, где id больше, чем полученное значение. – vtuhtan

+0

Да, я сделал то же самое в другом запросе, который я опубликовал в http://stackoverflow.com/questions/35404230/talend-job-running-with-slow-transfer-rate Но теперь я хочу сохранить его в переменной, а затем использовать макс (ID), сохраненный с этой переменной –

ответ

0

Использование tMySqlInput CompoNet (или что вы используете для запроса с RDS) и написать следующий запрос:

"select MAX(id) as maxid from <your table name>" 

Нажмите на кнопку Guess Schema для создания схемы для вывода компонента. Поместите tJavaRow компонент рядом с ним и перетащите основную строку на него. Создайте пустую переменную в контекстном меню (в панели «Репозиторий»). Назовем это maxid. Вернитесь к tJavaRow CompoNet и написать следующий код:

context.maxid = row1.maxid 

Это присвоит maxid значения из tMySqlInput вывода переменного контекста. Что вы можете использовать в своей работе после этого.

+0

Really спасибо за помощь, но до сих пор ее не работает, Пожалуйста, обратите внимание на детали tmysqlrdsinput1 «выбрать макс (ID) из test.test2 " затем используется компонент tjavarow как context.maxid = row1.maxid; , а затем передал его во входной строки в tmysqlrdsinput2 в «Select * от test2 где идентификатор>„„+ context.maxid +““» , а затем сохранить результат запроса как tmysqloutput в stagingtable Работа выполняется без каких-либо ошибок, но она не выполняет никаких обновлений в промежуточной таблице может предложить, что может быть проблемой –

+0

Прошу прощения, первый запрос должен быть против базы данных Redshift. Вы должны выбрать максимальный идентификатор уже обработанных записей, дополнительно поместите NVL (MAX (id), 0), чтобы убедиться, что в Redshift нет записей, в вашем втором запросе можно выбрать все идентификаторы> 0. – vtuhtan

+0

Но мне нужно создать промежуточную таблицу в myrds, а затем добавить данные из промежуточной таблицы в redshift, Как даже когда моя исходная таблица увеличивается, а также увеличивается max (id) вместе с ней Есть ли какая-либо переменная или любая компонент, доступный в talend, который сохранит мой последний max (id), а затем я могу написать запрос для выбора и отобразить только строки, которые были вставлены после последнего сохраненного max (id) –