我们的用例需要通过Azure数据工厂将可配置的输入传递给U-SQL脚本。我们正在评估可行性,并且需要根据活动时间片的间隔自动地将变量的数量传递给U-SQL脚本。
例如,如果U-SQL脚本每4小时运行一次,它将需要从4个不同的文件中读取数据,每小时读取一个。如果间隔更改为5小时,我们需要将其自动化,以便它将自动从5个不同的文件中读取,而无需更新U-SQL脚本。
文件路径的格式为:源 YYYY-MM-DD hh.csv
当前数据工厂或数据湖提供的设施和功能集是否可以实现这种动态?或者是否有解决这个问题的方法,以便数据工厂管道的部署可以自动化?
如果文件具有相同的模式,则可以使用U-SQL中的文件集功能,如下所示:
DECLARE @begin_date DateTime = DateTime.Parse("....");
DECLARE @end_date DateTime = DateTime.Parse("....");
@data =
EXTRACT filedate DateTime, // insert rest of your schema
FROM "/Source/{filedate:yyyy}-{filedate:MM}-{filedate:dd}/{filedate:hh}.csv"
USING Extractors.Csv();
@data =
SELECT *
FROM @data
WHERE filedate BETWEEN @begin_date AND @end_date;
// ... rest of script ...
上面的代码将只访问满足filedate
上的谓词的文件,而不读取其他文件。
然后使用ADF的参数化功能来参数化@begin_date
和@end_date
,以获得所需的间隔