2017-08-28 1 views
0

私はETLを開発しています。最初のステップはテキストファイル入力で、ファイル名や最終更新日を含む "追加出力フィールド"のメタデータをストリームに追加します。DBクエリの結果に基づいてストリームを続行します

私はその最後の変更日時とそのファイル名がすでに処理されたかどうかの検査DBへのクエリを作成する必要があります。その場合は、ストリームを停止して次の手順を処理しないでください。

これは可能ですか?私はそれについてgoogledし、例を見つけませんでした。

答えて

0

Pentahoのは、並列のすべてのステップを処理するので、線形抽象化のこの種は、少し混乱することができます。

処理を続行しない場合は、行を返さないでください。後続のステップが0行を受け取る場合、何も実行しません。

はこれを行うにはいくつかの方法があります。

  1. は、Switchステップを使用してください+空の検出に同じ名前のファイルがない場合はそれだけで行を返すような方法であなたのSQLクエリを構築しますストリーム+フィルタ行を使用して、クエリの結果がない場合にのみ行が次の手順に進みます。
0

すぐに直面する問題は次のとおりです。すでに実行されています?"。これは、あなたのcrontabがデッドロックを開始するまで、またはユーザーがあなたについて3週間前のデータを二重に訴えるまで、学問的質問のように聞こえます。

jobでこれをチェックする必要があります。すべてのステップを並行して実行する変換とは異なり、ジョブエントリは順番に実行されます。 Scripting/SQLエントリを使用してlogdate<now()-10minutesのような条件を入れてください(this questionで説明されています)。今

、そこにあなたの仕様のため、より堅牢なアーキテクチャ:特定のフォルダ内のすべての受信ファイルを入れて、それらを処理、アーカイブディレクトリに移動します。事実、処理の直前にアーカイブ内に移動し、重複した負荷から保護します。

関連する問題