2017-08-07 64 views
0

我有連續的傳感器數據每隔5分鐘以文件形式進入。我只想在過去一小時內選擇文件並執行所需的處理。 例如:talend作業在12:01 pm運行,它僅從11:00 am至12:00 pm選取所有文件。如何僅使用Talend處理文件過去一小時?

任何人都可以請建議我應該採取的方法,使這發生在talend內。有沒有內置的組件可以選擇前一小時的文件?

這是流程。 enter image description here

enter image description here

enter image description here

enter image description here

+0

這是一個糟糕的設計你想要做什麼。相反,你應該在你的工作開始時存儲,然後在下一次執行時從那裏選擇下限。只要想想如果你的工作在4小時內不能成功運行會發生什麼......你將失去數據,這是不可接受的。 –

+0

感謝您的建議@BalazsGunics。我正在努力實施相同的 –

回答

2

使用tFileProperties,您將在其中獲得名爲mstring_name的內置架構。通過此列,您將獲得最後修改時間文件,並在tJava或tJavaRow您可以使用talendDate功能

enter image description here

迭代中的所有文件請檢查是否近一小時制這次的謊言和tJavaRow寫這樣的代碼:

Date lastModifiedDate = TalendDate.parseDate("EEE MMM dd HH:mm:ss zzz yyyy", input_row.mtime_string); 

Date current_date = TalendDate.getCurrentDate(); 


if(TalendDate.diffDate(current_date, lastModifiedDate,"HH") <= 1) { 

output_row.abs_path = input_row.abs_path; 
} 

由此您將獲得過去一小時之間的所有文件。

希望這有助於..

這裏是一個完整的工作設計:

tFileList --->(迭代)----> tFileProperties ---->(ROW1主)--- - > tJavaRow ----> if ----> tFileInputDelimited ----> main -----> tMap ----> main -----> tFileOutput

您正在設置的上下文tJavaRow,如果條件爲空,檢查其可空性:

context.getProperty(「file」)!= null & &!context.g etProperty(「文件」)。的isEmpty()

在此之後使用上下文,你正在做的

+0

評論是不適合擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/151409/discussion-on-answer-by-preetyk-how-to-process-files-only-for-the-past-小時全光照)。 –

0

沒有內置組件,它會給你基於時間的文件。

但是,您可以通過使用tFileList - > tFileProperties來完成此操作。配置tFileList按最後修改日期排序,然後tFileProperties會給你修改日期。從那裏,您可以根據日期值進行過濾 - 如果超過一小時,則停止,否則進行處理。

相關問題