如何在ADF中创建反向索引处理两种命名格式的文件夹以读取数据
解决两种日期格式的文件夹层级生成问题
针对你遇到的date=YYYY-MM-DD和d=YYYY-MM-DD两种命名格式,这里提供两种可行的表达式方案,都能自动生成2003/09/10这类层级文件夹:
方案1:反向索引截取(符合你提到的反向索引思路)
利用字符串总长度减去日期部分的固定长度(10位,YYYY-MM-DD共10个字符),直接定位到日期起始位置,再拆分年、月、日:
@concat( pipeline().parameters.target, substring(substring(item().name, sub(length(item().name), 10), 10), 0, 4), '/', substring(substring(item().name, sub(length(item().name), 10), 10), 5, 2), '/', substring(substring(item().name, sub(length(item().name), 10), 10), 8, 2) )
逻辑说明:
sub(length(item().name), 10):计算日期部分的起始索引(总长度-10),不管前缀是date=还是d=,都能精准定位到YYYY-MM-DD的开头- 内层
substring取出完整日期字符串后,再分别截取前4位(年)、第5-6位(月)、第8-9位(日),最后拼接成目标路径
方案2:按分隔符拆分(更直观)
通过=作为分隔符拆分字符串,直接提取后面的日期部分,再拆分年、月、日:
@concat( pipeline().parameters.target, substring(split(item().name, '=')[1], 0, 4), '/', substring(split(item().name, '=')[1], 5, 2), '/', substring(split(item().name, '=')[1], 8, 2) )
逻辑说明:
split(item().name, '=')[1]:将文件夹名称按=拆分,取第二个元素就是完整的YYYY-MM-DD日期字符串- 后续同样拆分年、月、日并拼接路径,这种方法对任何
xxx=YYYY-MM-DD格式的命名都适用
内容的提问来源于stack exchange,提问作者sarah
相关产品推荐
相关产品推荐

