0

私たちはETLプロセスに取り組んでいます。このプロセスでは、ソース (Oracle) から ID を取得し、別のデータ ソース (MS SQL DB) にクエリを実行する必要があります。クエリは 2 セットのデータを取得する必要があります

  1. 顧客の詳細 - 1 対 1 のマッピングで、顧客のすべてのアカウントを取得します。
    1. 関係 ID による顧客アカウント - 同じ ID の複数のレコード

現在、ルックアップ コンポーネントを使用しており、その過程で顧客アカウントの最初の一致のみを取得しています。複数の一致するレコード、つまり一致するすべての顧客アカウントを取得するにはどうすればよいですか。両方のデータソースが異なるため、内部結合を実行できません。考えられるもう 1 つの選択肢は、ステージング テーブルを使用することでしたが、これは避けたかったのです。SSIS コンポーネントを使用して、同じ ID に対して複数の一致するレコードを取得する他の方法はありますか。

4

1 に答える 1

1

既に確認したように、ルックアップ コンポーネントは同期アイテムです。1行が流れ、1行だけ出てきます。データを検索して既存の行に追加しますが、新しい行をストリームに追加することはできません。

私が DB2 で作業していたことを除いて、あなたの立場になって、私はAsynchronous Scriptを使用することになりました。ReadOnly モードでコンポーネントに id を渡し、新しい出力と、タスクが生成するすべての列を定義します。はい、これは面倒です。

スクリプト内で、PreExecute でデータ ソースへの接続を確立し、データベースへのシングルトン クエリを起動して、関連するすべてのアカウントを取得しました。返されたデータで 2 つのことを行いました。AddRow メソッドを呼び出してフィールドに値を設定しました。これにより、データが下流に送信されます。また、特定の実行で同じ ID を複数回持つ可能性があるため、ローカル コピーもメモリに保存しました (金融商品 A を購入し、同じバッチで商品 B も購入した人)。これにより、データベースへの旅行を節約できます。データを理解し、これが役立つかどうかをよりよく理解できるようになります。

于 2013-07-19T12:13:19.033 に答える