我有一个在Azure数据工厂上构建的管道。它有:
-
一个"LookUp"任务,它有一个返回列[CountRecs]的SQL查询。此列的值为0或更大。
-
检查此返回值的"if"任务。当[CountRecs]的值>0 时,我想使管道失败
这可能吗?
当IF条件为真([CountRecs]>0(时,您可能会通过使用Web活动来实现这一点,在该Web活动中,Web活动应该调用下面的REST API来取消使用pipelinerunID运行的管道(您可以通过使用动态表达式-@pipeline().RunId
获得该值(
条件的样本动态表达式:@greater(activity('LookupTableRecordCount').output.firstRow.COUNTRECS, 0)
REST API取消管道运行:POSThttps://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/工厂/{factoryName}/pipelineruns/{runId}/取消?api版本=2018-06-01
与Rest API相关的MS文档:ADF管道运行-取消
另一种可能的方法是在您的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
希望这能有所帮助。
作为一种破解解决方案,您可以创建一个;设置变量";如果满足某个条件,则会被零除的活动。我不喜欢它,但它很管用。
@string(
div(
1
, if(
greater( int(variables('date_diff')), 100 )
, 0
, 1
)
)
)