基于数据透视表聚合列创建计算列,实现Entity列阈值替换
Power Pivot实现透视表聚合上下文下的Entity分组重写
现有数据表
| Country | Type | Entity | Score |
|---|---|---|---|
| Country1 | Type1 | Entity1 | 1 |
| Country2 | Type2 | Entity1 | 2 |
| Country3 | Type3 | Entity1 | 3 |
| Country4 | Type4 | Entity2 | 4 |
| Country5 | Type5 | Entity3 | 5 |
需求说明
在数据透视表的聚合上下文里,当Entity对应的Score聚合值≥5时保留原名称,否则统一归为「其他」,且需适配透视表的筛选上下文。之前尝试计算列无法响应筛选变化,度量值无法返回字符串,无法实现需求。期望输出(阈值≥5时):
| 行标签 | Score求和 |
|---|---|
| Entity1 | 6 |
| Entity3 | 5 |
| 其他 | 4 |
| 总计 | 15 |
解决方案
方法1:计算表+计算列(稳定适配筛选)
- 创建Entity聚合计算表
在Power Pivot编辑器中新建计算表,预计算每个Entity的Score总和,该表会随透视表筛选自动更新:
Entity_Summary = SUMMARIZE( '原数据表', '原数据表'[Entity], "Total_Score", SUM('原数据表'[Score]) )
- 在原数据表中添加分组计算列
给原数据表新增计算列,根据Entity_Summary的总分判断分组:
Entity_Group = VAR CurrentEntityTotal = CALCULATE( SUM('Entity_Summary'[Total_Score]), 'Entity_Summary'[Entity] = '原数据表'[Entity] ) RETURN IF(CurrentEntityTotal >= 5, '原数据表'[Entity], "其他")
- 配置透视表
将Entity_Group拖入透视表的「行标签」区域,Score拖入「值」区域并设置为求和,即可得到目标输出。
方法2:纯度量值+透视表计算字段(更灵活)
无需创建计算表,用透视表的计算字段实现动态分组:
- 先创建基础总分度量值:
Total_Score = SUM('原数据表'[Score])
- 在透视表中添加计算字段:
Entity_Dynamic_Group = IF( CALCULATE(SUM('原数据表'[Score]), ALLEXCEPT('原数据表', '原数据表'[Entity])) >= 5, '原数据表'[Entity], "其他" )
- 将
Entity_Dynamic_Group设置为行标签,Total_Score作为值字段,即可实现动态分组。
内容的提问来源于stack exchange,提问作者DDV
相关产品推荐
相关产品推荐

