Power BI中创建按国家统计品牌DISTINCT COUNT的度量值
在Power BI中按Country统计Brand的去重计数度量值
我来帮你搞定这个问题!你想要实现的是按Country维度统计不同Brand的数量,之前尝试的两种DAX写法确实没找对路子,我给你拆解下问题,再给出准确的解决方案:
先说说你之前写法的问题
- 第一个度量值
Measure = COUNTX(DISTINCT(sourceTable),sourceTable[Brand]):这里的DISTINCT(sourceTable)会返回整个表的去重行记录,而不是当前Country筛选范围内的行,所以最终统计的是全表的Brand总数,而非单个Country下的去重数量。 - 第二个写法用
GROUPBY嵌套在CALCULATE里:这属于多此一举,而且GROUPBY在这里的用法不符合筛选上下文的逻辑,CALCULATE本身会自动响应外部的筛选(比如表格里的Country分组),不需要手动分组。
正确的度量值写法
最简洁且有效的写法直接用DISTINCTCOUNT函数即可,它会自动适配外部的筛选上下文:
Distinct Brand Count = DISTINCTCOUNT(SampleDataForDashboard[Brand])
为什么这个写法有效?
当你把Country字段放到表格的行区域,或者树形图的类别区域时,Power BI会自动为每个Country创建筛选上下文,DISTINCTCOUNT会在这个筛选范围内计算去重的Brand数量,正好得到你想要的结果:
- C1对应的去重Brand是B1、B2、B3、B4,共4个
- C2对应的去重Brand是B1、B5、B6、B3、B7、B8,共6个
进阶写法(确保仅按Country筛选)
如果你的报表中有其他筛选器,想要确保度量值只受Country字段影响,可以用ALLEXCEPT来明确控制筛选范围:
Distinct Brand Count (Explicit) = CALCULATE( DISTINCTCOUNT(SampleDataForDashboard[Brand]), ALLEXCEPT(SampleDataForDashboard, SampleDataForDashboard[Country]) )
ALLEXCEPT会移除除了Country之外的所有筛选条件,保证计算结果严格按Country维度统计。
如何嵌入到表格或树形图中
- 表格:将
Country拖到「行」区域,把上述度量值拖到「值」区域即可看到预期的统计结果。 - 树形图:将
Country拖到「类别」区域,度量值拖到「值」区域,就能直观展示每个Country对应的去重Brand数量。
内容的提问来源于stack exchange,提问作者user1330974
相关产品推荐
相关产品推荐

