比较SSIS中的两个变量
问题描述:
作为已存在的ETL过程的一部分,我不得不添加验证检查。
这涉及将CSV文件的记录计数与随附的元数据进行比较。比较SSIS中的两个变量
此时元数据已经存储在数据库中,我设法通过添加一个Execute SQL块并将输出存储到一个变量中来获取它。
一旦读取文件,作为数据流任务[已经在SSIS包中设计]的一部分,我使用数据流中的行计数转换块从此捕获行计数。
我需要比较这些值,如果不相等,则失败。
我该如何去做到这一点?
我试过到目前为止:
- 使用的脚本组件捕捉到2个变量作为只读输入,但没有工作的变量不能在脚本显然 内访问
- 用于查找转换,但我不能让它比较变量
任何想法?
答
重申,你有两个整数类型的变量,你需要弄清楚如何使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;
}
失败,你的意思是说,如果行数不相等的目的地(CSV /表)不应该填充?这就是你使用脚本组件的原因吗?如果没有,就像bilinkc在下面建议的那样,这是要走的路 – VKarthik