0

FactTableにディメンションテーブルへの12回のルックアップを入力してSKを取得しました。そのうち、6回は異なるDimテーブルへのルックアップで、残りの6回は同じ自然キーへのルックアップを行う同じDimTable(タイプII)へのルックアップです。

元:

PrimeObjectID=>DimObject.ObjectIDへのルックアップ=>ObjectSKを取得

同じことをする他の列を取得しました

OtherObjectID1=>DimObject.ObjectIDへのルックアップ=>ObjectSKを取得

OtherObjectID2=>DimObject.ObjectIDへのルックアップ=>ObjectSKを取得

OtherObjectID3=>DimObject.ObjectIDへのルックアップ=>ObjectSKを取得

OtherObjectID4=>DimObject.ObjectIDへのルックアップ=>ObjectSKを取得

OtherObjectID5=>DimObject.ObjectIDへのルックアップ=>ObjectSKを取得

このような複数のルックアップの場合、SSISパッケージでどのように処理する必要がありますか。

今のところ、lookup /unionallforeachルックアップを使用しています。これにもっと良い方法はありますか?

4

2 に答える 2

1

私はあなたがしているのはルックアップであると仮定します。エラーは派生列にリダイレクトされ、失敗したルックアップのデフォルト値を設定し、その後にルックアップ/派生列の値ごとにすべての和集合が続きます。このパターンはかなり一般的であり、デバッグを支援するために初期段階で使用します。ただし、SSISではユニオンオールは部分的にブロックするコンポーネントであるため(つまり、ユニオンオールは実行時に新しいバッファを作成しますが、データが入るとすぐにデータを渡します)、これによりパッケージの全体的な効率が低下します。データフローに新しいバッファを作成するオーバーヘッド。通常、エラーを無視するように一連のルックアップをコーディングし、最後のルックアップの後に、ルックアップのターゲットとして含まれるすべての列のデフォルトで置換する派生列コンポーネントを含めます。これにより、データフローを介した最も効率的なデータフローが可能になります。どのデータフローコンポーネントがブロックまたはセミブロックしているかについての詳細は、次の投稿を参照してください。http://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx

于 2010-04-29T11:20:56.320 に答える
0

ディメンションごとに2つのルックアップを実行している理由がわかりません。

通常、最初にすべてのディメンションを処理しました(TableDifferenceコンポーネントを使用してディメンションを推測/期限切れにします)。

次に、ファクトテーブルが読み込まれ、ビジネスキーを使用して各ディメンションを(連続して)1回ルックアップし、代理キーを見つけました。

于 2010-04-29T05:57:57.293 に答える