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 从模式中获取文件路径的主要内容,如果未能解决你的问题,请参考以下文章