【问题标题】:Rename Blob folders with Copy Foreach loops?使用 Copy Foreach 循环重命名 Blob 文件夹?
【发布时间】:2021-10-23 22:34:50
【问题描述】:

我的 blob 中有一个 parquet 文件层次结构,存储为

yyyy/MM/dd/yyyy_MM_dd_hh_mm_ss_[来源].parquet

dd 文件夹在 24 小时内包含多个文件,至少每小时一个。

跨文件夹示例:

2018/04/01/2018_04_01_06_37_14_ABCXYZ01.Parquet

2019/10/03/2019_10_03_21_52_34_ABCXYZ01.parquet

2020/08/23/2020_08_23_03_00_13_ABCXYZ01.parquet

我希望文件夹结构在复制后看起来像这样。

年=2019/月=04/日=01/2019_04_01_00_00_00_ABCXYZ01.Parquet

我可能需要复制所有 8GB 的​​这些文件并进行迭代,但动态内容代码让我感到厌烦。

任何有关方法的帮助都会很棒。如果我不需要迭代,我可以使用复制活动和复制行为吗?

谢谢

【问题讨论】:

    标签: regex azure-data-factory azure-data-factory-2 azure-data-flow


    【解决方案1】:

    您需要在接收器数据集中动态生成文件夹路径。请检查以下实现以获得更好的想法。

    Step1:GetMetaData 活动从源文件夹动态获取文件名。 enter image description here

    Step2:ForEach 活动迭代每个文件,在 ForEach 活动中,我动态生成目标路径格式并将其存储到 newPath 变量中。 Set 变量中使用的表达式: Expression ForEachSetVariable

    Step3:在 ForEach Activity 内部,使用动态参数复制 Activity Sink 数据集以采用新的 Path。 ForEachCopy

    【讨论】:

    • 谢谢,很抱歉花了这么长时间来测试这个。它的工作原理与描述的完全一样
    • 我想我有一个问题。同一个文件被一遍又一遍地复制,但文件名不同@ShaikMaheer-MSFT
    • 我想我发现了我的方式的错误。我在源文件名中有一个 *.Parquet 语句,而不是 item().name。
    • 我创建了一个额外的变量 CurrentPath。 @{split(item().name,'')[0]}/@{split(item().name,'')[1]}/@{split(item() .name,'_')[2]}/ 所以我可以告诉源是在层次结构中查找文件,我希望通配符查看月份而不是 /2021/**/* 并发集到 5 和 ForeachLoop 在 20 分批处理。我从 20210101 天开始体验包含 20210102 文件的文件有什么想法吗?
    猜你喜欢
    • 2019-02-09
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多