1
我有我需要处理一些数据的U-SQL脚本。数据存储在blob中,每天在这个文件夹结构中有大约100个文件:/{year}/{month}/{day}/{hour}/filenames.tsv
如何在USQL中定义多个输入文件模式?
获取一天的数据很容易,只需在最后放置一个通配符,它将在所有时间内挑选出所有文件当天。
但是,在我的脚本中,我想读出当天和前一天的最后2小时。用简单的方式就是以这种方式与3级摘录的语句:使用AvroExtractor
DECLARE @input1 = @"/data/2017/10/08/22/{*}.tsv";
DECLARE @input2 = @"/data/2017/10/08/23/{*}.tsv";
DECLARE @input3 = @"/data/2017/10/09/{*}.tsv";
@x1 = EXTRACT .... FROM @input1 USING Extractors.Tsv();
@x2 = EXTRACT .... FROM @input2 USING Extractors.Tsv();
@x3 = EXTRACT .... FROM @input3 USING Extractors.Tsv();
但在我的情况下,每个提取线很长且复杂的(〜50列),所以我真的宁愿是只指定列和提取器一次而不是3次。另外,通过从呼叫方那里获得3个输入是不可能的,以决定应该阅读前几天的小时数。
我的问题是我怎样才能以方便的方式定义这个,理想情况下只使用一个提取语句?
在我的情况下,我想一起处理数据,所以不是创建表值函数的过程。但是这个原则与你的答案完全一样。 – viblo