从 Excel 工作表和聚合数据填充的 SSIS 变量

SSIS variables that are populated from Excel sheet and aggregate data

我有一个 Excel 表,其中包含来自 SQL 查询的数据。我需要对这些值进行一些聚合,以获得最小和最大年份,以及字段列表中的最小和最大季度。我需要根据每年的季度数计算每年卷的总计数。

1
2
 Volume || Start Year ||Start Quarter || End Quarter || End Year
   3          2013           2                4           2016

年份之间季度的差异将为我提供所选年份中所有数量下降的总数量。

我正在尝试为最小和最大年份以及最小和最大季度分配变量以查找总成交量。是否可以为 Excel 工作表中的每个项目分配一个 SSIS 变量,然后计算所选年份的卷数?


在 SSIS 包控制流中,您可以通过调用存储过程的执行 SQL 任务来完成所有这些操作。从这里可以采取几种方法。

1) 应用填充 Excel 文件的原始 SQL 查询来填充临时表。使用临时表执行聚合并将它们输出到可以在执行 SQL 任务编辑器的结果集中定义的变量。

2) 如果应用原始 SQL 查询不是一个选项,并且您必须从 Excel 文件中读取,那么您仍将应用第一个选项中的建议,除了存储过程将应用 OPENROWSET 命令来调用您的 Excel 文件和包含的工作表。该命令将根据用于创建文件的 Excel 版本而略有不同。以下示例基于 Excel 2007 及更高版本(.xlsx 文件扩展名)。为了使它工作,您需要在运行 SSIS 的机器上安装 AccessDatabaseEngine.exe 驱动程序。

1
2
SELECT * INTO #Temp FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                             'Excel 12.0 Xml;HDR=YES;Database=C:\\folder\\MyExcelFile.xlsx', 'SELECT * FROM [Sheet1$]')

以下链接更好地说明了使用 OPENROWSET 的细节。
http://blog.learningtree.com/using-openrowset-to-read-excel-worksheets-from-sql-server-part-2-linked-sql-queries/

以下链接提供了有关设置由执行 SQL 任务调用的存储过程以返回结果集下定义的输出的一些详细信息。
SSIS 执行 SQL 存储过程输出参数类型不匹配

希望这会有所帮助。