我在SSIS 2012项目中有一个SSIS数据流。
我需要以最佳方式为每个行字段计算基于某些条件的另一个表的总和。
这类似于查找但在查找结果上返回聚合。
是否有SSIS方法可以通过组件进行操作,还是需要转向脚本任务或存储过程?
示例:
一个数据流的字段名称很多。
我需要从表b中得到总和(数量),其中dataflow.LOT = tableb.lot
并将其写回流场
答案 0 :(得分:1)
您只需要使用查找组件。而不是选择tableb
写入查询,因此
SELECT
B.Lot -- for matching
, SUM(B.quantity) AS TotalQuantity -- for data flow injection
FROM
tableb AS B
GROUP BY
B.Lot;
现在,当软件包开始时,它将首先针对该数据源运行此查询,并在所有批次中生成数量。
根据数据量以及tableB中的值是否正在发生变化,这可能是也可能不是一件好事。在更大容量的情况下,如果这是一个问题,那么我会看看我是否可以对上述查询做些什么。也许我只需要当年的数据。也许我的Lots列表可以预先推送到删除服务器,只计算我需要的聚合。
如果TableB非常活跃,那么您可能需要将缓存从默认值Full更改为Partial或None。如果Lot 10在数据流中出现两次,则None将对源执行2次查找,而Partial将缓存它所看到的值。可能,取决于记忆压力等。