PowerBI中如何同时展示行业Top5及自身公司的市场份额柱形图
解决PowerBI中同时展示行业Top5与自身公司市场份额的问题
下面是具体实现步骤,按顺序操作即可:
1. 创建「总市值」度量值
首先计算全行业总市值,这个值要忽略视觉对象的筛选,确保市场份额的分母是完整的行业总和:
总市值 = CALCULATE(SUM('市值表'[市值]), ALL('市值表'))
2. 创建「是否显示」筛选度量值
用这个度量值标记需要展示的公司:行业Top5,或者你的目标公司Mangoes:
是否显示 = VAR 公司当前市值 = CALCULATE(SUM('市值表'[市值])) VAR 行业市值排名 = RANKX(ALL('市值表'[公司]), 公司当前市值,, DESC) RETURN IF(OR(行业市值排名 <= 5, '市值表'[公司] = "Mangoes"), 1, 0)
通过变量拆分逻辑更易读,RANKX会给所有公司按市值降序排名,排名前5的公司和Mangoes都会被标记为1。
3. 设置柱形图的视觉级筛选器
- 选中目标柱形图,打开右侧「筛选器」面板
- 将「是否显示」度量值添加到「视觉级筛选器」
- 设置筛选条件为「等于1」
4. 创建「市场份额」度量值
计算每个公司的市场占比,用DIVIDE避免分母为0的错误:
市场份额 = DIVIDE(SUM('市值表'[市值]), [总市值], 0)
第三个参数是分母为0时的默认值,这里设为0。
5. 配置柱形图
- 把「公司」字段拖到柱形图的「轴」区域
- 把「市场份额」度量值拖到「值」区域
- 调整格式:右键值字段选择「格式」,将其设置为百分比显示
补充说明
- 确保公司名称完全匹配,比如"Mangoes"的大小写、空格要和数据表中一致
- 如果报表有全局筛选器(如年份、区域),可把
ALL('市值表')改成ALLSELECTED('市值表'),让总市值只计算筛选后的范围 - 若要包含并列第5的所有公司,可修改
RANKX参数为DENSE:RANKX(ALL('市值表'[公司]), 公司当前市值,, DESC, DENSE)
内容的提问来源于stack exchange,提问作者CodeMeARiver
相关产品推荐
相关产品推荐

