我正在尝试使用 Azure 数据工厂从源表加载上次运行时到上次修改日期的数据。
这工作正常:
@concat(' SELECT * FROM dbo. ',
item().TABLE_list ,
' WHERE modifieddate > DATEADD(day, -1, GETDATE())')"
当我使用时:
@concat(' SELECT * FROM dbo. ',
item().TABLE_list ,
' WHERE modifieddate > @{formatDateTime(
addhours(pipeline().TriggerTime-24)),
''yyyy','-','MM','-','ddTHH',':','mm',':','ssZ''}')
将错误作为"错误代码": "2200",
"message": "Failure happened on 'Source' side. 'Type=System.Data.SqlClient.SqlException,Message=Must declare the scalar variable "@".,Source=.Net SqlClient Data Provider,SqlErrorNumber=137,Class=15,ErrorCode=-2146232060,State=2,Errors=[{Class=15,Number=137,State=2,Message=Must declare the scalar variable "@".,},],'",
"failureType": "UserError",
"target": "Copy Data1"
}
我犯了什么错误?
我需要在 where 条件下>之后动态传递管道的最后运行时间日期。
SELECT *
FROM dbo.@{item().TABLE_LIST}
WHERE modifieddate >
@{formatDateTime(addhours(pipeline().TriggerTime, -24), 'yyyy-MM-ddTHH:mm:ssZ')}
可以使用字符串内插表达式。康卡特让事情变得复杂。
https://learn.microsoft.com/en-us/azure/data-factory/control-flow-expression-language-functions#expressions