使用活动输出作为步骤名称以获取 ADF 中的附加信息

问题描述 投票:0回答:1

我正在尝试捕获 Azure 数据工厂中的错误数据。当任何活动发生错误时,我想捕获错误信息并将其传递到另一个管道中进行处理和存储。例如,我通过这个动态表达式捕获错误消息:@activity('Log_Execution').Error.message 以及活动名称: @activity('Log_Execution').Error.target.

我正在尝试找到一种将这两者结合起来的方法,以便我可以传入表达式以将活动名称放入表达式中以获取错误消息:@activity(activity('Log_Execution').Error.target).Error .message,其中活动内部转换为“Log_Execution”。但是我收到错误代码:类子句中只允许使用单个字符串文字参数。

我尝试在设置变量活动中从 Error.Target 输出设置活动名称,然后将其用作变量的输入,如下所示 @string(activity(variables('error_step')).Error.errorCode) 但我得到同样的错误。

有没有办法解决这个问题,以便我可以使用 Error.Target 表达式动态获取错误信息。谢谢!

azure azure-data-factory
1个回答
0
投票

@activity(activity('Log_Execution').Error.target).Error.message

上述表达式无效,因为 ADF 目前不支持活动名称的嵌套动态表达式,并且活动名称必须是用单引号括起来的静态字符串。

有没有办法解决这个问题,以便我可以使用 Error.Target 表达式动态获取错误信息。

使用

Error.Target
您可以获取活动名称,但在表达式
activity('<activity name>').Error.target
本身中,您需要给出活动名称。 要动态获取失败的活动名称和失败消息,需要使用父管道

使用

Execute pipeline
活动从父管道调用您的管道。在此,检查等待完成

enter image description here

每当子管道中的任何活动失败时,父管道中的执行管道活动也会失败,并且执行管道活动的错误消息将存储失败的活动名称和失败的错误消息

例如,我在子管道中生成一个错误,如下所示。

enter image description here

当您从父级执行上述子管道时,执行管道活动将给出如下错误消息。

enter image description here

在这里,您可以看到它给出的失败活动名称。您可以获取此活动名称并将其从该父管道传递到下一个管道。

要获取名称,请在执行管道失败时创建字符串集变量活动并使用以下表达式。

失败活动名称的表达式:

@split(split(activity('Execute Pipeline1').Error.Message,'target ')[1],' failed:')[0]

enter image description here

同样,错误消息的表达式:

@split(activity('Execute Pipeline1').Error.message,'failed: ')[1]

调试父管道的输出:

enter image description here

enter image description here

您可以根据您的要求将这些变量传递到下一个管道。

© www.soinside.com 2019 - 2024. All rights reserved.