Azure Data Factory中Kusto CountOf()函数等效实现及文件名提取方案
在Azure Data Factory中提取文件名最后一个下划线前的字符串
ADF中没有直接等效于KQL countof() 的函数,但可以通过以下两种常用方法实现你的需求:
方法一:使用split() + join()组合
思路是将文件名按下划线分割为数组,排除最后一个元素(即下划线后的后缀/日期部分),再将剩余元素重新用下划线拼接。
示例表达式(假设文件名存储在变量fileName中):
@join(split(variables('fileName'), '_'), '_', 0, sub(length(split(variables('fileName'), '_')), 1))
逻辑说明:
split(variables('fileName'), '_'):将文件名按下划线分割成字符串数组,比如"abc_xyz_20221221.txt"会被分割为["abc", "xyz", "20221221.txt"]sub(length(...), 1):计算数组长度减1,得到需要保留的元素结束索引(join的endIndex参数为排他值,因此用数组长度减1可以排除最后一个元素)join(...):将数组中从索引0到结束索引的元素用下划线拼接,得到目标字符串
方法二:通过反转字符串定位最后一个下划线
思路是反转文件名后找到第一个下划线的位置,再换算回原字符串中最后一个下划线的位置,最终截取该位置之前的内容。
示例表达式:
@substring(variables('fileName'), 0, sub(sub(length(variables('fileName')), indexOf(reverse(variables('fileName')), '_')), 1))
逻辑说明:
reverse(variables('fileName')):反转文件名,比如"abc_xyz_20221221.txt"反转后为"txt.12212202_zyx_cba"indexOf(..., '_'):找到反转后字符串中第一个下划线的位置sub(length(...), indexOf(...)) -1:换算回原字符串中最后一个下划线的位置(原字符串总长度减去反转后的下划线位置,再减1)substring(...):从文件名起始位置截取到最后一个下划线之前的内容
内容的提问来源于stack exchange,提问作者ALK
相关产品推荐
相关产品推荐

