首页 > 解决方案 > 从单日提取文件 - U SQL

问题描述

我遇到了 U SQL 脚本的问题。我正在尝试从目录中获取当天创建的文件。文件名将具有日期yyyyMMdd格式。但是当我尝试提取数据而不是只提取一天的文件时,我得到了目录中的所有文件。我正在使用以下脚本。

DECLARE @file_set_path string ="/XXXX/Sample_{date:yyyy}{date:MM}{date:dd}{*}.csv";

@searchlog =
EXTRACT PART_NUMBER string, date DateTime FROM @file_set_path USING Extractors.Tsv(skipFirstNRows:1);

有人可以帮我解决这个问题。

标签: azureu-sql

解决方案


您可以使用对象的Date属性DateTime来比较日期而不包括时间组件,如下所示:

DECLARE @file_set_path string ="/Sample_{date:yyyy}{date:MM}{date:dd}{*}.csv";
DECLARE @now DateTime = DateTime.Now;


@searchlog =
    EXTRACT PART_NUMBER string,
            date DateTime
    FROM @file_set_path
    USING Extractors.Csv(skipFirstNRows : 1);


@output =
    SELECT *,
           @now AS now,
           date.Date AS x,
           @now.Date AS y

    FROM @searchlog
    WHERE date.Date == @now.Date;


OUTPUT @output
TO "/output/output.csv"
USING Outputters.Csv();

注意我注意到您正在使用带有 Csv 文件的 Tsv 提取器。当只有一列或者这可能是一个错字时,这可能并不重要?


推荐阅读