我有一组基于时间的记录,我需要将它们加载到用于暂存数据的分区表中。舞台表按天分区。为了提高效率,我已将数据负载分布到多个“处理器”(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 多行(记录)。
我的目标是根据行数在处理器之间平均分配工作,同时确保任何两个处理器都不会竞争同一个分区(天)。
所以,作为一种视觉效果,分布需要看起来像这样......
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)
任何反馈将不胜感激。