Power BI如何按两个不同日期列汇总项目起止月度数据?
解决方法:合并日期记录后分组统计
核心思路是把每个项目的启动日期和完成日期拆分为两条独立的记录,这样就能统一按月份和事件类型(启动/完成)进行统计,避开SUMMARIZE只能单日期分组的限制。以下是两种可行的DAX实现方案:
方案1:分别汇总后合并
先单独统计每月启动、完成的项目数,再用UNION合并结果:
Monthly Project Stats = -- 统计每月启动的项目数 VAR StartedProjects = ADDCOLUMNS ( SUMMARIZE ( '项目表', '项目表'[Start Date] ), "月份", EOMONTH ( '项目表'[Start Date], 0 ), -- 用月末日期统一月份分组 "类型", "Started", "数量", CALCULATE ( COUNT ( '项目表'[Project ID] ) ) ) -- 统计每月完成的项目数(过滤空完成日期) VAR FinishedProjects = ADDCOLUMNS ( FILTER ( SUMMARIZE ( '项目表', '项目表'[Finish Date] ), NOT ISBLANK ( '项目表'[Finish Date] ) ), "月份", EOMONTH ( '项目表'[Finish Date], 0 ), "类型", "Finished", "数量", CALCULATE ( COUNT ( '项目表'[Project ID] ) ) ) -- 合并两个结果表 RETURN UNION ( StartedProjects, FinishedProjects )
方案2:拆分单项目为两条记录后统计
通过GENERATE把每个项目拆成「启动」「完成」两条记录,再统一分组:
Monthly Project Stats = SUMMARIZE ( GENERATE ( '项目表', -- 为每个项目生成两条日期记录 DATATABLE ( "事件类型", STRING, "日期", DATE, { { "Started", '项目表'[Start Date] }, { "Finished", '项目表'[Finish Date] } } ) ), -- 按月末日期分组,确保同一月份的记录归为一组 EOMONTH ( [日期], 0 ) AS [月份], [事件类型], -- 统计每组的项目数量 "数量", COUNT ( '项目表'[Project ID] ) )
后续图表制作
生成的计算表包含「月份」「类型/事件类型」「数量」三列,直接用于图表:
- X轴选择「月份」,可设置格式为
YYYY-MM或「年月」显示 - Y轴选择「数量」
- 图例选择「类型/事件类型」,即可展示每月启动、完成项目的对比柱状图
内容的提问来源于stack exchange,提问作者Eduardo Junqueira Ferreira
相关产品推荐
相关产品推荐

