U-SQL - 处理最近 "n" 天的文件

U-SQL - Process Last "n" days files

环境

场景

代码

 @userLoginData =
        EXTRACT filedate DateTime,
                UserLoginAuditDetailId Guid,
                UserId string              
        FROM    @userLoginDetailPath   
        USING   Extractors.Csv();

  @extractedLoginData = 
        SELECT 
                UserLoginAuditDetailId,
                UserId             
        FROM    @userLoginData
        WHERE   filedate.Date.ToString("d") == @sliceEndTime.AddDays(-7).Date.ToString("d"); 

问题

我能够 运行 脚本成功,但是当作业编译然后显示作业图时,它正在寻找超过 7 天的文件。请在下面找到 image.Basically 它不应该在寻找文件 2017.04.20。对吗?

Job Graph

您可以通过使用 BETWEEN 子句并将您的 fileDate 虚拟列与指定日期进行比较来实现解决方案,例如

DECLARE @ProcessStart DateTime = new DateTime(@sliceEndTime.Year, @sliceEndTime.Month,@sliceEndTime.Day).AddDays(-n); // n is the no of days 
DECLARE @ProcessEnd DateTime = new DateTime(@sliceEndTime.Year, @sliceEndTime.Month,@sliceEndTime.Day); // current day when slice runs

然后您可以使用

过滤文件日期
SELECT * FROM input WHERE    filedate  BETWEEN  @ProcessStart  AND  @ProcessEnd;

这将只处理在@ProcessStart@ProcessEnd范围内指定的文件。

如果它解决了您的问题,请告诉我。