需要根据SSIS中的某些条件过滤excel行

时间:2018-10-03 19:21:57

标签: sql sql-server excel ssis ssis-2012

我有一个包含很少记录的excel源文件。到目前为止,我正在将过滤器应用到excel文件中,复制新的结果集(应用过滤器后),然后粘贴到同一Excel中的新工作表中,然后将新数据集加载到SQL Server中。

我想使任务自动化,以便避免复制粘贴,因为文件数量较多。我对此进行了Google搜索,发现条件拆分可能会有所帮助,但是当我在同一条件上应用条件拆分时,我没有发现最终结果集有什么不同。

因此要求提供同样的指导。

1 个答案:

答案 0 :(得分:4)

假设您要对三个不同的列的某些Excel数据应用三个过滤器,以获取最终数据集。

假设您的Excel工作表包含以下列:

  • ProductId(产品的整数ID字段)
  • AmountOfSale(价值为 美元)
  • StoreId(整数ID字段,用于表示 销售)
  • QuantitySold(整数值)

现在假设您要应用以下过滤器:

  • 销售金额> $ 100.00
  • StoreId = 13(您只想查看StoreId 13的数据)
  • QuantitySold在1到10之间

我将假设您在“数据流任务”中正确配置了Excel Source连接。

添加一个Conditional Split任务,并将Excel Source的输出连接到该任务。进入Conditional Split配置编辑器。单击Output Name下的框,然后为过滤后的输出命名,例如PassedFilters。接下来,我们将构建过滤条件。然后,在Condition下添加以下表达式:

[AmountOfSale] > 100.00 && [StoreId] == 13 && ([QuantitySold] >= 1 && [QuantitySold] <= 10)

点击OK并保存Conditional Split任务。现在,将目标连接添加到数据流中。将条件拆分任务连接到目标连接器,SSIS / SSDT应弹出一个Input Output Selection对话框。从“输出”下拉列表中选择PassedFilters输出,然后应预先输入目标输入。如果不是,则选择正确的输入。并点击OK

现在,只有通过过滤器的行将被发送到目的地。