SSIS 行字段是查找的总和

SSIS row field to be sum of lookup

我在 SSIS 2012 项目中有一个 SSIS 数据流。

我需要根据某些条件以最佳方式为每个行字段计算另一个 table 的总和。

这类似于查找,但返回查找结果的聚合。

是否有 SSIS 方法通过组件来完成,或者我需要转向脚本任务或存储过程?

示例:

一个数据流有一个文件名LOT。

我需要从 table b 中获取总和(数量),其中 dataflow.LOT = tableb.lot

并将其写回流场

您只需要使用查找组件。而不是选择 tableb 编写查询,因此

SELECT
    B.Lot -- for matching
,   SUM(B.quantity) AS TotalQuantity -- for data flow injection
FROM
    tableb AS B
GROUP BY
    B.Lot;

现在,当包开始时,它会首先 运行 针对该数据源进行此查询,并生成所有批次的数量。

这可能是好事,也可能不是好事,具体取决于数据量以及 tableB 中的值是否正在更改。在更大的体积情况下,如果是一个问题,那么我会看看我是否可以对上面的查询做些什么。也许我只需要当年的数据。也许我的批次列表可以预先推送到删除服务器中,以便只计算我需要的聚合。

如果 TableB 非常活跃,那么您可能需要将缓存从默认的 Full 更改为 Partial 或 None。如果 Lot 10 在数据流中出现两次,None 将对源执行 2 次查找,而 Partial 将缓存它看到的值。可能,取决于内存压力等