如何在Azure Data Factory复制活动中缺少输入blob时避免失败

时间:2016-11-17 12:22:50

标签: azure azure-storage-blobs azure-data-factory

我有一个包含三个活动的管道:  1.从外部网站下载文件并将其存储在blob存储(自定义活动)中  2.将数据从blob复制到Azure SQL DB(复制活动)  3.删除blob文件(自定义活动)

文件应每月下载一次,但我不知道哪一天可用,所以我已安排管道每天运行一次。如果该文件可用,则下载该文件。活动#1工作正常,但如果没有输入文件,活动#2会失败。有没有办法避免失败的结果,因为它是预期的结果?

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。根据我的理解,避免失败的唯一方法是创建一个空白的blob文件。复制活动将不再失败,它将不会复制任何数据,因为它是空白的。我已经用天蓝色的数据工厂PM证实了这一点,因为我说我遇到了同样的问题。

希望这有帮助。

答案 1 :(得分:0)

有一种方法可以通过添加策略自定义代码来处理Azure数据工厂版本1中的这种情况。但是我在ADF v2中试过并且没有用。

    "policy": {
        "validation": {
            "minimumSizeMB": 0.01
        }
    }

答案 2 :(得分:0)

我成功尝试的一种方法是在复制活动之前添加 Get Metadata activity

在 GetMetadata 活动中,您可以添加相同的数据集,在字段列表中,您可以添加“Exists”。您可以在 IF-Else 活动中使用 'getmetadata' 的响应,条件为 '@bool(activity('GetMetadataActivityName').output.exists)' 如果 blob 存在,即 If-else 活动的真实部分,您可以在那里添加 Copy 活动。您可以忽略 If-else 的 else 部分。

Sample pipeline