2017-06-20 50 views
0

我有成千上萬的csv文件,包含從2016年1月到今天的跨越。 我想加載從2016年11月25日到2017年1月02日的所有文件。u-sql:在u-sql腳本中加載文件

我知道我可以使用如下的虛擬路徑,但是不會從磁盤加載所有數據?我只需要上述期間的數據。將添加@result查詢(修改到我的時間段)確保只有我感興趣的文件被加載到內存中?

DECLARE @file_set_path2 string = @dir + "{date:yyyy}/{date:MM}/{date:dd}/{date:MM}{date:dd}{date:yyyy}.csv"; 
 

 
@data = 
 
    EXTRACT vala int, 
 
      valb long, 
 
      valc DateTime, 
 
      date DateTime // virtual file set column 
 
    FROM @file_set_path2 
 
    USING Extractors.Csv(); 
 

 
@result = 
 
SELECT * 
 
FROM @data 
 
WHERE date > DateTime.Parse("2016-11-24") 
 
AND date < DateTime.Parse("2017-01-03");

回答

1

如果斷言是對值編譯器可以看到(例如,常量,常量可摺疊表達式或腳本參數)比較和謂語可以移動(例如,你可以使用AND和而不是& &在連詞的謂詞中),那麼優化器將只觸及指定範圍內的文件。所以上面的查詢應該沒問題。

如果謂詞不是上述之一,您應該會收到警告。

如果你沒有得到這種行爲,請讓我知道。