PowerBI Desktop中使用切片器时DAX按月份distinct count的问题
解决DAX中时间段内各月唯一值计数总和的问题
要实现所选时间段内各月份唯一ID计数的总和,而非整个时间段的全局唯一ID总数,你可以使用迭代函数结合分组计算的DAX公式,以下是两种可行方案:
方案一:使用SUMMARIZE + SUMX
COUNT_ID_SUM = SUMX( SUMMARIZE( 'ID', 'ID'[Month], "MonthlyDistinct", DISTINCTCOUNT('ID'[DATA]) ), [MonthlyDistinct] )
逻辑说明
SUMMARIZE函数按Month列对数据分组,为每个月份计算对应的唯一ID数量(DISTINCTCOUNT('ID'[DATA])),生成包含月份和当月唯一值计数的中间表。SUMX迭代这个中间表,将所有月份的唯一值计数相加,得到最终总和。
方案二:使用GROUPBY + SUMX
如果习惯用GROUPBY,也可以用以下公式:
COUNT_ID_SUM = SUMX( GROUPBY( 'ID', 'ID'[Month], "MonthlyDistinct", CALCULATE(DISTINCTCOUNT('ID'[DATA])) ), [MonthlyDistinct] )
效果验证
以你提到的场景为例:
- 选择202207时,公式返回该月的唯一ID数2;
- 选择202208时返回3;
- 同时选择两个月份时,会先分别计算每个月的唯一值,再求和得到5,完全符合需求。
为什么原公式不生效?
原公式 COUNT_ID = DISTINCTCOUNT('ID'[DATA]) 是在整个筛选时间段的上下文中计算全局唯一ID数,会自动跨月份去重,因此得到的是时间段内不重复的ID总数,而非各月计数的累加。
内容的提问来源于stack exchange,提问作者lowstrife
相关产品推荐
相关产品推荐

