根据时间间隔在Azure数据工厂管道中配置动态参数数量?

时间:2016-08-17 10:35:19

标签: azure-data-factory azure-data-lake u-sql

我们的用例需要通过Azure Data Factory将可配置输入传递给U-SQL脚本。 我们正在评估可行性,并且需要根据活动时间片的间隔自动化传递给U-SQL脚本的变量数。

例如,如果要每4小时运行一次U-SQL脚本,则需要从4个不同的文件中读取数据,每小时一个。如果间隔更改为5小时,我们需要自动执行此操作,以便它自动从5个不同的文件中读取,而无需更新U-SQL脚本。

文件路径的格式为: 源\ YYYY-MM-DD \ hh.csv

这种动态性是否可以通过数据工厂或数据湖提供的当前设施和功能集来实现? 或者是否有解决方法,因此可以自动部署数据工厂管道?

1 个答案:

答案 0 :(得分:2)

如果文件具有相同的模式,则可以使用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,以便为您提供所需的时间间隔。