不能将"在"参数中传递给u-sql以使用文件夹中的所有文件。
在我的ADF管道中,我有以下参数设置:
"parameters": {
"in": "$$Text.Format('stag/input/{0:yyyy}/{0:MM}/{0:dd}/*.csv', SliceStart)",
"out": "$$Text.Format('stag/output/{0:yyyy}/{0:MM}/{0:dd}/summary.csv"
}
和U-SQL脚本进行提取:
@couponlog =
EXTRACT
Id int,
[Other columns here]
FROM @in
USING Extractors.Csv(skipFirstNRows:1);
但是我在执行过程中找不到文件。文件存在于数据湖中,但我不知道将其作为参数传递的正确语法。
我确定有很多解决问题的方法,但是我发现的是,而不是从ADF管道中传递参数,而是更容易使用虚拟列。在我的情况下 v_date
@couponlog =
EXTRACT
Id int,
[Other columns here],
v_date DateTime
FROM "stag/input/{v_date:yyyy}/{v_date:MM}/{v_date:dd}/{*}.csv"
USING Extractors.Csv(skipFirstNRows:1);
使用此u-sql脚本找到了所有文件
我正在使用ADF输入的日期毫无麻烦。我仅通过日期部分,然后在USQL中格式化:
"parameters": {
"in": "$$Text.Format('{0:yyyy}/{0:MM}/{0:dd}/', SliceStart)"
}
然后在USQL中:
DECLARE @inputPath = "path/to/file/" + @in + "{*}.csv";
DECLARE @outputPath = "path/to/file/" + @in + "output.csv";
这些变量然后根据需要在脚本中使用。
我在ADF中使用此输入参数来读取带有虚拟列(文件)的文件夹中的所有文件,以检索文件的名称
"parameters": {
"in": "$$Text.Format('storage/folder/{0:yyyy}-{0:MM}/{1}.csv', SliceStart, '{file:*}')",
"out": "$$Text.Format('otherFolder/{0:yyyy}-{0:MM}/result.txt', SliceStart)"
}
相关的U-SQL
@sales =
EXTRACT column1 string,
column2 decimal,
file string
FROM @in
USING Extractors.Csv(silent : true);