Как суммировать вставленные строки в компоненте tjavaflex при итерации между входами?
В Talend (открытая студия для интеграции данных) 7.0.1 (и более ранние версии). Я использую tJavaFlex, чтобы регистрировать, сколько строк было вставлено в базу данных.
Подробное задание Talend: 1. Разделите большой файл на несколько меньших. 2. Переберите файлы меньшего размера, вставьте их в базу данных. 3. Зарегистрируйте количество вставленных строк.
Часть регистрации ведет журнал каждой итерации, чтобы выглядеть так:
2019-01-31 09:39:20 |Stage_SalesInvoiceLine | Rows inserted 5000
2019-01-31 09:39:25 |Stage_SalesInvoiceLine | Rows inserted 5000
2019-01-31 09:39:32 |Stage_SalesInvoiceLine | Rows inserted 5000
Мне нужна помощь, чтобы понять, как сделать так, чтобы это выглядело так:
2019-01-31 09:39:32 |Stage_SalesInvoiceLine | Rows inserted 15000
Поведение tJavaFlex при изменении положения цикла Я пытался найти здесь ответ, но не смог решить мою проблему
Текущий код в основной части кода tJavaFlex (начальная и конечная части пусты)
Integer Inserted = ((Integer)globalMap.get("tJDBCOutput_6_NB_LINE"));
String InsertedS = "Rows inserted " + Integer.toString(Inserted);
row19.TimeStamp = TalendDate.getDate("yyyy-MM-dd HH:mm:ss ");
row19.LogRow = "Stage_SalesInvoiceLine | " + InsertedS;
1 ответ
Если вы используете локальные переменные в tJavaFlex, они будут сбрасываться на каждой итерации. Вместо этого вы можете определить глобальную переменную перед началом вашей подзадачи, увеличить ее внутри tJavaFlex и получить ее значение после того, как вы сделали все свои вставки.
tSetGlobalVar (NB_INSERTS set to 0)
|
OnSubjobOK
|
database inserts -- OnComponentOK -- tJavaFlex
|
tFixedFlowInput -- tFileOutputDelimited
В приведенном выше tJavaFlex вы можете увеличить свою переменную в основной части:
globalMap.put("NB_INSERTS", (Integer)globalMap.get("NB_INSERTS") + (Integer)globalMap.get("tJDBCOutput_1_NB_LINE_INSERTED"))
в tFixedFlowInput
: "Rows inserted " + (Integer)globalMap.get("NB_INSERTS")