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

如何在DAX中仅对首次出现日期的ID进行去重计数?

解决Power BI中仅统计ID首次出现日期的去重计数问题

问题场景

你手头有一张记录ID状态变更的表,同一个ID会随着状态变化出现在不同日期里,原始数据是这样的:

IDStateDATE
Aa2022-01-01
Ab2022-01-02
Ac2022-01-03
Bd2022-01-01
Be2022-01-02
Cf2022-01-03

你需要做一个能适配KPI卡片、折线图和表格的度量值,核心需求是只在ID第一次出现的日期统计这个ID,后续日期不再重复计数。

用基础的DISTINCTCOUNT('Table'[ID])确实能做到去重计数,但按日期拆分时会把每个ID出现的日期都算进去,结果不是你想要的:

DateCount
2022-01-012
2022-01-022
2022-01-032
Total3

你期望的是这样的结果:

DateCount
2022-01-012
2022-01-020
2022-01-031
Total3

解决方案:自定义DAX度量值

试试这个DAX公式,完全能满足你的需求:

First Occurrence Count = 
VAR CurrentDate = MAX('Table'[DATE])
VAR FirstOccurrences = 
    ADDCOLUMNS(
        SUMMARIZE('Table', 'Table'[ID]),
        "FirstDate", CALCULATE(MIN('Table'[DATE]))
    )
RETURN
    COUNTROWS(
        FILTER(FirstOccurrences, [FirstDate] = CurrentDate)
    )

公式拆解(为啥这么写)

  1. CurrentDate:抓取当前视觉上下文里的日期(比如表格中某一行对应的日期),因为是按日期分组展示,所以这里就是当前行的日期值。
  2. FirstOccurrences:先把所有ID去重,然后给每个ID算出它第一次出现的日期,生成一个包含ID和对应首次日期的临时表。
  3. 返回结果:从临时表里筛选出首次日期等于当前上下文日期的行,统计这些行的数量——这就是当天新增的首次出现的ID个数。

效果验证

把这个度量值放到表格里,就能得到你想要的结果:

  • 2022-01-01:A和B第一次出现,计数2
  • 2022-01-02:没有新ID首次出现,计数0
  • 2022-01-03:C第一次出现,计数1
  • 总计:所有首次出现的ID总数3,完全正确

而且这个度量值也能直接用到KPI卡片(显示总新增ID数)和折线图(展示每日新增趋势)里,完美适配你提到的所有视觉对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 22:02:44