PowerBI中按ID分组并仅对Type为A的Amount求和的实现求助
两种实现方案(DAX + Power Query)
DAX 实现方案
1. 计算列(嵌入原表)
如果要在原数据表中新增一列,直接展示每个ID对应的Type=A的Amount总和,使用以下DAX公式:
Sum_A_Amount = CALCULATE( SUM('数据表'[Amount]), ALLEXCEPT('数据表', '数据表'[ID]), '数据表'[Type] = "A" )
替换公式中的'数据表'为你的实际表名即可。ALLEXCEPT会保留当前行的ID筛选条件,只对Type为A的行求和。
2. 度量值(报表动态计算)
如果是在报表可视化中需要动态计算(比如配合切片器交互),创建度量值更合适:
Total_A_Amount = CALCULATE( SUM('数据表'[Amount]), '数据表'[Type] = "A" )
使用时,将ID字段和该度量值添加到表格等视觉对象中,PowerBI会自动按ID分组计算对应结果。
Power Query 实现方案
图形化操作步骤
- 进入PowerBI的Power Query编辑器(点击主页选项卡的"转换数据")
- 选中目标数据表,点击开始选项卡 → 分组依据
- 在分组窗口选择高级模式:
- 分组列选择
ID,操作选"分组依据" - 新增聚合列:列名设为
Sum_A_Amount,操作选"求和",目标列选Amount,然后点击"添加条件",设置Type等于"A"
- 分组列选择
- 点击确定,即可得到按ID分组、仅统计Type=A的Amount求和表
M语言直接编写
如果习惯用代码实现,可在Power Query的高级编辑器中替换为以下M代码:
let 源 = 你的数据源, 按ID分组并筛选TypeA求和 = Table.Group(源, {"ID"}, {{"Sum_A_Amount", each List.Sum(Table.SelectRows(_, (行) => 行[Type] = "A")[Amount]), type number}}) in 按ID分组并筛选TypeA求和
替换你的数据源为实际的数据源引用,这段代码会先按ID分组,再在每个分组内筛选Type=A的行,最后对Amount求和。
内容的提问来源于stack exchange,提问作者BillyBouw
相关产品推荐
相关产品推荐

