U-SQL读取ADLS文件时如何指定通配符路径筛选指定月份数据
正确的通配符路径配置
你可以直接使用U-SQL原生的大括号枚举匹配语法,正确写法如下:
DECLARE @InputFile string = "2021/{2021-Mar,2021-Apr,2021-May,2021-Jun,2021-Jul,2021-Aug,2021-Sep,2021-Oct}/*/*.json";
如果不想枚举所有月份,也可以使用U-SQL的正则路径匹配语法:
DECLARE @InputFile string = @"2021/2021-(Mar|Apr|May|Jun|Jul|Aug|Sep|Oct)/*/.*\.json";
原配置失效的原因
- 路径中多了多余的连续斜杠
//,ADLS Gen1的路径解析不识别无效的连续斜杠 - 大括号内的枚举项不应该包含末尾的斜杠
/,斜杠是路径分隔符需要放在大括号外面 - 如果你使用的是正则匹配模式,原来的大括号枚举语法是通配符模式的写法,和正则的分组语法混用会导致解析失败
额外使用提示
如果后续需要动态匹配月份范围,还可以通过声明月份列表变量拼接路径,避免硬编码所有月份:
DECLARE @Months ARRAY<string> = new ARRAY<string>{"Mar","Apr","May","Jun","Jul","Aug","Sep","Oct"}; DECLARE @InputFile string = string.Join("|", @Months.Select(m => $"2021/2021-{m}/*/*.json"));
内容的提问来源于stack exchange,提问作者dileepVikram
相关产品推荐
相关产品推荐

