DAX中提取含冒号分号的过滤后键值对字符串目标value的方法
解决方法
核心思路是使用带容错参数的查找函数定位分隔符位置,再做字符串截取,避免查找不到分隔符时抛出错误。
具体实现逻辑
- 第一步:用
SEARCH函数定位字符串中第一个冒号的位置,设置第四参数为-1做容错,找不到对应分隔符时返回固定值避免报错 - 第二步:如果成功找到冒号,就从冒号的下一位开始,用
SEARCH函数定位后续第一个分号的位置,同样设置容错参数 - 第三步:用
MID函数截取两个分隔符位置之间的内容,即为目标value
示例DAX代码
提取目标Value = VAR 待处理字符串 = [你过滤后得到的字符串字段] VAR 冒号位置 = SEARCH(":", 待处理字符串, 1, -1) VAR 分号位置 = IF(冒号位置 = -1, -1, SEARCH(";", 待处理字符串, 冒号位置 + 1, -1)) RETURN IF( 冒号位置 = -1 || 分号位置 = -1, BLANK(), MID(待处理字符串, 冒号位置 + 1, 分号位置 - 冒号位置 - 1) )
补充说明
- 如果你需要区分大小写匹配分隔符,可以把
SEARCH替换为FIND函数,两者的第四参数容错规则完全一致 - 如果value本身允许包含分号,需要先对原始key:value串的value内容做特殊字符转义处理,再按上述逻辑提取
内容的提问来源于stack exchange,提问作者WrittenInCode
相关产品推荐
相关产品推荐

