PowerBI中如何按店铺分组获取唯一目标值的拼接列/度量值?
按店铺拼接唯一Target值的DAX解决方案
问题原因
你原公式的问题在于:DISTINCT('Table'[Target])会返回整个数据表的所有唯一Target值,且CALCULATE没有限定当前Shop的筛选上下文,导致每个店铺行都拼接了全局的唯一值。
正确DAX表达式(计算列)
直接使用以下计算列公式即可实现需求:
uniqueTarget = CALCULATE( CONCATENATEX(DISTINCT('Table'[Target]), 'Table'[Target], ", "), ALLEXCEPT('Table', 'Table'[Shop]) )
原理说明
ALLEXCEPT('Table', 'Table'[Shop]):保留当前行的Shop筛选条件,移除其他所有筛选,确保只计算当前Shop对应的Target值。DISTINCT('Table'[Target]):在当前Shop的筛选范围内,提取唯一的Target值。CONCATENATEX:将这些唯一值用,拼接成字符串。
另一种等价写法(显式筛选上下文)
如果更习惯用显式筛选逻辑,也可以使用以下公式:
uniqueTarget = CONCATENATEX( DISTINCT(FILTER('Table', 'Table'[Shop] = EARLIER('Table'[Shop]))), 'Table'[Target], ", " )
EARLIER('Table'[Shop]):引用当前行的Shop值,确保FILTER只筛选当前店铺的记录。DISTINCT:去除当前店铺内重复的Target值。
结果验证
应用上述公式后,将得到你期望的结果:
| Shop | uniqueTarget |
|---|---|
| A | 2, 5, 15 |
| B | 1, 9 |
内容的提问来源于stack exchange,提问作者prernaroy
相关产品推荐
相关产品推荐

