首页 > 解决方案 > 触发器主体属性的全局参数和在 @triggerbody().folderpath 上使用拆分功能

问题描述

我正在尝试通过事件触发 blob 存储容器 @triggerbody().folderpath 的文件夹路径传递给参数。

我创建了一个名为 folderPath 的管道参数,它等于 @triggerbody().folderpath

在此处输入图像描述

然后我在管道中创建了一个变量作为 BusinessUnit 并使用了变量 @{split(pipeline().parameters.folderPath,'/')[3]}

这将返回“业务单位”,即 BI\DEV\BusinessUnit

在此处输入图像描述

我想要实现的是在其他管道中使用这个folderPath(参数)和BusinessUnit(变量)的能力。但是,我正在努力将 @triggerbody().folderpath 捕获到全局参数中。

此外,还有全局变量。@{split(pipeline().parameters.folderPath,'/')[3]} 给了我作为 BusinessUnit 变量的正确值。

另一种方法是将其作为参数而不是变量。但是,我似乎无法让拆分功能在这里工作。

标签: azureazure-functionsazure-pipelinesazure-data-factoryazure-data-factory-pipeline

解决方案


在 ADF 中,我们有一个全局参数,您可以使用 ADF Studio 中的“管理”选项卡访问该参数,但是这些参数只能在数据工厂中存储常量,这些常量可以由管道在任何表达式中使用。

正如您在下面看到的,我已将全局参数值设置为存储从触发器接收到的值的管道参数。

在此处输入图像描述

反过来,由于这些参数的 ( @pipeline().parameters.folderpath) 范围仅限于它们的管道,直到您在其他管道中有一个具有相同名称和值的参数,这将引发错误!如果您在另一个管道中有相同的参数和值,则无需使用全局参数!

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

解决方法......

使用执行管道活动来调用要在其中使用此数据的另一个管道。

  1. 在父管道中添加参数
  2. 在子管道中添加参数
  3. 现在在选择子管道时将参数从父母传递给孩子。

创建参数...

在此处输入图像描述

从触发器中获取值...

在此处输入图像描述

在参数中使用/设置触发值...

在此处输入图像描述

在另一个管道中创建参数以保存来自父管道的输入...

在此处输入图像描述

执行管道活动中的父管道传递本地参数值..

在此处输入图像描述

根据需要使用接收到的参数....

在此处输入图像描述

您可以类似地使用变量,然后将它们传递给参数。

在此处输入图像描述

另一种方法可能是获取管道参数值并使用 ADF SDK 或 REST API 的 Web 活动,您将其传递给下一个执行管道活动。请参阅参数化执行管道活动


推荐阅读