在查找活动中使用 concat 的 Azure ADF 构建查询

问题描述

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

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

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

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

解决方法

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

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

insert into dbo.groups values
('Group1','food'),('Group2',('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,'''')enter image description here

  2. 调试结果如下,我觉得是你想要的。 enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...