如何在Power BI中为每行添加显示分组小计的独立列
在Power BI中实现分组差值列的方案
问题说明
原始数据如下:
| Product | price | day |
|---|---|---|
| A | 45 | 1 |
| A | 53 | 1 |
| A | 60 | 2 |
| B | 50 | 1 |
| B | 67 | 1 |
| B | 40 | 2 |
| B | 50 | 2 |
需求是:按Product分组,计算该组Day2的price总和减去Day1的price总和,并将这个差值作为独立列,显示在对应分组的每一行中,最终效果如下:
| Product | price | day | change |
|---|---|---|---|
| A | 45 | 1 | 38 |
| A | 53 | 1 | 38 |
| A | 60 | 2 | 38 |
| B | 50 | 1 | 10 |
| B | 67 | 1 | 10 |
| B | 40 | 2 | 10 |
| B | 50 | 2 | 10 |
实现方法
方法1:创建计算列(推荐,数据持久化)
在数据视图中选中原始表,点击「新建列」,输入以下DAX表达式:
change = VAR CurrentProduct = '你的表名'[Product] VAR Day1Total = CALCULATE(SUM('你的表名'[price]), FILTER('你的表名', '你的表名'[Product] = CurrentProduct && '你的表名'[day] = 1)) VAR Day2Total = CALCULATE(SUM('你的表名'[price]), FILTER('你的表名', '你的表名'[Product] = CurrentProduct && '你的表名'[day] = 2)) RETURN Day2Total - Day1Total
- 替换
你的表名为实际的表名称 - 如果需要取差值的绝对值,将最后一行改为
RETURN ABS(Day2Total - Day1Total)
确认后,表中会新增change列,每个分组的所有行都会显示对应的差值。
方法2:创建度量值(适合可视化场景)
如果不需要修改原始表结构,可创建度量值:
- 点击「新建度量值」,输入DAX:
Group Change = VAR CurrentProduct = SELECTEDVALUE('你的表名'[Product]) VAR Day1Total = CALCULATE(SUM('你的表名'[price]), ALL('你的表名'), '你的表名'[Product] = CurrentProduct, '你的表名'[day] = 1) VAR Day2Total = CALCULATE(SUM('你的表名'[price]), ALL('你的表名'), '你的表名'[Product] = CurrentProduct, '你的表名'[day] = 2) RETURN Day2Total - Day1Total
- 在可视化面板中插入表格,添加
Product、price、day字段,再添加Group Change度量值,即可实现需求效果。
内容的提问来源于stack exchange,提问作者A_B
相关产品推荐
相关产品推荐

