【问题标题】:Azure ADF build query using concat in lookup activityAzure ADF 在查找活动中使用 concat 构建查询
【发布时间】:2021-07-24 13:08:13
【问题描述】:

我有下面的 SQL 服务器查询,它构建了一个这样的字符串:'Group1'、'Group2'、'Group3'

SELECT '''' + '
STRING_AGG(CAST(groupname as NVARCHAR(MAX)), ''',''') + ''''
FROM groups
WHERE category = 'food'

我在ADF pipeline 中有一个lookup expression,我想在其中使用@concat function 构建查询动态。此查询由 SQL Server 数据库中的查找表达式执行。 SQL 语句中的 WHERE 子句需要使用管道参数进行参数化。我尝试了下面的代码,但这不起作用并给我一个错误:missing comma between the arguments 我该如何解决这个问题?

@concat('
  SELECT ''' + 
    STRING_AGG(CAST(groupname as NVARCHAR(MAX)), ''',''') + '''
  FROM groups
  WHERE category = ''',pipeline().parameters.Category,''''
  )

【问题讨论】:

  • 对于任何平台上的任何动态SQL问题,首先要做的就是找出它生成了什么SQL。我建议您查看 ADF 日志并找出并从那里开始
  • 嗨@user7432713 如果您需要更多信息,请告诉我。 :)
  • 嗨@user7432713。如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢你。 :)

标签: sql-server concatenation azure-pipelines azure-data-factory single-quotes


【解决方案1】:

我创建了一个简单的测试如下:

create table dbo.groups(
    groupname varchar(25),
    category varchar(25)
)

insert into dbo.groups values
('Group1','food'),
('Group2','food'),
('Group3','food')

SELECT '''' + STRING_AGG(CAST(groupname as NVARCHAR(MAX)), ''',''') + '''' as groups
FROM groups WHERE category =  'food'

  1. 将动态内容@concat('SELECT '''''''' + STRING_AGG(CAST(groupname as NVARCHAR(MAX)), '''''','''''')+ '''''''' as groups FROM groups WHERE category = ''',pipeline().parameters.Category,'''') 添加到查找活动。

  2. 调试结果如下,我想是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2017-01-10
    • 2021-08-12
    • 2020-03-10
    • 1970-01-01
    • 2022-01-06
    • 2023-01-12
    相关资源
    最近更新 更多