u-sql: 在 u-sql 脚本中加载文件

u-sql: Loading files in u-sql script

从 2016 年 1 月到今天,我有数千个 csv 文件。 我想加载从 2016 年 11 月 25 日到 2017 年 1 月 2 日的所有文件。

我知道我可以使用如下虚拟路径,但这不会从磁盘加载我的所有数据吗?我只想要上述时期的数据。添加@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");

如果谓词正在与编译器可以看到的值(例如,常量、常量可折叠表达式或脚本参数)进行比较,并且可以移动谓词(例如,您在谓词中使用 AND 而不是 && 进行连接)那么优化器只会触及指定范围内的文件。所以上面的查询应该没问题。

如果谓词不是上述之一,您应该会收到警告。

如果您没有遇到这种情况,请告诉我。