如何基于IF任务使Azure Data Factory管道失败

时间:2020-03-16 13:56:02

标签: azure-data-factory

我有一个基于Azure数据工厂的管道。它具有:

  1. 具有SQL查询的“ LookUp”任务,该查询返回列[CountRecs]。该列的值为0或更大。

  2. “ if”任务来检查此返回值。当[CountRecs]> 0

  3. 的值时,我想使管道失败

这可能吗?

2 个答案:

答案 0 :(得分:2)

如果您的IF条件为true([CountRecs]> 0),则可以通过进行Web活动来实现此目的,其中,Web活动应调用以下REST API来取消使用pipelinerunID运行的管道(您可以获取使用动态表达式-testOnly *CalculatorSpec -- -z "adds two numbers"

条件:@pipeline().RunId

的示例动态表达式

REST API取消管道运行:POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelineruns/{runId}/cancel?api-version=2018-06-01

与Rest API相关的MS Doc:ADF Pipeline Runs - Cancel

另一种可能的方法是在Web活动中使用无效的URL,从而使Web活动依次失败,从而使IfCondition活动失败,从而导致管道失败。

在其他ADF用户建议的ADF用户语音论坛中,存在与相同要求相关的现有功能请求。我建议您对此反馈意见进行投票和/或评论,这将有助于增加功能请求实施的优先级。

与该要求有关的ADF用户语音反馈:https://feedback.azure.com/forums/270578-data-factory/suggestions/38143873-a-new-activity-for-cancelling-the-pipeline-executi

希望这会有所帮助。

答案 1 :(得分:0)

作为一种黑客解决方案,您可以创建一个“设置变量”活动,如果满足某个条件,该活动会导致除以零。我不喜欢它,但它有效。

@string( 
  div(
    1 
  , if(
      greater( int(variables('date_diff')), 100 )
     , 0
     , 1
    )
  ) 
)