Nel*_*ias 6 azure-data-factory
我创建了一个复制活动,将数据从本地数据库复制到 Azure SQL 数据库。我需要动态修改查询,因此它需要一个日期范围,并带有这两个变量:
inidateenddate我想在where子句中使用它,但我不知道如何引用变量。我尝试了这个,但它不起作用:
SELECT * FROM tableOnPrem
WHERE dateOnPrem BETWEEN '@variable('inidate')' AND '@variable('enddate')'
Run Code Online (Sandbox Code Playgroud)
如何才能实现这一目标?
小智 8
我发现添加大括号足以使其正常工作(就像Joel Cochran使用复数变量s关键字所说的那样):
SELECT * FROM tableOnPrem
WHERE dateOnPrem
BETWEEN '@{variables('inidate')}' AND '@{variables('enddate')}'
Run Code Online (Sandbox Code Playgroud)
但是,它仍然在源“预览数据”选项上报告错误,但尽管如此,它在实际管道运行中运行正常。
在管道中(如复制活动),您需要使用管道表达式语言(PEL) 动态构建查询字符串。最好的方法是使用concat函数将查询拼凑在一起:
@concat('SELECT * FROM tableOnPrem WHERE dateOnPrem BETWEEN ''',variables('inidate'),''' AND ''',variables('enddate'),'''')
Run Code Online (Sandbox Code Playgroud)
这可能很快就会变得复杂,因此您需要特别注意逗号、括号、“”和“””。
请注意,“@”符号仅出现一次,即在表达式的开头。另外,要引用管道变量,您将调用“variable s ”函数。
| 归档时间: |
|
| 查看次数: |
15988 次 |
| 最近记录: |