【问题标题】:How to use Wildcard Filenames in Azure Data Factory SFTP?如何在 Azure 数据工厂 SFTP 中使用通配符文件名?
【发布时间】:2020-08-31 12:31:18
【问题描述】:

我正在使用 Data Factory V2 并创建了一个位于第三方 SFTP 中的数据集。 SFTP 使用 SSH 密钥和密码。我成功地使用密钥和密码创建了与 SFTP 的连接。我现在可以在数据工厂中浏览 SFTP,查看服务上的唯一文件夹并查看该文件夹中的所有 TSV 文件。

Azure 数据工厂自然会询问要导入的文件的位置。我使用“浏览”选项来选择我需要的文件夹,而不是文件。我想对文件使用通配符。

当我选择在文件夹之后执行 *.tsv 选项时,我在预览数据时遇到错误。当我返回并指定文件名时,我可以预览数据。所以,我知道如果我不使用通配符,Azure 可以连接、读取和预览数据。

查看 Azure 的文档,我发现他们建议不要在数据集属性中指定文件夹或通配符。我跳过它并直接进入新的管道。使用 Copy,我将复制活动设置为使用 SFTP 数据集,指定通配符文件夹名称“MyFolder*”和通配符文件名,如文档中的“*.tsv”。

我收到错误消息,提示我在发布时需要在数据集中指定文件夹和通配符。因此,我返回数据集,指定文件夹和 *.tsv 作为通配符。

在所有情况下:这是我在预览管道或数据集中的数据时收到的错误。

找不到 SFTP 路径“/MyFolder/*.tsv”。请检查路径是否存在。如果您配置的路径不以“/”开头,请注意它是给定用户的默认文件夹“”下的相对路径。没有这样的文件 。

为什么这么复杂?我在这里想念什么?数据集可以连接并查看单个文件:

/MyFolder/MyFile_20200104.tsv

但是当你设置它时失败

/MyFolder/*.tsv

【问题讨论】:

    标签: azure azure-data-factory-2


    【解决方案1】:

    我经常使用 Copy 从 SFTP 源中提取数据。您在问题中提到文档说不要在数据集中指定通配符,但您的示例就是这样做的。相反,您应该在 Copy Activity Source 设置中指定它们。

    在我的实现中,DataSet 没有参数,也没有在 Directory 和 File 框中指定值:

    在“复制”活动的“源”选项卡中,我指定了通配符值。这些可以是文本、参数、变量或表达式。我在下面突出显示了我最常使用的选项。

    【讨论】:

    • 为了清楚起见,我一开始没有在数据集中指定通配符或文件夹。当您移动到管道部分、添加复制活动并在通配符文件夹路径中添加 MyFolder* 和在通配符文件名中添加 *.tsv 时,将文件夹和通配符添加到数据集时会出错。我尝试了两种方法,但我没有像你建议的那样尝试过 @{variables 选项。我现在就试试。
    • 当我采用这种方法时,我得到“数据集位置是一个文件夹,复制数据1需要通配符文件名”显然有一个通配符文件夹名和通配符文件名(例如:“*. tsv") 在我的领域。我不知道为什么会出错。
    • 我找到了解决方案。没有看到 Azure DF 有一个“复制数据”选项,而不是管道和数据集。复制数据向导基本上对我有用。它将两个数据集创建为二进制文件,而不是像我一样的分隔文件。它创建的管道虽然没有使用通配符,这很奇怪,但它现在可以正常复制数据了。
    • 可以跳过一个文件错误,例如我在文件夹中有5个文件,但是1个文件有错误文件,比如列数与其他4个文件不同?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2016-05-07
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多