如何在Power BI中创建按类别统计月度出现次数的DAX计算列
Power BI DAX计算列按类别统计单月记录次数解决方案
错误原因说明
你之前计算得到全表总计数,是因为DAX计算列的行上下文没有做正确的筛选限制,统计范围没有限定为同月份、同类别的行。
实现步骤
- 确认你使用的表包含两个核心字段:分类维度列(即你要分组统计的类别字段,比如示例中与ID对应的分类字段)、日期列(用于匹配同一月份的记录)
- 在目标表中新建计算列,使用如下DAX公式即可实现需求:
Count = CALCULATE( COUNT('替换为你的表名'[ID]), ALLEXCEPT( '替换为你的表名', '替换为你的表名'[替换为你的分类列名], '替换为你的表名'[日期].[年], '替换为你的表名'[日期].[月] ) )
公式逻辑说明
CALCULATE会将当前行的行上下文转换为筛选上下文,ALLEXCEPT会清除表其他字段的筛选影响,仅保留分类列、年、月三个维度的筛选条件,最终统计结果就是当前行所属类别、所属月份的总记录数,和Power BI内置表格的按类别计数结果完全一致。
优化适配方案
如果你的日期列没有默认的年月层级,可先新增一个年月计算列统一格式,再做统计,兼容性更强:
- 新建年月计算列:
年月 = FORMAT('替换为你的表名'[替换为你的日期列名], "YYYY-MM") - 调整Count列公式:
Count = CALCULATE( COUNT('替换为你的表名'[ID]), ALLEXCEPT('替换为你的表名', '替换为你的表名'[替换为你的分类列名], '替换为你的表名'[年月]) )
内容的提问来源于stack exchange,提问作者Denis Leu
相关产品推荐
相关产品推荐

