【问题标题】:Coalescing Azure Data Factory activity outputs合并 Azure 数据工厂活动输出
【发布时间】:2020-12-07 19:39:46
【问题描述】:

TL;DR: 我的输出值不为null,但不存在,并且那里的coalesce 不起作用。

好奇是否有人发现合并活动的输出参数。我知道有一个实际的表达方式“Coalesce”,但这并没有达到我想要的效果。

当活动运行时,它会返回包含 PipelineName、RunID、Status 和 Error 等项目的常规响应 json。当状态为“Succeeded”时,错误为“Null”,而当状态为“Failed”时,错误为“failureType”、“message”和“statuscode”之类的另一个 json。对于我的问题范围,我想在值存在时记录 Error.message。所以基本上我有一个通用的日志管道,我会将参数传递给日志,例如 @activity('Execute Pipeline1')[0].Status@activity('Execute Pipeline1')[0].Error.message

但是,当我像这样映射时,成功时,Error.message 不存在。我的选项看起来像创建管道的“成功运行”和“失败运行”执行,或者只是记录错误 json。

有人知道合并这些值的任何表达方式吗?

【问题讨论】:

    标签: azure azure-data-factory


    【解决方案1】:

    看来Contains 函数可以帮到你。你可以试试这样的表达方式:

    @if(contains(activity('Execute Pipeline1')[0],'Error'),activity('Execute Pipeline1')[0].Error.message,'no error')
    

    如果您只想在活动失败时记录信息,您可以创建一个 If Condition 活动。然后使用这个contains(activity('Execute Pipeline1')[0],'Error') 来检查它是否失败并记录错误信息,以防为真。

    【讨论】:

    • 啊完美,让我今天下午试试。
    • 这几乎是答案。当实现这一点时,当 activity.Error 为 NULL 时包含失败。因为它需要字典。但我认为这是正确的道路。
    • 更具体地说,上述语句“无法评估,因为无法选择属性'message'。”
    • 答案是“@if(empty(activity('Execute Pipeline1').Error), '', activity('Execute Pipeline1').Error.message)”。 [0] 取决于您正在评估的内容。
    • 很高兴听到您的回答正确。恭喜!
    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2020-05-18
    • 2021-10-01
    • 2021-12-17
    相关资源
    最近更新 更多