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