【问题标题】:How to define filename yyyyMMdd<anycharacter>.zip for input dataset (Blob Storage)如何为输入数据集(Blob 存储)定义文件名 yyyyMMdd<anycharacter>.zip
【发布时间】:2018-05-23 09:14:40
【问题描述】:

我为该项目工作:将 Blob 存储 中的 zip 文件中的数据导入 SQL 数据仓库。这些文件位于 Blob 存储中,如下所示:

erp/lrc/Vendor_20171209125600.zip erp/lrc/Vendor_20171209031200.zip erp/lrc/Sale_20171209081200.zip erp/lrc/Sale_20171209081200.zip

erp:根容器,lrc:固定文件夹

Vendor_yyyyMMddHHmmss.zip 被导入到 Vendor 表中。 Sale_yyyyMMddHHmmss.zip 被导入到 Sale 表中。

我为供应商创建了一个管道,为销售创建了一个管道。

我的问题是:有没有办法在输入数据集中定义文件名,例如 Vendor_{custom}*.zip with {custom}: yyyyMMddHHmm; *:任何字符覆盖文件名中的第二部分(ss)?如下例所示。

            "fileName": "Vendor_{custom}*.zip",
            "folderPath": "erp/lrc",
            "partitionedBy": [
                {
                    "name": "custom",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyyMMdd"
                    }
                }
            ],

还有什么方法可以删除 ADF 已经读取的文件? 如果您需要更多信息,请随时问我。我真的需要这些东西的解决方案。看了很多文章却找不到出路。

【问题讨论】:

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


    【解决方案1】:

    由于您还想在 ADF 读取文件后从 blob 存储中删除文件,我强烈建议您制作自定义 ADF 管道。原因是 ADF v1 没有用于删除已读取文件的开箱即用解决方案。因此,您还可以重命名代码中的文件(以您希望的任何方式),有很大的可能性。

    为了实现这一点,你需要在你的C#代码中实现IDotNetActivity接口,更准确地说

    public IDictionary<string, string> Execute(IEnumerable<LinkedService> linkedServices, IEnumerable<Dataset> datasets, Activity activity, IActivityLogger logger)
    

    方法。在这里,您可以根据需要通过文件掩码获取任何文件。您可以删除文件、将数据插入数据库、转换数据、重命名文件等...

    【讨论】:

    • 对于我的第一个问题:“有没有办法在输入数据集中定义文件名,例如 Vendor_{custom}*.zip 和 {custom}: yyyyMMddHHmm; *: 覆盖第二部分的任何字符 (ss)在文件名中?=> 你对我有什么建议吗。顺便说一句,谢谢你的解决方案删除 blob 存储中的文件,我会试试的。
    猜你喜欢
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 2013-09-22
    • 2020-12-16
    • 2018-08-12
    • 2021-08-11
    • 2020-02-14
    相关资源
    最近更新 更多