1

SSIS Dimension Merge SCDコンポーネント(http://dimensionmergescd.codeplex.com/)を使用していて、SCD1列とSCD2列の両方を構成している状況があります。InferredMemberフラグが設定されている行がありますが、コンポーネントは新しい行を挿入し、既存の推測された行の現在のフラグをリセットしませんでした。

他の誰かがこのコンポーネントを使用していて、それが正しく機能するのを見たことがありますか?私は誤解していますか?私の理解では、SCD2列はInferredMemberがtrueのSCD1になりますが、これは間違っていますか?

並べ替えはデータベースのビジネスキーで行われ、並べ替え列は一致するように設定されます。DMSCDコンポーネントの出力は、OLEDBコマンド/OLEDB宛先コンポーネントに直接フックされます。これは本番環境にあり、それ以外の場合は数か月間毎日正しく機能しています。

これは、実行からの監査出力です。

ExistingDimensionInputRowCount = 719941
SpecialMemberInputRowCount = 1
SourceSystemInputRowCount = 720516
UnchangedOutputRowCount = 719941
NewOutputRowCount = 720517
DeletedOutputRowCount = 0
SCD2ExpiredOutputRowCount = 0
SCD2NewOutputRowCount = 0
SCD1UpdatedOutputRowCount = 0
InvalidInputOutputRowCount = 0
4

2 に答える 2

2

推測されたメンバーにのみ問題がありますか?また、CodePlexでリリースされた最新バージョンのコンポーネントを使用していますか?

問題は推測されたメンバーだけに関連しているのではなく、SCD2ハウスキーピング列(現在のメンバーと日付の列)が適切に設定されていないために発生している可能性があります。DMSCDから期待したとおりに出力が配信されない最も一般的な理由は、次のいずれかが原因です。

  1. DMSCDの後に派生列コンポーネントを使用して日付を変更している、および/またはDMSCDが提供する日付情報を更新/挿入していない。代わりに、派生列でハードコードされた値または変数値を使用しているか、テーブル定義でデフォルトを使用しているか、宛先列を適切にマッピングしていません。

  2. DMSCDへの入力のソート順が正しくありません。OLE DBソースの出力でIsSortedプロパティをtrueにマークし、列のさまざまなSortKeyPositionプロパティを設定するだけで十分であると想定している場合がありますが、そうではありません。行った高度な編集を削除するか、フローで並べ替えコンポーネントを使用します(テスト目的で、後でOLE DBソースを修正できます)。

于 2011-12-14T22:35:22.950 に答える
0

それで、私自身の質問に答えるために、はい、私は間違っています。InferredMemberフラグだけでは、推定メンバーの動作はトリガーされません。

推測されるメンバーは、ディメンションテーブルに挿入された骨格レコードです(多くの場合、ストアドプロシージャによって)。-ファクトテーブルのメンテナンス中に代理キーのルックアップが失敗した場合。InferredMemberフラグは通常、ディメンションのロードプロセスをトリガーして、骨格の推定メンバーレコードの残りのフィールドに入力します。また、推定メンバーレコードのSCD2フィールドの場合、それらはSCD1として処理され、新しいレコードは生成されません。

実験を通じて、DMSCDコンポーネントには、少なくともビジネスキー、推定メンバーフラグ、および過去のアクティブ日付を含む推定メンバースケルトンが必要であることがわかりました。現在の日付を使用していたため、レコードは処理されませんでした。推定メンバーレコードとして、それらは新しいレコードとして扱われ、重複が生成されていました。

残念ながら、DMSCDと互換性のある推定メンバーレコードの仕様を呼び出して、それらを作成するために開発されたストアドプロシージャによって推定メンバーレコードを適切に形成できるようにするドキュメントを見つけることができませんでした。また、推測されたメンバーレコードに現在の日付であるアクティブな日付をタグ付けできないことにも疑問があります。

于 2011-12-16T14:34:51.947 に答える