gpt4 book ai didi

Azure数据工厂: output dataset file name from input dataset folder name

转载 作者:行者123 更新时间:2023-12-03 01:25:46 27 4
gpt4 key购买 nike

我正在尝试解决 Azure 数据工厂中的以下场景:

我在 Azure Blob 存储中有大量文件夹。每个文件夹包含不同数量的 parquet 格式的文件。文件夹名称包含生成该文件夹中包含的数据的日期,如下所示:DATE=2021-01-01。我需要过滤文件并将它们以分隔格式保存到另一个容器中,并且每个文件的文件名中应具有源文件夹名称中指示的日期。

所以当我的输入看起来像这样时......

DATE=2021-01-01/
data-file-001.parquet
data-file-002.parquet
data-file-003.parquet
DATE=2021-01-02/
data-file-001.parquet
data-file-002.parquet

...我的输出应该如下所示:

output-data/
data_2021-01-01_1.csv
data_2021-01-01_2.csv
data_2021-01-01_3.csv
data_2021-01-02_1.csv
data_2021-01-02_2.csv

从子文件夹中读取文件、过滤它们并保存它们很容易。当我尝试动态设置输出数据集文件名时,问题就开始了。我可以使用“获取元数据”事件获取文件夹名称,然后可以使用 ForEach 事件将它们设置为变量。但是,我不知道如何使用此变量来过滤数据流接收器数据集。

最佳答案

更新:
我的获取元数据1事件,将容器输入设置为:
enter image description here设置容器input如下:
enter image description here我的调试信息如下: enter image description here

我想我已经找到了解决方案。例如,我使用的是 csv 文件。
我的输入看起来像这样

container:input 
2021-01-01/
data-file-001.csv
data-file-002.csv
data-file-003.csv
2021-01-02/
data-file-001.csv
data-file-002.csv

我的调试结果如下:
enter image description here

enter image description here

  1. 使用 Get Metadata1 事件获取文件夹列表,然后使用 ForEach1 事件迭代此列表。
    enter image description here

  2. ForEach1 事件中,我们现在使用数据流来移动数据。
    enter image description here

  3. 将源数据集设置到容器并声明参数FolderNameenter image description here

  4. 然后将动态内容@dataset().FolderName添加到源数据服务器。 enter image description here

  5. 回到ForEach1事件,我们可以将动态内容@item().name添加到参数FolderNameenter image description here

  6. 在选项卡中键入File_Name。它将文件名存储为一列,例如。 /2021-01-01/data-file-001.csventer image description here

  7. 然后我们可以通过DerivedColumn1处理该列以获取我们想要的文件名。添加表达式 concat('data_',substring(File_Name,2,10),'_',split(File_Name,'-')[5])enter image description here

  8. 在接收器的设置中,我们可以选择将文件命名为列数据File_Nameenter image description here

仅此而已。

关于Azure数据工厂: output dataset file name from input dataset folder name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66346129/

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