我希望能够从"执行管道活动"中获取自定义输出。在执行调用的管道期间,我使用"设置变量"活动捕获变量中的一些信息。我希望能够在主管道中使用该值。
我知道主管道可以使用"@activity('InvokedPipeline'(.output"读取调用的管道的名称和runId,但这些是唯一可用的属性。
我有可调用的管道,因为它可以配置为由多个其他管道使用,假设我们可以从中获取输出。它目前由8项活动组成;我不想仅仅因为我们无法从调用的管道获取输出而不得不跨多个管道复制它们。
参考:执行管道活动
[
{
"name": "MasterPipeline",
"type": "Microsoft.DataFactory/factories/pipelines"
"properties": {
"description": "Uses the results of the invoked pipeline to do some further processing",
"activities": [
{
"name": "ExecuteChildPipeline",
"description": "Executes the child pipeline to get some value.",
"type": "ExecutePipeline",
"dependsOn": [],
"userProperties": [],
"typeProperties": {
"pipeline": {
"referenceName": "InvokedPipeline",
"type": "PipelineReference"
},
"waitOnCompletion": true
}
},
{
"name": "UseVariableFromInvokedPipeline",
"description": "Uses the variable returned from the invoked pipeline.",
"type": "Copy",
"dependsOn": [
{
"activity": "ExecuteChildPipeline",
"dependencyConditions": [
"Succeeded"
]
}
]
}
],
"parameters": {},
"variables": {}
}
},
{
"name": "InvokedPipeline",
"type": "Microsoft.DataFactory/factories/pipelines"
"properties": {
"description": "The child pipeline that makes some HTTP calls, gets some metadata, and sets a variable.",
"activities": [
{
"name": "SetMyVariable",
"description": "Sets a variable after some processing from other activities.",
"type": "SetVariable",
"dependsOn": [
{
"activity": "ProcessingActivity",
"dependencyConditions": [
"Succeeded"
]
}
],
"userProperties": [],
"typeProperties": {
"variableName": "MyVariable",
"value": {
"value": "@activity('ProcessingActivity').output",
"type": "Expression"
}
}
}
],
"parameters": {},
"variables": {
"MyVariable": {
"type": "String"
}
}
}
}
]
你好希瑟,感谢您的询问。 自定义输出目前不是内置功能。 可以在 Azure 反馈论坛中请求/对该功能投赞成票。 目前,我有两种解决方法。
利用调用管道的runID
,我们可以查询 REST API(使用 Web 活动(以获取活动运行日志,并从那里查询活动输出。 但是,在进行查询之前,必须进行身份验证。 用于获取管道活动的 REST 调用
对于身份验证,我建议使用 Web 活动来获取 oauth2 令牌。 网址将https://login.microsoftonline.com/tenantid/oauth2/token
. 标题"Content-Type": "application/x-www-form-urlencoded"
和正文"grant_type=client_credentials&client_id=xxxx&client_secret=xxxx&resource=https://management.azure.com/"
。由于此请求要获取凭据,因此此请求的"身份验证"设置类型为"无"。这些凭据对应于通过 Azure Active Directory>App 注册创建的应用。不要忘记在数据访问控制 (IAM( 中分配应用 RBAC。
另一种解决方法是让子管道写入其输出。 它可以写入数据库表,也可以写入 Blob(我将数据工厂变量传递给写入 Blob 存储的逻辑应用(,也可以写入所选的其他内容。 由于您计划将子管道用于许多不同的父管道,因此我建议向子管道传递一个参数,用于将输出标识给父管道。 这可能意味着 Blob 名称,或将父运行 ID 写入 SQL 表。 这样,父管道就知道从何处查找以获取输出。
刚刚与ADF团队聊天,得到回应
[晚上 10:11] 马克·克罗默 Brajesh Jaishwal:执行管道活动的自定义输出有什么计划吗? 是的,这项工作是在工程工作计划中