如何强制将管道的状态设置为失败

How to force to set Pipelines' status to failed

我正在使用复制数据。 当有一些数据错误时。我会将它们导出到一个 blob。 但在这种情况下,Pipelines 的状态仍然是 Succeeded。我想将其设置为假。可能吗?

When there is some data error.

这取决于你在这里提到的错误。

1.If 你的意思是它是常见的不兼容或不匹配错误,ADF 在 Copy Activity 中支持名为 Fault tolerance 的内置功能,它支持以下 3 种情况:

  • 源数据类型与接收器本机不兼容 类型。
  • 源和接收器之间的列数不匹配。
  • 写入时主键冲突 SQL Server/Azure SQL Database/Azure 宇宙数据库。

如果您配置记录不兼容的行,您可以在这个路径找到日志文件:https://[your-blob-account].blob.core.windows.net/[path-if-configured]/[copy-activity-run-id]/[auto-generated-GUID].csv.

如果你想在出现任何错误时立即中止作业,你可以设置如下:

请看这个案例:Fault tolerance and log the incompatible rows in Azure Blob storage

2.If你说的是你自己的数据错误逻辑,可能是一些业务逻辑。恐怕 ADF 无法为您检测到这一点,尽管我认为这也是一项常见要求。但是,您可以按照这种情况 (How to control data failures in Azure Data Factory Pipelines?) 进行变通。主要思想是使用自定义 activity 在执行复制 activity 之前转移坏行。在自定义 activity 中,您可以根据需要使用 .net SDK 将坏行上传到 Azure Blob Storage。


更新:

由于要记录所有不兼容的行并同时执行作业失败,恐怕不能直接在副本activity中实现。

不过,我想到了一个想法,可以在Copy Activity之后使用If Condition activity来判断输出是否包含rowsSkipped。如果是,输出False,那么你就会知道有一些跳过的数据,这样你就可以在blob存储中查看它们。