gpt4 book ai didi

azure - 在 Azure 数据工厂中根据文件名创建文件夹

转载 作者:行者123 更新时间:2023-12-03 04:58:07 26 4
gpt4 key购买 nike

我需要将一些文件从 ADLS Gen1 位置复制到另一个 ADLS Gen1 位置,但必须根据文件名创建文件夹。

我在源 ADLS 中有如下几个文件:

ABCD_20200914_AB01_Part01.csv.gz
ABCD_20200914_AB02_Part01.csv.gz
ABCD_20200914_AB03_Part01.csv.gz
ABCD_20200914_AB03_Part01.json.gz
ABCD_20200914_AB04_Part01.json.gz
ABCD_20200914_AB04_Part01.csv.gz

场景 1我必须将这些文件复制到目标 ADLS,如下所示,仅使用 csv 文件并从文件名创建文件夹(如果文件夹存在,则复制到该文件夹​​):

AB01-
|-ABCD_20200914_AB01_Part01.csv.gz
AB02-
|-ABCD_20200914_AB02_Part01.csv.gz
AB03-
|-ABCD_20200914_AB03_Part01.csv.gz
AB04-
|-ABCD_20200914_AB04_Part01.csv.gz

场景 2我必须将这些文件复制到目标 ADLS 中,如下所示,仅包含 csv 和 json 文件,并从文件名创建文件夹(如果文件夹存在,则复制到该文件夹​​):

AB01-
|-ABCD_20200914_AB01_Part01.csv.gz
AB02-
|-ABCD_20200914_AB02_Part01.csv.gz
AB03-
|-ABCD_20200914_AB03_Part01.csv.gz
|-ABCD_20200914_AB03_Part01.json.gz
AB04-
|-ABCD_20200914_AB04_Part01.csv.gz
|-ABCD_20200914_AB04_Part01.json.gz

在数据工厂中有什么方法可以实现这一点吗?感谢任何线索!

最佳答案

所以我不确定这是否完全有帮助,但我也遇到过类似的情况,我们有 1 个 zip 文件,我必须将这些文件复制到它们自己的文件夹中。

因此,您可以做的是使用您将使用的数据接收器中的参数,以及您将在其中执行子字符串的变量事件。

下面的工作更多的是针对增量工作,但我认为其中有足够的内容希望能有所帮助。我的工作可以分为三个部分。

enter image description here

第一个 Orange 部分从您要复制的 ADLS gen 1 文件夹中获取最新的文件名日期。

然后它被移动到橙色 block 。在底部,我根据 ADLS gen 1 日期获取最新的文件名,然后执行一个子字符串,取出文件的日期部分。在您的情况下,您也许可以创建一个数组并捕获您需要的所有文件夹名称。

获取文件名 enter image description here

获取子字符串 enter image description here

在顶部,我首先提取该文件并将其解压到测试着陆区。

来源 enter image description here

水槽 enter image description here

然后,我获取该 zip 文件中所有文件的名称,以便在 ForEach 事件中使用它们。这些文件名随后将成为复制事件的文件夹。

从初始着陆区获取文件名: enter image description here

然后我将这些子项从“获取暂存文件列表”传递到 ForEach:

enter image description here

在该 ForEach 事件中,我有一个副本事件。为此我制作了数据集。用于从我们创建的初始着陆区获取文件。对于此示例,我们将其称为“Staging”(请原谅 ms 绘图):

enter image description here

这样做的目的是转到该虚拟文件夹并获取刚刚复制到其中的每个文件。从该 1 个 zip 文件中,我们预计有 5 个文件。

在“接收器”部分中,我所做的是创建一个带有文件夹和文件名参数的新数据集。在该数据集中,我将该数据放入同一容器中,但创建了一个名为“Stage”的新文件夹并将其与项目名称连接起来。我还添加了一个“替换”命令来删除文件名中的“.txt”。

enter image description here

接下来要做的是,无论来自该虚拟暂存的文件名是什么,它都会有一个专门针对每个文件的文件夹名称。根据您的要求,我不确定这是否是您想要做的,但您随时可以修改它以使其更加具体。

对于项目名称,我基本上得到相同的文件名,然后替换“.txt”,连接日期值的名称,然后才添加“.txt”扩展名。否则我就必须在文件名中添加“.txt”。

最后,我创建了一个删除事件,然后用于删除所有文件(我不确定是否已正确设置,因此请随意调整)。

enter image description here

希望上面的描述能让您了解如何使用文件参数。让我知道这是否对您的情况有帮助。

关于azure - 在 Azure 数据工厂中根据文件名创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63882819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com