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

PowerBI技术求助:按ID与周期统计唯一Sub-ID数量并生成新列

PowerBI DAX:按ID和Period分组统计唯一Sub-ID数量

嘿,我明白你的问题了——你想给每一行添加一个计算列,显示当前行对应的ID和Period组合下,唯一Sub-ID的总数对吧?这在DAX里其实有两种简洁的实现方式,我给你详细说下:

方法一:使用ALLEXCEPT(推荐,性能更优)

这种方法利用ALLEXCEPT保留当前行的ID和Period筛选上下文,移除其他所有筛选,然后统计该分组下的唯一Sub-ID数量:

Number of sub-ID's = 
CALCULATE(
    DISTINCTCOUNT('你的数据表名'[Sub-ID]),
    ALLEXCEPT('你的数据表名', '你的数据表名'[ID], '你的数据表名'[Period])
)

解释:

  • DISTINCTCOUNT('你的数据表名'[Sub-ID]):统计指定范围内唯一Sub-ID的数量
  • ALLEXCEPT('你的数据表名', ...):保留括号里的ID和Period列的筛选条件,移除其他所有筛选,这样CALCULATE就会只计算当前ID+Period组合下的唯一值数量

方法二:使用FILTER+EARLIER

如果你更习惯显式筛选的写法,也可以用FILTER配合EARLIER来引用当前行的ID和Period值:

Number of sub-ID's = 
CALCULATE(
    DISTINCTCOUNT('你的数据表名'[Sub-ID]),
    FILTER(
        '你的数据表名',
        '你的数据表名'[ID] = EARLIER('你的数据表名'[ID]) &&
        '你的数据表名'[Period] = EARLIER('你的数据表名'[Period])
    )
)

解释:

  • EARLIER('你的数据表名'[ID]):引用当前行上下文之外的ID值(也就是当前行的ID)
  • FILTER会遍历整个表,筛选出和当前行ID、Period都匹配的行,然后DISTINCTCOUNT统计这些行里的唯一Sub-ID数量

效果验证

把公式里的'你的数据表名'换成你实际的表名称后,生成的新列就会和你预期的结果完全一致:

  • ID为123000的所有行,不管Period是202101还是202102,Number of sub-ID's都会显示3
  • ID为456000的所有行,每个Period对应的数值都是2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:22:44