U-SQL 从模式中获取文件路径

Posted

技术标签:

【中文标题】U-SQL 从模式中获取文件路径【英文标题】:U-SQL get file paths from pattern 【发布时间】:2018-07-25 15:57:28 【问题描述】:

我需要获取一个文件列表然后过滤这个集合

DECLARE @input_file string = @"\data\*\*\*.avro";

@filenames = SELECT filename
FROM @input_file;

@filtered = SELECT filename FROM @filenames WHERE condition

如果可能的话,像这样......

【问题讨论】:

【参考方案1】:

这样做的方法是在文件集中定义虚拟列。然后,您可以提取和操作这些虚拟列,就像它们是从文件中提取的数据字段一样。示例:

DECLARE @input_file string = "/data/_partition1/_partition2/filename.avro";
@rowset = 
    EXTRACT column1     string,
            column2     int,
            columnN     string,
            _partition1 string,
            _partition2 int,
            _filename   string
     FROM @input_file
     USING <Avro extractor>

@filtered = 
    SELECT column1, column2, columnN, _partition1, _partition2, _filename
    WHERE  filename <your condition>

U-SQL 甚至不会读取与 WHERE 子句不匹配的文件,从而为您节省一些时间。 (此外,虚拟列名中的下划线不是必需的,而是一种有用的方法来记住哪些列来自文件以及哪些列来自路径)。希望这会有所帮助!

【讨论】:

以上是关于U-SQL 从模式中获取文件路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CMD 从文件路径中获取文件夹路径

C++中如何从路径字符串中获取文件名!

从包含文件名的路径中获取没有文件名的完整路径

如何从日志文件路径中提取变量,测试 Logstash 中模式的日志文件名?

如何快速从文件路径中获取文件名

Bash:从作为输入给出的相对路径中获取绝对路径