ステージングデータに使用されるパーティションテーブルにロードする必要があるレコードの時間ベースのセットがあります。ステージテーブルは1日ごとに分割されます。効率を上げるために、複数の「プロセッサ」(SSISのストリーム)にわたってステージのテーブルにデータの負荷を分散しました。データがステージングされたら、データマートにロードする前に一連のデデュープ処理を実行します。しかし、私が挑戦しているのは、日付でパーティション化されたセット全体でNTILE機能を使用しているので、ステージデータがプロセッサー間で均等に分割されていないことです。データを境界全体に均等に分散する方法
だから私は
Processor 1, >= 2011-01-01 and < 2011-05-01, Rows = 200,000
Processor 2, >= 2011-05-01 and < 2011-09-01, Rows = 3,000,000
Processor 3, >= 2011-09-01 and < 2012-01-01, Rows = 6,000,000
Processor 4, >= 2012-01-01 and < 2012-05-01, Rows = 6,000,000
Processor 5, >= 2012-05-01 and < 2012-09-01, Rows = 0
は
データの量がいっぱいと、プロセッサ4は、今日だけ負荷時の6,000,000を持っているもののので、指数関数的に増加している... 5つのプロセッサのため、以下の分布が表示されることがありますプロセッサ4は、合計8,000,000以上の行(レコード)を処理している可能性があります。
私の目標は、2つのプロセッサが同じパーティション(日)で競合しないようにしながら、行数に基づいてプロセッサ間でワークを均等に分散させることです。
そうは、分布はこのような何かを探すために必要があるだろう、ビジュアルとして...
Processor 1, >= 2011-01-01 and < 2011-09-01, Rows (3,200,000)
Processor 2, >= 2011-09-01 and < 2011-11-01, Rows (3,000,000)
Processor 3, >= 2011-11-01 and < 2012-01-01, Rows (3,000,000)
Processor 4, >= 2012-01-01 and < 2012-01-03, Rows (3,000,000)
Processor 5, >= 2012-01-03 and < 2012-03-18, Rows (3,000,000; 2012-03-18 contains most current data)
すべてのフィードバックをいただければ幸いです。