【发布时间】:2017-10-21 00:48:59
【问题描述】:
我有需要处理一些数据的 U-SQL 脚本。数据存储在 blob 中,每天在此文件夹结构中存储约 100 个文件:/{year}/{month}/{day}/{hour}/filenames.tsv
获取一天的数据很容易,只需在最后放一个通配符,它就会挑选出当天所有时间的所有文件。
但是,在我的脚本中,我想读出当天和前一天的最后 2 小时。天真的方法是用这种方式提取 3 个语句:
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();
但在我的情况下,使用 AvroExtractor 的每个提取行都非常长且复杂(约 50 列),因此我更愿意只指定列和提取器一次而不是 3 次。此外,调用方无法通过 3 个输入来决定应该读取前几天的小时数。
我的问题是如何以一种方便的方式定义它,最好只使用一个提取语句?
【问题讨论】:
标签: azure azure-data-lake u-sql