Power BI 如何基于同表其他行在同一列实现Value减Spend计算
Power BI 「Value - Spend」计算两种可行方案
你可以根据自己的使用场景二选一:
方案1:Power Query 修改源表结构(生成物理Return行)
适合需要把Return作为实际行存储到表中、后续需要做其他关联计算的场景,操作步骤如下:
- 进入Power Query编辑器,选中你的源表,点击「转换」选项卡下的「分组依据」
- 分组设置:按
Product列分组,新列名自定义(比如命名为分组数据),操作选择「所有行」,点击确定 - 点击「添加列」选项卡下的「自定义列」,输入如下公式:
Table.InsertRows( [分组数据], 2, { [ Product = [Product], Values = "Return", Outcomes = List.Sum(Table.SelectRows([分组数据], each [Values] = "Value")[Outcomes]) - List.Sum(Table.SelectRows([分组数据], each [Values] = "Spend")[Outcomes]) ] } )
- 展开新生成的自定义列,勾选
Product、Values、Outcomes三个字段,删除多余的分组列,即可得到你预期的表结构。
方案2:DAX 度量值方案(无需修改源表,直接在可视化组件展示)
适合只需要在仪表板展示结果、不需要修改源表结构的场景,灵活性更高,操作步骤如下:
- 新建三个基础度量值:
总Value = CALCULATE(SUM('你的表名'[Outcomes]), '你的表名'[Values] = "Value")
总Spend = CALCULATE(SUM('你的表名'[Outcomes]), '你的表名'[Values] = "Spend")
Return = [总Value] - [总Spend]
- 如果你需要和原有Value、Spend行合并展示,再新建一个Values维度表:
Values维度 = UNION(VALUES('你的表名'[Values]), {"Return"})
- 新建动态展示度量值:
展示结果 = SWITCH( SELECTEDVALUE('Values维度'[Values]), "Value", [总Value], "Spend", [总Spend], "Return", [Return], BLANK() )
- 可视化配置:表格/矩阵的行字段依次放
Product、Values维度[Values],值字段放展示结果度量值,即可直接输出你要的展示效果。
内容的提问来源于stack exchange,提问作者KJSHINY
相关产品推荐
相关产品推荐

