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

DAX解决PowerPivot多对多关系下付费方泵分摊数量计算问题

Excel PowerPivot:按付费方分摊泵数量的DAX解决方案

需求回顾

需要计算各付费方按房间分摊比例承担的泵数量:

  • P1:Room1的2台泵 × 70% = 1.4
  • P2:Room1的2台泵×30% + Room3的1台泵×100% = 1.6

问题分析

你之前插入唯一房间表后,度量值仅计算了「房间数量×分摊比例」,未关联房间内的泵数量,导致结果不符合预期。以下提供两种可行方案:


方案一:生成Room匹配的关联计算表

通过DAX创建计算表,将Table1的泵记录与Table2的付费记录按Room关联,直观展示每条泵对应的分摊比例,便于后续分析:

Pump_Payer_Allocation = 
FILTER(
    CROSSJOIN(Table1, Table2),
    Table1[Room] = Table2[Room] && Table1[Kategory] = "Pump"
)

说明:

  1. CROSSJOIN生成两表的笛卡尔积
  2. FILTER筛选出Room匹配且设备类型为Pump的记录
  3. 基于此表,按Payer汇总Percent列即可得到各付费方的分摊泵数量(每条泵记录对应一次比例,SUM后自动累加为泵数×比例)

方案二:直接用度量值实现(无需新建表)

适合保留原有数据模型结构的场景,直接通过度量值计算分摊数量:

Pump_Share_Per_Payer = 
SUMX(
    Table2,
    CALCULATE(
        COUNTROWS(Table1),
        Table1[Room] = Table2[Room],
        Table1[Kategory] = "Pump"
    ) * Table2[Percent]
)

说明:

  1. SUMX遍历Table2中每个「付费方-房间」组合
  2. CALCULATE计算当前房间内的泵数量
  3. 将泵数量乘以该组合的分摊比例,最后累加所有组合的结果,得到付费方总分摊数

原度量值问题说明

你之前的Share:=CALCULATE(SUM(Table2[Percent]);Table1)仅传递了Table1的上下文,计算的是付费方对应房间的比例之和,未关联房间内的泵数量,因此得到的是「房间数×比例」而非「泵数×比例」。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:13:36