如何创建月末自动统计另一表格列计数的表格并保留历史数据
实现月度统计数据留存与自动写入方案
核心问题根源
你之前用度量值统计月度数据,次月数据清空是因为度量值是上下文依赖的实时计算——进入次月后,报表上下文切换到当月,度量值只会计算当前月的数据,上月的计算结果自然不会显示。要留存历史数据,必须用物理表(表1)存储快照,而非仅依赖度量值。
步骤1:创建表1(月度统计快照表)
- 建议表结构设为两列:
统计年月(格式YYYY-MM,用于标记数据所属月份)、月度计数(存储当月统计结果),比单一列更便于后续数据追溯。 - 初始可手动添加一行测试数据,后续通过自动化流程自动新增行。
步骤2:配置表2的动态计算逻辑
创建静态度量值用于实时计算当前月统计数:
月度统计计数 = CALCULATE( COUNT(表2[目标列]), DATESMTD(表2[年月列]) )该度量值仅计算当前上下文的月度数据,不影响历史数据留存。
若需在表2中展示各月统计结果,创建计算列:
各月计数 = CALCULATE( COUNT(表2[目标列]), ALLEXCEPT(表2, 表2[年月列]) )该列会基于每行的
年月列值,计算对应月份的总计数,不会随上下文切换而清空。
步骤3:实现每月末自动写入表1的自动化流程
DAX无法直接自动修改物理表,需借助Power Automate实现定时写入:
- 触发条件:设置为每月最后一天的固定时间(如23:59)。
- 流程步骤:
- 调用Power BI REST API,获取当前月的
月度统计计数度量值结果。 - 向表1中新增一行数据,填入当前年月(格式
YYYY-MM)和获取到的计数。 - 刷新Power BI数据集,确保表1数据更新。
- 调用Power BI REST API,获取当前月的
备选方案(无需Power Automate)
若无法使用Power Automate,可通过计算表+增量刷新实现近似效果:
- 创建计算表作为表1的数据源:
月度统计快照 = SUMMARIZE( 表2, 表2[年月列], "月度计数", COUNT(表2[目标列]) ) - 对该计算表开启增量刷新,设置按年月分区,仅刷新最新分区,同时保留历史分区数据,历史月份的数据会被永久留存,不会随次月到来而清空。
内容的提问来源于stack exchange,提问作者Question Man
相关产品推荐
相关产品推荐

