データのステージングに使用されるパーティション分割されたテーブルにロードする必要がある、時間ベースの一連のレコードがあります。ステージテーブルは日ごとに分割されています。効率を高めるために、ステージ テーブルへのデータ ロードを複数の「プロセッサ」(SSIS のストリーム) に分散しました。データがステージングされたら、データ マートにロードする前に、一連の重複除外操作を実行します。ただし、日付で分割されたセット全体で NTILE 関数を使用しているため、ステージングされたデータがプロセッサ間で均等に分割されないことが私の課題です。
したがって、5 プロセッサの場合、次の分布が表示される可能性があります ...
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 しかありませんが、全範囲が読み込まれると、プロセッサー 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)
どんなフィードバックでも大歓迎です。