DAX中SWITCH嵌套LEFT函数报整数与文本类型不支持比较错误如何解决
错误原因
你写的DAX代码存在两处语法错误:
- LEFT函数参数格式错误:LEFT的标准语法为
LEFT(文本字段, 提取字符数),你将等于判断逻辑写进了LEFT的入参中,不符合语法要求 - SWITCH函数用法错误:你当前的写法不符合SWITCH的调用规则,如果要多条件判断,需要使用
SWITCH(TRUE(), 条件1, 结果1, 条件2, 结果2...)的模式
基础修正版代码
以下代码同时覆盖「PNUM以20开头的纯数字格式」「PNUM前两位为字母、第3-4位为20的带前缀格式」两种你提到的场景,完全匹配需求:
FormulaCode2 = SWITCH( TRUE(), // 匹配20开头的纯数字PNUM LEFT('Overall Product Portfolio Planning'[PNUM],2) = "20", 20, // 匹配前缀为两位字母、后接20的PNUM MID('Overall Product Portfolio Planning'[PNUM],3,2) = "20", 20, // 不匹配的返回空值,可按需修改为其他默认值 BLANK() )
通配符简化版代码
DAX的SEARCH函数原生支持通配符,?匹配单个任意字符、*匹配任意长度任意字符,不需要枚举所有可能的字母前缀,代码更简洁:
FormulaCode2 = VAR 匹配系列20 = OR( // 匹配20开头的所有PNUM SEARCH("20*", 'Overall Product Portfolio Planning'[PNUM], 1, 0) > 0, // 匹配前两位为任意字符、后接20的所有PNUM SEARCH("??20*", 'Overall Product Portfolio Planning'[PNUM], 1, 0) > 0 ) RETURN IF(匹配系列20, 20, BLANK())
内容的提问来源于stack exchange,提问作者Tyler Brown
相关产品推荐
相关产品推荐

