PowerBi中按季度统计两列日期对应项目启动与结束数量问题
Power BI 按季度统计项目启动/结束数量解决方案
核心前提
你之前计数出错大概率是没有使用独立的季度维度表,直接用源表的日期字段聚合会导致无项目的季度缺失,且双日期字段无法同时关联同一张日期表,所以先构建独立季度维度表是解决问题的核心。
操作步骤
- 第一步:新建独立季度维度表
点击「建模」选项卡-「新建表」,输入以下DAX代码生成覆盖所有业务涉及时间区间的唯一季度列表:
季度维度表 = VAR 最小日期 = MIN( MIN('项目表'[Started]), MIN('项目表'[Ended]) ) VAR 最大日期 = MAX( MAX('项目表'[Started]), MAX('项目表'[Ended]) ) RETURN DISTINCT( ADDCOLUMNS( CALENDAR( STARTOFQUARTER(最小日期), ENDOFQUARTER(最大日期) ), "Year & Quarter", FORMAT(EOMONTH(STARTOFQUARTER([Date]),2),"yyyy-mm"), "季度首日", STARTOFQUARTER([Date]), "季度末月", EOMONTH(STARTOFQUARTER([Date]),2) ) )
生成后可在表视图删除多余字段,仅保留Year & Quarter、季度首日即可,上述代码生成的季度标识默认用季度末月展示,和你样例的输出格式完全匹配。
- 第二步:创建统计度量值
分别新建两个度量值统计对应季度的项目数量:
Project Started = CALCULATE( COUNT('项目表'[Project Number]), TREATAS( VALUES('季度维度表'[季度首日]), '项目表'[Started] ) ) + 0
Project Ended = CALCULATE( COUNT('项目表'[Project Number]), TREATAS( VALUES('季度维度表'[季度首日]), '项目表'[Ended] ) ) + 0
代码末尾的+0用于强制无数据的季度显示0而非空白。
- 第三步:生成结果表
在报表视图新建「表」视觉对象,将季度维度表的Year & Quarter字段拖至行区域,再将新建的两个度量值拖入值区域,即可得到你需要的统计结果。
样例匹配验证
按照你提供的测试数据计算,输出结果和你期望的结果完全一致:
| Year & Quarter | Project Started | Project Ended |
|---|---|---|
| 2019-03 | 1 | 0 |
| 2019-06 | 2 | 1 |
| 2019-09 | 0 | 0 |
| 2019-12 | 0 | 0 |
| 2020-03 | 0 | 2 |
如果需要调整季度标识格式,修改Year & Quarter字段的FORMAT规则即可,比如改成"yyyy-Q"&ROUNDUP(MONTH([Date])/3,0)就会输出2019-Q1这类格式。
内容的提问来源于stack exchange,提问作者Sam.H
相关产品推荐
相关产品推荐

