ADF - 内置复制任务以根据变量创建文件夹

ADF - built-in copy task to create folders based on variables

我正在使用 Azure 数据工厂的内置复制任务(按每日计划设置)使用内置复制工具将数据复制到 Azure Data Lake Storage Gen2 中的容器中。对于我的目的地,我正在尝试使用日期变量为数据创建文件夹结构。在我生成的管道中,公式如下所示:

Dir1/Dir2/@{formatDateTime(pipeline().parameters.windowStart,'yyyy')}/@{formatDateTime(pipeline().parameters.windowStart,'MM')}/@{formatDateTime(pipeline().parameters.windowStart,'dd')}

不幸的是,这是一个错误:

Operation on target ForEach_h33 failed: Activity failed because an inner activity failed; Inner activity name: Copy_h33, Error: The function 'formatDateTime' expects its first parameter to be of type string. The provided value is of type 'Null'.

我创建的所有内容都是由该工具生成的,我按照该工具使用的文件夹路径是建议的:

Dir1/Dir2/{year}/{month}/{day}(然后我能够设置每个变量的格式 - 例如,yyyy、MM、dd,这表明该工具理解我的内容正在做。

我唯一能想到的是,容器中的文件夹结构仅包含 Dir1/Dir2/ - 我希望在复制任务运行时创建子目录。

我还要补充一点,如果我只使用目录 Dir1/Dir2/,一切都运行良好 - 所以问题出在我的变量上。

您的 built-in 复制任务没有任何问题。当它在预定的触发时间 运行ning 时,它会给出完美的结果。

但是如果你想运行手动触发,就会报上面的错误。

当你运行手动触发时你必须自己给windowStart参数值。上面说的是值是null.

将值设为 MM/DD/YYYY。计划触发器在每天 运行 秒时自动采用此值。但是在手动触发中我们必须指定这个值。

然后点击确定。现在,你不会得到这样的错误,你可以创建 year/month/day 格式的文件夹。