У меня есть набор записей, основанный на времени, который мне нужно загрузить в секционированную таблицу, которая используется для обработки данных. Стол сцены разделен на день. Я распределил загрузку данных в таблицу сцен на нескольких «процессорах» (потоки в 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 имеет только 6000000 в момент нагрузки сегодня, когда полный диапазон обрабатывается, процессор 4 может работать в общей сложности на 8 000 000 строк (записей).
Моя цель - распределить работу равномерно по процессорам на основе количества строк, гарантируя, что любые два процессора не будут бороться за один и тот же раздел (день).
Так что, как визуальное распределение нужно будет искать что-то вроде этого ...
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)
Любая обратная связь будет высоко оценен.