Sql Azure 数据工厂中使用的脚本,参数不起作用

Sql script used in Azure Data Factory with Parameter not working

我正在尝试 运行 Pre SQl 脚本,然后再使用 ADF 插入数据。我的 Pre SQL 脚本包含数据流参数。 请注意下面的参数值。

parameter1 = excel sheet 的列之一(假设值为 'XY')

PFB 查询

“从 ABC 中删除 col_name = {$parameter1}”——输出 :: XY

"从 ABC 中删除 col_name = '{$parameter1}'" -- 输出 :: XY 我在上面使用派生列 activity.

进行了检查

当我运行下面查询

"DELETE FROM ABC WHERE col_name ='{$parameter1}'" -- 错误:文字表达式中不允许使用列操作数

如果我尝试以下

concat('DELETE FROM ABC WHERE col_name =',toString('''+ toString(byPath('$parameter1'))+ ''') ) 我在派生列中看到的结果 从 ABC 中删除 col_name ='XY' 但是当我将它添加到 Pre SQL 脚本时,我看到以下错误 常量表达式中不允许使用列函数

需要有关 Pre SQL 脚本中参数用法的建议以及一些示例。感谢您的宝贵时间和帮助。

ADF 不允许我们将列函数结果传递给表达式。所以我们需要在数据流外添加一个Lookupactivity。然后通过表达式将 Lookup activity 的输出值传递给您的数据流参数。

  1. 将源数据集添加到您的查找中 activity。
    这是我的 Lookup activity 的输出。

  2. 所以我通过表达式 @activity('Lookup1').output.firstRow.name.
    将值传递给我的数据流参数

  3. 在我的数据流接收器中,我将 "DELETE FROM emp WHERE name = '{$parameter1}'" 添加到 Pre SQL 脚本。 ADF 将执行 DELETE FROM emp WHERE name = 'Tim'

这对我来说效果很好。