DAX度量问题:跨表统计逗号分隔列中产品的出现次数
跨表统计逗号分隔列中产品的出现次数解决方案
正确DAX度量(精确匹配+处理空格)
产品出现次数 = VAR SelectedProduct = SELECTEDVALUE(Products[Product]) RETURN SUMX( Query1, -- 清理列表中的空格,避免因空格导致匹配失败 VAR CleanedList = SUBSTITUTE(Query1[M0_LIST], " ", "") -- 将逗号分隔的字符串转换为可迭代的列表 VAR SplitProducts = PATHSPLIT(SUBSTITUTE(CleanedList, ",", "|")) -- 统计当前行中目标产品的出现次数 RETURN COUNTROWS(FILTER(SplitProducts, [Value] = SelectedProduct)) )
原度量的问题分析
- 空白行异常计数:当未选中任何产品时,
MAX(Products[Product])返回空白,CONTAINSSTRING(Query1[M0_LIST], "")会匹配所有行,导致COUNTROWS返回全表行数,出现空白行的无效计数。 - 模糊匹配风险:
CONTAINSSTRING是模糊匹配逻辑,若存在类似act_checking_vip的字符串,会被误判为包含act_checking,导致计数不准确。 - 空格导致匹配失效:如果
M0_LIST中逗号后带有空格(如act_checking, act_savings),原度量无法匹配到带前置空格的产品,会让你误以为只统计了逗号前的第一个产品。
使用说明
将该度量添加到报表中,配合Products[Product]列使用,即可得到每个产品在Query1[M0_LIST]中的精确出现次数,完全符合预期结果:
- act_checking:2次
- act_savings:1次
- act_auto:2次
内容的提问来源于stack exchange,提问作者Xboraxe
相关产品推荐
相关产品推荐

