3

我在数据流任务中有一个行计数转换,这个数据流任务位于 For Each 循环容器中。所以当我运行包时,我只得到一个文件而不是所有文件的行数。谁能帮我解决这个问题

4

2 回答 2

3

使用表达式任务

表达式任务使用表达式生成器创建和评估在运行时设置变量值的表达式

将 2 个变量添加到您的 ssis 包中:

  • @[User::TotalRowCount]:存储总数
  • @[User::RowCount]: 用于行计数转换

使用以下表达式在 Foreach 循环容器内添加一个表达式任务:

@[User::TotalRowCount] = @[User::TotalRowCount] + @[User::RowCount]

参考

于 2019-03-08T23:37:54.973 回答
1

您可以使用脚本任务来执行此操作。首先创建另一个 SSIS 变量,该变量将存储 Foreach 循环的所有迭代的总数。在此之后,在循环内的数据流任务之后放置一个脚本任务。将保存每次迭代的行计数的变量添加为 aReadOnlyVariable和将存储ReadWriteVariables字段中所有迭代的总计数的变量。下面的示例使用 C# 来更新总行计数变量 ( ) 的值,方法是TotalCount将当前迭代 ( CurrentInterationCount) 保存的变量中的行计数添加到它。

int currentRows = Convert.ToInt32(Dts.Variables["User::CurrentInterationCount"].Value.ToString());
int totalRows = Convert.ToInt32(Dts.Variables["User::TotalCount"].Value.ToString());

Dts.Variables["User::TotalCount"].Value = currentRows + totalRows;
于 2019-03-08T14:30:55.107 回答