PowerBI列中统计特定文本子串出现次数的技术咨询
PowerBI统计子串出现次数的解决方案
针对你列中用分号、逗号分隔的多组数据,推荐用DAX计算列或度量值实现动态统计,替代僵化的新表方案,具体操作如下:
一、单行列内子串次数统计(计算列)
如果需要给每行数据添加字段,统计该行内目标子串的出现次数,以统计"FaN"为例,用以下DAX公式:
FaN出现次数 = VAR 拆分分组 = TEXTSPLIT([你的原始列名], ";") // 按分号拆成各组 RETURN SUMX( 拆分分组, VAR 拆分单项 = TEXTSPLIT([Value], ", ") // 每组内按逗号+空格拆成单个值 RETURN COUNTX( FILTER(拆分单项, [Value] <> "" && CONTAINSSTRING([Value], "FaN")), [Value] ) )
- 若使用旧版PowerBI(无
TEXTSPLIT函数),可替换为兼容写法:FaN出现次数(旧版本兼容) = VAR 替换分隔符 = SUBSTITUTE(SUBSTITUTE([你的原始列名], ";", "|"), ", ", "|") VAR 总项数 = PATHLENGTH(替换分隔符) RETURN SUMX( GENERATESERIES(1, 总项数), VAR 当前项 = PATHITEM(替换分隔符, [Value]) RETURN IF(CONTAINSSTRING(当前项, "FaN") && 当前项 <> "", 1, 0) )
二、全列子串总次数统计(度量值)
如果需要动态统计整个列中目标子串的总出现次数,用度量值:
总FaN次数 = SUMX( ALL('你的表名'), VAR 拆分分组 = TEXTSPLIT('你的表名'[原始列名], ";") RETURN SUMX( 拆分分组, VAR 拆分单项 = TEXTSPLIT([Value], ", ") RETURN COUNTX( FILTER(拆分单项, [Value] <> "" && CONTAINSSTRING([Value], "FaN")), [Value] ) ) )
问题原因说明
- 之前用
Filter+ContainsString报错:大概率是直接对整个单元格内容做判断,未拆分到单个子项,导致逻辑无法匹配分散在分组里的子串。 - 新表方案僵化:静态表格无法随原始字段的数据更新自动同步,而计算列/度量值会和原字段绑定,实时响应数据变化。
内容的提问来源于stack exchange,提问作者L2010
相关产品推荐
相关产品推荐

