2

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

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

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

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

4

1 回答 1

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为您提供所需的间隔。

于 2016-08-17T19:37:21.170 回答