提问人:IrfanClemson 提问时间:6/22/2023 最后编辑:IrfanClemson 更新时间:6/22/2023 访问量:336
使用变量的 Azure Synapse Analytics SQL 查询
Azure Synapse Analytics SQL Query with Variables
问:
我有一个包含复制活动的 Azure Synapse Analytics 管道。该活动从 Google BigQuery 数据源中提取数据。数据是根据几个条件提取的,包括开始日期和结束日期。以下是复制活动的“查询”部分中的问题查询:
@concat('SELECT LogObject FROM `xxxx.yyyy.LogMetric` WHERE
SourceApplication = '185' AND EventType = 'Request' AND TIMESTAMP(EventTime) BETWEEN
','''', variables('begin_date'),'''', ' AND ', '''', variables('end_date'),'''' )
运行上述查询后,我收到如下错误:
'Type=System.Data.Odbc.OdbcException,Message=ERROR [42000] [Microsoft][BigQuery] (70) Invalid query: Syntax error: Expected end of input but got \"@\" at [1:1],Source=Microsoft ODBC Driver for Google BigQuery
更新 1如果我不使用@concat并且喜欢:
SELECT LogObject FROM LogMetric WHERE TIMESTAMP(EventTime) BETWEEN
TIMESTAMP(@variables('begin_date') AND
TIMESTAMP(@variables('end_date'));
然后我得到错误:
Function call cannot be applied to this expression. Function calls require a path, e.g. a.b.c()
如果我运行一个更简单的查询进行测试,那就行得通了:
SELECT LogObject FROM `xxxx.yyyy.LogMetric` WHERE
SourceApplication = '185' AND EventType = 'Request' LIMIT 5;'
但是我需要能够使用这两个变量和 .begin_date
end_date
当复制活动中的数据源是 SQL Server 时,我能够使其正常工作;区别在于,对于 SQL Server,非日期筛选器是数字,例如:
@concat('Select LogObject from MyTable where AppRequestKeyId=185 and EventType=1 AND CAST
(LogDate AS datetime2) BETWEEN ','''', variables('begin_date'),'''', ' AND ', '''',
variables('end_date'),'''' )
如何使我的查询也适用于包含变量的 Google BigQuery?
答:
1赞
Aswin
6/22/2023
#1
更新的查询的问题在于,您正在使用函数内的符号来引用 和 变量的值。这不是引用变量的正确语法。@
TIMESTAMP
begin_date
end_date
若要在 Azure Synapse Analytics 中引用变量,应使用以下语法:.请注意,变量名称应用单引号括起来,整个表达式应括在大括号 @{....}
中。@{variables('variable_name')}
以下是更正后的查询:
SELECT LogObject FROM LogMetric WHERE TIMESTAMP(EventTime) BETWEEN
TIMESTAMP('@{variables('begin_date')}') AND
TIMESTAMP('@{variables('end_date')}')
参考:关于ADF中表达式的MS文档
评论
0赞
IrfanClemson
6/22/2023
嗨,看起来很有前途。但现在我收到一个错误:“@variables('begin_date')'。但是如果我更改为 BETWEEN TIMESTAMP('''2023-06-19''') 和 TIMESTAMP('''2023-06-20''');然后它起作用了。
1赞
IrfanClemson
6/22/2023
哦,没关系。我有一些额外的单引号。你的答案有效。非常感谢!!
上一个:视图中的“模拟”变量
评论