私の現在のシナリオ:
batch への入力として 10000 レコードがあります。私の理解によると、バッチはレコードごとの処理専用です。したがって、バッチステップ内のデータウィーブコンポーネントを使用して各レコードを変換し(注:バッチコミットは使用していません)、各レコードをファイルに書き込みます。レコードごとの処理を行う理由は、特定のレコードに無効なデータがあり、その特定のレコードのみが失敗し、残りのレコードは正常に処理されると想定しています。
しかし、私が目にする多くのブログでは、 dataweave コンポーネントで(ストリーミングを使用した) バッチコミットを使用しています。したがって、私の理解では、すべてのレコードが dataweave に一発で渡され、1 つのレコードに無効なデータがある場合、10000 件すべてのレコードが (dataweave で) 失敗します。そうすると、レコードごとの処理のポイントが失われます。上記の仮定は正しいですか、それとも間違った方法で考えていますか??
これが、バッチ コミットを使用していない理由です。
今、私が言ったように、各レコードをファイルに送信しています。実際、各レコードを5 つの異なる CSV ファイルに送信する必要があります。そのため、現在、 BatchStep内でScatter-Gatherコンポーネントを使用して、5 つの異なるルートに送信しています。
として、画像をご覧いただけます。入力フェーズは、10000 レコードのコレクションを提供します。各レコードは Scatter-Gather を使用して 5 つのルートに送信されます。
私が使用しているアプローチは問題ありませんか、それともより良いデザインに従うことができますか??
また、 FAILEDRECORDS のみをキャプチャするために、2 番目のバッチ ステップを作成しました。しかし、現在の設計では、失敗したレコードをキャプチャすることはできません。