我正在開發ETL。第一步是文本文件輸入,它將來自「附加輸出字段」的一些元數據添加到流中,包括文件名和上次修改。根據數據庫查詢的結果繼續流式傳輸
我必須向DB進行查詢,以驗證具有最後修改日期時間的文件名是否已經被處理。如果是這樣,流必須停止,並且下一步不能被處理。
這可能嗎?我用google搜索了一下,發現沒有例子。
我正在開發ETL。第一步是文本文件輸入,它將來自「附加輸出字段」的一些元數據添加到流中,包括文件名和上次修改。根據數據庫查詢的結果繼續流式傳輸
我必須向DB進行查詢,以驗證具有最後修改日期時間的文件名是否已經被處理。如果是這樣,流必須停止,並且下一步不能被處理。
這可能嗎?我用google搜索了一下,發現沒有例子。
Pentaho並行處理所有步驟,所以這種線性抽象可能有點混亂。
你需要做的是不返回行,如果不想繼續處理。如果後續步驟接收到0行,則它們不會執行任何操作。
有一些方法可以做到這一點:
你將很快面對的問題是:「如果我嘗試開始我的轉換已經開始?」。這聽起來像是一個學術問題,直到你的crontab開始僵局,或者你的用戶抱怨你三週前的數據被重複計算。
您需要檢查job
。與所有步驟並行運行的轉變相反,工作條目依次運行。您可以使用Scripting/SQL
條目並輸入條件,如this question中所述的logdate<now()-10minutes
。
現在,您的規範還有一個更強大的體系結構:將所有傳入文件放入特定文件夾,處理它們然後將它們移動到歸檔目錄。事實上,在處理之前將它們移動到存檔中,避免重複加載。