“错误”;“坏请求”;在ADF中调用Azure函数时

“错误”;“坏请求”;在ADF中调用Azure函数时,azure,azure-functions,azure-data-factory,Azure,Azure Functions,Azure Data Factory,我正在创建一个广泛的数据工厂工作流程,它将自动为多个客户创建和填充数据仓库,但是我遇到了一个错误。我将首先发布问题,因为剩下的信息有点长。请记住,我是数据工厂和JSON编码的新手 问题和评论 如何正确地将参数传递给执行管道活动 如何将所述参数添加到Azure函数活动 问题可能在于正确地传递参数,也可能在于拾取参数——我似乎无法确定是哪一个。如果您发现当前设置有错误,请随时告诉我-非常感谢您的帮助 错误 { "errorCode": "BadRequest", "message": "Oper

我正在创建一个广泛的数据工厂工作流程,它将自动为多个客户创建和填充数据仓库,但是我遇到了一个错误。我将首先发布问题,因为剩下的信息有点长。请记住,我是数据工厂和JSON编码的新手

问题和评论

  • 如何正确地将参数传递给执行管道活动
  • 如何将所述参数添加到Azure函数活动
问题可能在于正确地传递参数,也可能在于拾取参数——我似乎无法确定是哪一个。如果您发现当前设置有错误,请随时告诉我-非常感谢您的帮助

错误

{
"errorCode": "BadRequest",
"message": "Operation on target FetchEntries failed: Call to provided Azure function
'' failed with status-'BadRequest' and message -
'{\"Message\":\"Please pass 'customerId' on the query string or in the request body\"}'.",
"failureType": "UserError",
"target": "ExecuteFullLoad"
}
设置:

整个设置从一个函数调用开始,以从在线经济平台获取新客户。它将它们写入一个SQL表,从中处理并加载到最终的表中,然后执行一个新的管道。这个过程非常有效。从那里执行以下管道:

正如您所看到的,在ForEach循环尝试执行另一个管道之前,所有这些都可以正常工作,该管道包含一个azure函数,该函数调用一个.NET脚本函数,该函数填充所述仓库(我知道很复杂)。此azure函数需要customerid来检索令牌并将数据加载到仓库中。我试图通过ForEach将这些令牌从InternalCustomerID查找传递到管道和函数中。ForEach实际上可以工作,但失败“因为内部活动失败”

executepipeline任务包含以下设置,其中我试图传递来自foreach循环的参数。流程的这一部分也可以工作,因为它执行两次(在这个测试阶段应该执行两次):

我不知道它是否没有成功地传递参数,或者在将参数添加到azure函数体时失败

子管道(满载)包含以下参数。我不确定是否应该将默认值设置为覆盖,或者该值实际如何工作。我在网上看到的指南没有默认值。

最后是Azure函数的设置。我不确定需要写什么才能正确捕获参数和/或填写什么-如果是关于错误消息的标题或正文。我知道一篇文章没有主体是无法执行的。

如果我手动运行此特定功能(使用portal.azure.com的函数应用程序部分),通过使用以下设置,它可以正常工作:


我查看了您所有的详细问题,我认为问题的关键在于Azure函数请求正文的格式

恐怕这是不对的。根据您的描述,请参见我的以下步骤:

工作流程:

在ForEach活动中,只有一个Azure函数活动:

查找活动的预览数据:

然后是ForEach活动的配置:
@Activity('Lookup1').output.value

Azure函数活动的配置:
@json(concat(“{”name:“,item().name,“}”)

在azure函数中,我只输出输入数据。样本输出如下:

提示:我看到您的步骤是在另一个管道中执行azure函数,并使用执行管道活动(我不知道为什么您必须遵循这些步骤),但我认为这并不重要,因为您只需要关注
主体
格式,如果您可以接受的格式是
JSON
,则可以使用
@JSON(…)
,如果可接受的格式是
String
,则可以使用
@cancat(..)
。此外,您可以从使用
pipeline()


谢谢!成功了!我的问题是azure函数中的主体-不知道我必须这样解析。我打算运行一个管道,因为它应该依次执行4个azure函数,但我会找到另一种方法