【问题标题】:Comparing 2 variables in SSIS比较 SSIS 中的 2 个变量
【发布时间】:2016-11-10 06:23:02
【问题描述】:

作为已经存在的 ETL 流程的一部分,我必须添加验证检查。
这涉及将 CSV 文件的记录数与其随附的元数据进行比较。

此时元数据已经存储在数据库中,我设法通过添加执行 SQL 块并将输出存储到变量来获取它。
读取文件后,作为数据流任务的一部分 [已在 SSIS 包中设计],我使用数据流中的行计数转换块从中捕获行计数。

我需要比较这些值,如果不相等,则失败。

我将如何完成这项工作?

到目前为止我已经尝试过:

  1. 使用脚本组件将 2 个变量捕获为只读输入,但这不起作用,因为显然无法在脚本内访问变量
  2. 使用了查找转换,但我无法使用它来比较变量

有什么想法吗?

【问题讨论】:

  • 失败是指如果行数不相等,则不应填充目标(CSV/表)?这就是您使用脚本组件的原因吗?如果没有,正如 bilinkc 在下面建议的那样,这就是要走的路

标签: ssis


【解决方案1】:

重申一下,您有两个整数类型的变量,如果它们不相等,您需要弄清楚如何使 SSIS 包失败。您从数据流中捕获行数。数据流完成后,您可以将脚本任务(不是脚本组件)添加到控制流并传入@[User::DbRowCount] 和@[User::DfRowCount]

然后你的脚本中有一些东西,比如

int dbRowCount = (int) this.Dts.Variables["DbRowCount"].Value;
int dfRowCount = (int) this.Dts.Variables["DfRowCount"].Value;
if (dbRowCount != dfRowCount)
{
    this.Dts.Events.FireError(0, "Invalid row counts", "error", string.Empty, 0);
    Dts.TaskResult = ScriptResults.Failure;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多