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
相关产品推荐
相关产品推荐

