Ssis 如何在条件拆分条件下从变量传递列名

Ssis 如何在条件拆分条件下从变量传递列名,ssis,Ssis,我创建了SSIS包。这里有一个数据流任务,其中有OLEDB数据源,它从数据库的某个表中加载记录。表名是以编程方式分配的,因此该数据源可能会输出不同的列。我还有一个连接到数据源输出的条件拆分,我想在这里拆分记录。我想在条件拆分中设置条件,我想这样做: @[User::ConditionColumnName] >= @[User::SomeValue] 其中,@[User::SomeValue]是具有要比较的某个值的变量,但是,@[User::ConditionColumnName]是具有数

我创建了SSIS包。这里有一个数据流任务,其中有OLEDB数据源,它从数据库的某个表中加载记录。表名是以编程方式分配的,因此该数据源可能会输出不同的列。我还有一个连接到数据源输出的条件拆分,我想在这里拆分记录。我想在条件拆分中设置条件,我想这样做:

@[User::ConditionColumnName] >= @[User::SomeValue]
其中,@[User::SomeValue]是具有要比较的某个值的变量,但是,@[User::ConditionColumnName]是具有数据源输出中某个列的名称的变量。我将以编程方式指定此值。
我该怎么做?或者是否有其他方法可以在编译时使用未知列分割数据?

这听起来像是基于行的条件分割。也许您可以将变量值添加到选择列表中(这样您就有了一个可以比较的列),比如

"SELECT '" + (DT_STR,50,1252)@[User::ConditionColumnName] + "' as MyConditionColumnName, .... FROM ... "
这样,您就可以在条件拆分中对每行的MyConditionColumnName列进行比较


(您可以将此select放入变量并运行sql from变量,这可能更易于维护)-无论哪种方式,您都需要将查询解析为表达式,以便在运行变量之前对其求值。

谢谢您的回答。最后,我选择了第二种稍微修改的方式。我刚刚删除了条件拆分并创建了一个带有查询文本的变量。在数据流任务之前,我在脚本任务中以编程方式构建查询,并在数据源中使用“来自变量的SQL命令”数据访问模式。