azure - 触发器主体属性的全局参数和在 @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 变量的正确值。
另一种方法是将其作为参数而不是变量。但是,我似乎无法让拆分功能在这里工作。
解决方案
在 ADF 中,我们有一个全局参数,您可以使用 ADF Studio 中的“管理”选项卡访问该参数,但是这些参数只能在数据工厂中存储常量,这些常量可以由管道在任何表达式中使用。
正如您在下面看到的,我已将全局参数值设置为存储从触发器接收到的值的管道参数。
反过来,由于这些参数的 ( @pipeline().parameters.folderpath
) 范围仅限于它们的管道,直到您在其他管道中有一个具有相同名称和值的参数,这将引发错误!如果您在另一个管道中有相同的参数和值,则无需使用全局参数!
解决方法......
使用执行管道活动来调用要在其中使用此数据的另一个管道。
- 在父管道中添加参数
- 在子管道中添加参数
- 现在在选择子管道时将参数从父母传递给孩子。
创建参数...
从触发器中获取值...
在参数中使用/设置触发值...
在另一个管道中创建参数以保存来自父管道的输入...
从执行管道活动中的父管道传递本地参数值..
根据需要使用接收到的参数....
您可以类似地使用变量,然后将它们传递给参数。
另一种方法可能是获取管道参数值并使用 ADF SDK 或 REST API 的 Web 活动,您将其传递给下一个执行管道活动。请参阅参数化执行管道活动
推荐阅读
- elasticsearch - 需要一个 Elasticsearch 查询,将结果限制为在一个字段中具有相同值但在另一个字段中具有不同值的结果
- scala - 如何多次重复等待?
- c - 为什么在将整数读入 C 中的数组时出现分段错误?
- module - 从外部文件使用 Fortran 模块
- typescript - 如何知道何时创建接口与直接在 Typescript 的函数签名中定义对象?
- c# - PowerPoint 通过 VBA 或 C# 更改墨水颜色(或活动笔)
- java - spring web 和 spring 批处理兼容性?
- r - 如何识别和删除我不想要的曲线?
- matplotlib - set_xlim() 不适用于文本标签
- go - 在 Go 中使用测试依赖项但防止导出它们的最佳方法