这种逻辑能否在SSIS中实现,是否可以近乎实时地实现?
当起始表有大约500.000行时(在STEP1和STEP2之后我们有数百万条记录),用户正在提交包含数十万条记录的表并使用当前实现等待最多1小时的结果。将来,数据量和用户群可能会急剧增长。
我们有一个约500.000行的表(A),其中包含以下主要列:ID, AMOUNT
我们还有一个表(B),其中包含prop.steps和以下主要列:ID_A, ID_B, COEF
表A:
id amount
a 1000
b 2000
表B:
id_a,id_b,coef
a,a1,2
a1,b2,2
b,b1,5
我们正在使用表格A中的所有500.000条记录创建新记录,将AMOUNT
乘以COEF
:
输出表:
id, amount
a,1000
a1,2000
a2,4000
b,2000
b1,10000
遵循自定义逻辑,我们使用以下逻辑将之前计算的所有记录的数量分配给其他项目:
表A
ID,AMOUNT
a,1000
a1,2000
a2,4000
b,2000
b1,10000
表B
ID,WC,COEF
a,wc1,0.1
a,wc2,1
a,wc3,0.1
a1,wc4,1
a2,wc5,1
b,wc1,1
b1,wc1,1
b1,wc2,1
输出表:
ID,WC,AMOUNT
a,wc1,100
a,wc2,1000
a,wc3,100
a1,wc4,2000
a2,wc5,4000
b,wc1,2000
b1,wc1,10000
b1,wc2,10000
其他步骤只是对表的连接和算术运算,并且记录的总数不能减少(表中还有其他带元数据的字段)。
答案 0 :(得分:2)
根据我的个人经验,这种逻辑可以在SSIS中完全实现。
我会在脚本任务或组件中执行此操作有两个原因:
但是,有些专业人士对“复杂”剧本有不好的看法......
这种方法的下行步骤是你需要一些.NET和编程能力,你的大多数封装逻辑都会集中在那里,脚本调试可能比其他组件更复杂。但是一旦你开始使用SSIS的.NET功能,就没有回头路了。
通常在SSIS中接近实时对于大数据集来说是棘手的,有时您需要集成其他工具(例如StreamInsight)来实现它。