Power BI DAX问题:根据字符串包含的指定值数量为计算列赋值
DAX计算列得分计算实现方案
之前实现报错的核心原因
- 嵌套IF+OR返回全8分:嵌套判断逻辑顺序错误,最高得分的全包含判断逻辑写为只要命中任意一个有效取值就返回8分,而非四个全部命中才返回
- 严格相等判断apple无法命中:字符串存在前后空格、大小写差异,或者column1为多值拼接内容,无法通过全等匹配命中
基础实现代码(适用包含子串即匹配的场景)
直接对每个有效取值单独判断计分后累加,避免嵌套逻辑错误:
水果得分 = // 去除字符串前后空格+转小写,避免空格、大小写导致匹配失败 VAR 格式化内容 = LOWER(TRIM('你的表名'[column1])) VAR 计分项 = IF(CONTAINSSTRING(格式化内容, "apple"),2,0) + IF(CONTAINSSTRING(格式化内容, "orange"),2,0) + IF(CONTAINSSTRING(格式化内容, "pear"),2,0) + IF(CONTAINSSTRING(格式化内容, "banana"),2,0) RETURN 计分项
替换代码中的
你的表名为你实际的表名即可直接使用
严谨实现代码(适用多值分隔的场景)
如果你的column1是用固定分隔符(如逗号、顿号)拼接的多值内容,为了避免「applepie被误判为包含apple」的问题,可以使用PATHCONTAINS做完整项匹配:
水果得分_严谨版 = VAR 格式化内容 = LOWER(TRIM('你的表名'[column1])) // 把你实际的分隔符替换下面的逗号,转换为PATH函数支持的|分隔格式 VAR 路径格式内容 = SUBSTITUTE(格式化内容, ",", "|") VAR 计分项 = IF(PATHCONTAINS(路径格式内容, "apple"),2,0) + IF(PATHCONTAINS(路径格式内容, "orange"),2,0) + IF(PATHCONTAINS(路径格式内容, "pear"),2,0) + IF(PATHCONTAINS(路径格式内容, "banana"),2,0) RETURN 计分项
内容的提问来源于stack exchange,提问作者hectic
相关产品推荐
相关产品推荐

