【问题标题】:Clear Folder before write Sink Azure Data Factory "The specified path does not exist"在写入 Sink Azure 数据工厂之前清除文件夹\“指定的路径不存在\”
【发布时间】:2022-09-27 17:13:14
【问题描述】:

我有一个已聚合到镶木地板的 Azure Data Lake Storage Gen2:

从输出路径 /output/partitions 读取的数据集 source2 写入与源 2 /output/partitions 相同路径的数据集接收器

当我在接收器中选择清除文件夹时,我得到

\"作业因原因失败:在 Sink \'sink1\':操作失败: \\\"指定的路径不存在。\\\", 404, HEAD,

它还说要在下面运行以清除缓存:

\'刷新表表名\'

它写入所有其他分区,但有没有办法读取相同的 ADLS Gen2 文件夹并覆盖它

    标签: azure-data-factory


    【解决方案1】:

    当我检查清除文件夹选项时,我重现了这个并得到了同样的错误。

    我尝试了其他选项并观察到创建了新的镶木地板。因此,要删除现有的镶木地板,您可以使用以下方法。

    想法是在数据流之后,使用删除活动在最后修改日期之前删除旧文件。

    要过滤掉旧文件,请使用 utcNow() 函数。旧文件的最后修改日期小于 utcNow()。

    首先将@utcNow() 值存储在数据流之前的变量中。

    这是我的管道图片:

    在数据流之后,使用 Get Meta data 活动获取所有镶木地板(旧+新)文件列表。

    将此列表提供给 ForEach 并在 ForEach 内部为 lastModifieddate 使用另一个 GetMeta 数据。为此,请使用另一个带参数的镶木地板数据集。

    现在将此 Last modified 日期与 if 条件下的变量进行比较。如果结果为真,则在 if 的 True 活动中使用删除活动。

    如果条件:

    @greater(variables('timebeforedf'),activity('Get Metadata2').output.lastModified)
    

    在 Delete 活动中,在 True 活动中提供 @item().name

    执行后我的结果镶木地板文件:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-22
      • 2013-04-05
      • 2013-03-21
      • 2021-12-03
      • 2022-12-09
      • 2021-10-21
      • 2018-12-12
      • 2021-02-16
      相关资源
      最近更新 更多