Azure 数据流中源 SQL 查询的字符串插值

问题描述 投票:0回答:1

我在数据流表达式生成器中的字符串插值方面遇到以下问题。

我正在通过 Azure 数据管道中的查找活动从文件中读取值,我将变量 PRCTR 设置为文件中的值 ('P00610'、'P00612'),然后将此变量分配给数据流参数。

当我启动数据管道时,我的数据流从变量中获取该值: "prctr": "'('P00610','P00612')'" 我编写的 SQL 源查询如下所示:

"SELECT VALUE t FROM c.Metadata WHERE t IN {$prctr}"

我还尝试向变量添加单引号:

"SELECT VALUE t FROM c.Metadata WHERE t IN '{$prctr}'"

在这两种情况下,我的数据流都失败并出现错误:

Job failed due to reason: com.microsoft.dataflow.Issues: DF-DSL-002 - Parameter stream  has parsing errors. Parameter(s) with errors: prctr. Not honoring the datatype of parameter(s) could be one of the causes.

我没有将此参数标记为表达式:

My data pipeline where I read a file and set Variables. After that I assign variables to the data flow parameters.

我应该如何处理这样的字符串才能正确处理它?顺便说一句,当我尝试仅传递 1 个 PRCTR 值并将查询更改为:

"SELECT VALUE t FROM c.Metadata WHERE t = '{$prctr}'"

有效!

因此,存在多个项目的字符串值('P00610','P00612')会导致错误。

请分享你的想法,谢谢。

string azure azure-data-factory interpolation
1个回答
0
投票

看起来我找到了使用这种表达方式的解决方案:

"SELECT VALUE t FROM c.Metadata WHERE t IN ({split($prctr, ',')})"
。我还必须调整从文件中读取的值,将其从 ('P00610','P00612') 更改为 P00610,P00612。所以希望这对遇到类似情况的人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.