SSIS-如何使用变量的值来确定ForEachLoop容器?

时间:2019-01-24 19:23:21

标签: ssis

我正在研究SSIS软件包,该软件包的目标是获取包含多个列的电子表格(我们需要PartNum,PartType和Qty)

,然后针对电子表格中的每一行,运行查询以计算消耗量并将其转储到单独的工作表中。

我遇到了一些问题,但最初的问题是,我有两种零件类型:制造的和购买的。我只想对制成品运行查询。如何在SSIS中做到这一点?我试图在表达式生成器中将其设置为等于“ M”的变量,但这始终为false。

理想情况下,我想同时过滤零件类型= M和数量> 0。

Here is the variable:

这是SSIS包的图片,基本上,我正在使用数据流将电子表格导入Recordset,然后在Foreach循环中,OLEDB源将查询参数(part和qty变量)传递给导出为.csv

SSIS Package

1 个答案:

答案 0 :(得分:1)

在从Excel源到记录集目标的初始数据流任务中,无需加载整个Excel文件,只需选择满足给定条件的记录即可。除非您在程序包中出于其他目的需要这些记录,否则这还将防止在Recordset Destination中添加未使用的行并在后续组件中对其进行处理。您可以在Excel Source中通过将数据访问模式更改为 SQL命令并添加必要的过滤器来执行此操作。可以像查询SQL一样查询Excel。您要查询的内容应与以下类似,表和列的名称应适当替换。如果列名中包含空格,则需要将其括在方括号中。例如,PartType将是[Part Type]

SELECT 
PartNum, 
PartType, 
Qty 
FROM Excel_Sheet 
WHERE PartType = 'M' AND Qty > 0