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

PowerBI矩阵中按行计算产品累计去重计数的DAX度量实现咨询

PowerBI矩阵中按行计算产品累计去重计数的DAX度量实现咨询

嘿,我完全get到你的需求了——你要做一个矩阵可视化,行是年份(Y轴),列是各统计期间,每个单元格得显示到当前期间为止,当年累计的去重产品数量对吧?先把你的源数据整理成清晰的表格方便参考:

YearPeriodProduct
20201A
20202C
20203A
20203B
20204C
20212B
20213C
20214D
20211A
20211C
20223A
20224C
20221C
20222D
20221A
20234C
20233B
20232C
20234B
20231A
20241A
20244B
20243C

你用快速度量生成的DAX有两个小问题,会导致结果不符合预期:一是它会跨年份累计(比如2020年的期间4会把其他年份的产品也算进去),二是它用了ISONORAFTER(..., DESC),这是从当前期间往后累计(比如期间3会算3、4的产品),而你要的是从期间1到当前期间的正向累计。

给你调整后的DAX,完全贴合你的需求:

累计去重产品数(按期间)=
CALCULATE(
    DISTINCTCOUNT('Sheet1'[Product]),
    -- 筛选当前年份内,所有小于等于当前单元格期间的记录
    FILTER(
        ALLSELECTED('Sheet1'[Period]),
        'Sheet1'[Period] <= MAX('Sheet1'[Period])
    ),
    -- 保留当前行的Year上下文,确保累计只在同一年份内进行
    ALLEXCEPT('Sheet1', 'Sheet1'[Year])
)

逻辑解释:

  1. DISTINCTCOUNT('Sheet1'[Product]):核心是统计去重后的产品数量,和你原度量的目标一致
  2. FILTER(ALLSELECTED('Sheet1'[Period]), ...):筛选所有被选中的期间中,小于等于当前单元格期间的那些,实现“累计到当前期间”的效果
  3. ALLEXCEPT('Sheet1', 'Sheet1'[Year]):关键!它会清除除了Year之外的所有筛选上下文,确保累计计算只局限在当前矩阵行对应的年份里,不会跨年份串数据

使用的时候,只需要把Year拖到矩阵的行区域,Period拖到列区域,然后把这个新度量拖到值区域,就能得到你想要的效果:每一行对应年份,每一列对应期间,单元格里是当年从期间1到当前期间的累计去重产品总数。

备注:内容来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:38:15