【问题标题】:Azure Data Factory Wildcard CharactersAzure 数据工厂通配符
【发布时间】:2019-06-18 10:48:35
【问题描述】:

我有一个 sftp 位置,通常放置 .csv 文件,我们使用 ADF 复制活动处理或提取那里的文件。当没有文件存在并且我们给出确切的文件名并运行管道时,它会按预期失败。但是,当我们给出一个通配符(例如 abc*.csv)并在 sftp 位置中不存在文件的情况下运行管道时,复制活动会通过,尽管写入的行数为 0。谁能告诉我为什么会发生这种情况。我们正在使用 Adf v2。

【问题讨论】:

  • 我猜是因为 * 表示(匹配零个或多个字符)?在这种情况下,它匹配零? docs.microsoft.com/en-us/azure/data-factory/…
  • 那么,当这个匹配为零时,为什么它没有失败?而给出确切的文件名也匹配零并且它失败了?
  • 我明白了,我假设如果通配符中的任何内容都不匹配模式 (abc*.csv),您希望 CopyActivity 失败?您提到的第一个示例是通过对文件名进行硬编码来实现的,但是当使用通配符时,它会变成一个表达式,即如果什么都不满足,那么什么都不会复制而不会使活动失败,您的用例是什么?

标签: azure sftp azure-data-factory-2


【解决方案1】:

这个问题的答案是微妙的。区别如下:

当您提供准确的文件名,但该文件不存在时,数据工厂会尝试获取它,但请求会返回“找不到文件”错误。这被传递给活动,并被识别为失败。

当您提供通配符时,这实际上是在询问“给我一份符合此模式的文件列表,然后复制它们中的每一个”。当没有与该模式匹配的文件时,结果是一个空列表。由于列表长度为 0,因此不会发出获取任何文件的请求,这意味着不会出现“找不到文件”错误。

这是我使用数据工厂的经验得出的结论。我不是开发团队的成员。

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2020-08-31
    • 2017-08-21
    • 2015-02-21
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多