【问题标题】:Using Variable as expression in Derived column transformation SSIS在派生列转换 SSIS 中使用变量作为表达式
【发布时间】:2012-07-11 13:07:37
【问题描述】:

本质上,我是一个带有执行 SQL 语句的 SSIS pkg,该语句根据某些表值动态写入 REPLACE 函数。 (即REPLACE(REPLACE(Col1,"*","",),"@@@","")

ExecuteSQL 结果被放入变量@Cleanse

在我的派生列转换中,我试图调用 @User::Cleanse 作为表达式来替换 DataFlow 中 Col1 的值。

结果似乎是拉取@Cleanse 的结果并将其用作字符串值,而不是将其用作REPLACE 函数。

在调试时,@Cleanse 值似乎将 \ 放入字符串中,我认为这无关紧要,因为它似乎可以毫无问题地将其应用于其他值

结果是,当用完 CSV 时,这是把

"REPLACE(REPLACE(Col1" in Col1"

"*" in Col2

) 在 Col3 等中

如何让派生列转换“看到”变量作为函数,而不是字符串值?

在此先感谢

【问题讨论】:

    标签: variables ssis expression transformation dataflow


    【解决方案1】:

    将变量的EvaluateAsExpression属性设置为True

    但是,使用执行 SQL 任务的 Variable Mappings 窗格将变量作为参数绑定到 SQL 查询可能是更好的解决方案

    【讨论】:

    • 您是否尝试将实际表达式传递给您的派生列转换?也就是说,据我所知,这是不可能的。
    • 嗨@Jeroen 好吗?也许我错过了一些东西如果我将 var 设置为 Evaluate as Expression 我需要使用编辑器编写表达式......所以为了这些目的,我使用 User::Cleanse 的表达式创建了@ Cleanse2 这似乎让我同样的结果...即将字符串作为字符串拉出,而不是将其用作 REPLACE 语句。
    • Ahhhhh 是的,我是实际的表达式是由 ExecuteSQL 任务编译和编写的。所以结果被放入变量 = REPLACE(REPLACE(Col1,"*",""),"@@@"
    • 谢谢杰罗姆,我已经将 SQL 作为变量参数添加到后面的代码中,并且似乎可以正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多