我在数据流表达式生成器中的字符串插值方面遇到以下问题。
我正在通过 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.
我没有将此参数标记为表达式:
我应该如何处理这样的字符串才能正确处理它?顺便说一句,当我尝试仅传递 1 个 PRCTR 值并将查询更改为:
"SELECT VALUE t FROM c.Metadata WHERE t = '{$prctr}'"
有效!
因此,存在多个项目的字符串值('P00610','P00612')会导致错误。
请分享你的想法,谢谢。
看起来我找到了使用这种表达方式的解决方案:
"SELECT VALUE t FROM c.Metadata WHERE t IN ({split($prctr, ',')})"
。我还必须调整从文件中读取的值,将其从 ('P00610','P00612') 更改为 P00610,P00612。所以希望这对遇到类似情况的人有所帮助。