Power BI:在同一柱形图中展示TOPN最高与最低值
Power BI 同柱形图展示TOPN最高与最低值解决方案
问题根源
你当前的度量值返回的是TOP4品牌的总天数之和,而非单个品牌的对应天数。在按DIM_Brand[Brand]分类的柱形图中,每个品牌都会显示这个总和,导致结果完全不符合预期;而创建新表时能正常运行,是因为表是直接输出TOP4的品牌及其单独天数,和可视化的上下文逻辑不同。
解决方案一:计算表筛选目标品牌(推荐)
通过创建计算表提前筛选出TOP4最高和最低的品牌,再用常规度量值展示,逻辑清晰且性能更优:
- 创建计算表,合并目标品牌
Target_Brands = VAR Top4_High = TOPN(4, ALL(DIM_Brand[Brand]), CALCULATE(SUM(FACT_Project_Portfolio[On-Shelf (days)])) , DESC) VAR Top4_Low = TOPN(4, ALL(DIM_Brand[Brand]), CALCULATE(SUM(FACT_Project_Portfolio[On-Shelf (days)])) , ASC) RETURN UNION(Top4_High, Top4_Low)
- 创建常规总天数度量值
Total_On_Shelf_Days = SUM(FACT_Project_Portfolio[On-Shelf (days)])
- 配置柱形图
- 分类轴选择
Target_Brands[Brand] - 值选择
Total_On_Shelf_Days
此时所有目标品牌会在同一图表展示,Y轴自动统一,完全符合需求。
解决方案二:单度量值动态过滤
如果不想创建额外表,可通过度量值判断当前品牌是否在目标范围内,仅返回有效数值:
Filtered_On_Shelf_Days = VAR Current_Brand = SELECTEDVALUE(DIM_Brand[Brand]) VAR All_Brands_Ranked = ADDCOLUMNS( ALL(DIM_Brand[Brand]), "Rank", RANKX(ALL(DIM_Brand[Brand]), CALCULATE(SUM(FACT_Project_Portfolio[On-Shelf (days)]))) ) VAR Total_Brands = COUNTROWS(ALL(DIM_Brand[Brand])) VAR Is_Top4_High = COUNTROWS(FILTER(All_Brands_Ranked, [Brand] = Current_Brand && [Rank] <=4)) > 0 VAR Is_Top4_Low = COUNTROWS(FILTER(All_Brands_Ranked, [Brand] = Current_Brand && [Rank] >= Total_Brands - 3)) > 0 RETURN IF(Is_Top4_High || Is_Top4_Low, SUM(FACT_Project_Portfolio[On-Shelf (days)]), BLANK())
配置柱形图时,分类轴选DIM_Brand[Brand],值选Filtered_On_Shelf_Days,不在TOP4范围内的品牌会被空白过滤,仅显示目标品牌,Y轴保持统一。
内容的提问来源于stack exchange,提问作者Guille López
相关产品推荐
相关产品推荐

