You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerQuery如何按年份统计跨多年的创建、审批、解决等事件数量

解决方法

问题核心原因

你当前仅建立了「创建日期」和Calendar表的激活关联,统计审批、解决数时CALCULATE默认走激活的创建日期关联,所以统计结果是按记录创建年份归类,而非对应事件的实际发生年份。

推荐方案(性能最优,适合大数据量)

步骤1:配置表关系

在数据模型中给Calendar表和source表建立3组关联:

  • 创建日期和Calendar表日期的关联保持「激活」状态
  • 分别建立审批日期、解决日期和Calendar表日期的关联,关联状态设为「非激活」

步骤2:编写对应度量值

  • 统计创建数(直接用激活关系即可)
    创建数 = COUNT('source'[记录ID])
  • 统计审批数(临时激活审批日期的关联,同时过滤掉未审批的空值记录)
    审批数 = CALCULATE(COUNT('source'[记录ID]), USERELATIONSHIP('source'[审批日期], 'calendar'[date]), NOT(ISBLANK('source'[审批日期])))
  • 统计解决数(逻辑同上)
    解决数 = CALCULATE(COUNT('source'[记录ID]), USERELATIONSHIP('source'[解决日期], 'calendar'[date]), NOT(ISBLANK('source'[解决日期])))

效果验证

拿你举的单条记录示例验证:2017年创建、2018年审批、2019年解决,把Calendar表的年份字段拉到报表行维度时,结果完全符合预期:

  • 2017年:创建数=1,审批数=0,解决数=0
  • 2018年:创建数=0,审批数=1,解决数=0
  • 2019年:创建数=0,审批数=0,解决数=1

替代方案(小数据量可用,无需额外建关系)

如果你的源数据量小于10万行,不想配置多组表关系,可以直接在度量值中做年份匹配:
解决数 = COUNTROWS(FILTER('source', YEAR('source'[解决日期]) = SELECTEDVALUE('calendar'[年份]) && NOT(ISBLANK('source'[解决日期]))))

该方案计算时会遍历全表,数据量大时性能会明显下降,优先推荐第一种方案。


内容的提问来源于stack exchange,提问作者AndyJ97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:36:02