Azure data factory 在azure data lake上处理多个文件

Azure data factory 在azure data lake上处理多个文件,azure-data-factory,azure-data-lake,u-sql,Azure Data Factory,Azure Data Lake,U Sql,假设azure data lake store上有两个文件集A和B /A/Year/ /A/Month/Day/Month/ /A/Year/Month/Day/A_Year_Month_Day_Hour /B/Year/ /B/Month/Day/Month/ /B/Year/Month/Day/B_Year_Month_Day_Hour 我想得到一些值(比如说一个实体的DateCreated)并使用这些值为B set生成文件路径 我怎样才能做到这一点 有些想法,但我不确定。 1.从列表中

假设azure data lake store上有两个文件集A和B

/A/Year/
/A/Month/Day/Month/
/A/Year/Month/Day/A_Year_Month_Day_Hour

/B/Year/
/B/Month/Day/Month/
/B/Year/Month/Day/B_Year_Month_Day_Hour
我想得到一些值(比如说一个实体的DateCreated)并使用这些值为B set生成文件路径

我怎样才能做到这一点

有些想法,但我不确定。 1.从列表中选择值 2.存储在某些存储上(azure数据湖或azure sql数据库)。 3.构建一个逗号分隔的字符串pStr 4.通过数据工厂将pStr传递给存储过程,该存储过程生成带模式的文件路径

编辑

根据@mabasile\u MSFT的回答

这是我现在拥有的。 第一个生成json文件的USQL脚本,如下所示

{
FileSet:["/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__12",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__13",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__14",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__15"]
}
ADF管道,其中包含查找和第二个USQL脚本。 Lookup读取这个json文件文件集属性,据我所知,我需要以某种方式将这个json数组传递给第二个脚本,对吗? 但usql编译器生成字符串变量,如

DECLARE@fileSet string=“[”/Data/SomeEntity/2018/3/5/SomeEntity\u 2018\u 3\u 5\u 12”, “/Data/SomeEntity/2018/3/5/SomeEntity\u 2018\u 3\u 5\u 13”, “/Data/SomeEntity/2018/3/5/SomeEntity\u 2018\u 3\u 5\u 14”, “/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5_15”]”


之后脚本甚至没有编译。

尝试此根链接,它可以帮助您开始了解所有关于u-sql的内容:

有关您的问题的有用链接:

您将需要两个U-SQL作业,但您可以使用ADF查找活动来读取文件集

您的第一个ADLA作业应该从中提取数据,构建文件集,并在中

然后在ADF中使用一个函数从Azure存储中的JSON文件中读取文件集名称

然后在ADF中定义第二个U-SQL活动。将文件集设置为U-SQL活动中的一个参数(如果您使用的是联机UI,则在“脚本”>“高级”下),该值类似于
@{activity('MyLookupActivity').output.firstRow.fileset}
(请参阅上面的查找活动文档)

ADF将在U-SQL脚本顶部以DECLARE语句的形式写入U-SQL参数。如果您还想将默认值编码到脚本中,请使用DECLARE EXTERNAL-这将被ADF写入的DECLARE语句覆盖,因此不会导致错误


我希望这会有所帮助,如果您还有其他问题,请告诉我

谢谢你的更新。我目前正在研究是否可以通过查找活动传递一组参数,因为使用ForEach循环迭代查找活动会创建太多的U-SQL作业。在那之前,你会用一本书吗?例如,如果您总是将新文件放在一个不同的文件夹中,并希望读取该文件夹的全部内容,则可以使用“/Data/SomeEntity/2018/3/5/{*}”从该文件夹中选择所有文件。您想知道如何解决此问题吗?