日期:2023-11-15
来源:玫瑰财经网
浏览:次
在Power BI中我们如果要实现TOPN的展现,这非常简单,通过筛选器中的前N个筛选即可轻松实现。该功能可以解决日常工作中的90%的需求。但还有一些需求是无法通过默认功能来实现的。
例如我现在的需求是通过饼图展现销售额TOP5的城市数据,非TOP5的城市数据统一显示为其他。
这种情况下,我们就需要DAX技巧来实现。我们先来看看效果图。
实现步骤
创建一个城市维表,手动给维表添加值:其他
前五加其他销售 = var Selecte_Value= SELECTEDVALUE('城市'[城市])var City_Sales_Ranking = ADDCOLUMNS( DISTINCT( '地区'[城市] /**/ ) ,"排名结果" , RANKX( DISTINCT( '地区'[城市] /**/ ) , [销售额合计] , , DESC ) )var City_Sales_Ranking_Top5 =TOPN( 5 , City_Sales_Ranking , [排名结果] ,ASC)var Top5_City =SUMMARIZE(City_Sales_Ranking_Top5,[城市])return IF(SELECTE_Value In Top5_City , CALCULATE([销售额合计] ,TREATAS({SELECTE_Value},'地区'[城市] )), IF(SELECTE_Value= "其他", var Sales = [销售额合计] var Top5_City_Sales = CALCULATE([销售额合计] ,TREATAS( Top5_City ,'地区'[城市] )) return Sales - Top5_City_Sales , BLANK() ))
度量解析
1. 获取城市维表(第一步创建)的筛选
var Selecte_Value= SELECTEDVALUE('城市'[城市])
2. 通过销售额对城市进行排名,生成表,并存储为变量。
var City_Sales_Ranking = ADDCOLUMNS( DISTINCT( '地区'[城市] /**/ ) ,"排名结果" , RANKX( DISTINCT( '地区'[城市] /**/ ) , [销售额合计] , , DESC ) )
3. 获取刚才生成的排名表,并通过降序取前五(可根据需求调整)
var City_Sales_Ranking_Top5 =TOPN( 5 , City_Sales_Ranking , [排名结果] ,ASC)
4. 获取销售额前五的城市名称,并存储为变量。
var Top5_City =SUMMARIZE(City_Sales_Ranking_Top5,[城市])
5. 获取的城市筛选是否属于销售额前五的城市。
SELECTE_Value In Top5_City
6.属于情况下返回筛选城市的销售额
CALCULATE([销售额合计] ,TREATAS({SELECTE_Value},'地区'[城市] ))
7. 不属于销售额前五的城市属于情况下 ,再进行判断值是否为其他,其他的情况下返回总销售额- TOP5城市的合计销售额,不为其他的情况下返回空白值。
IF(SELECTE_Value= "其他", var Sales = [销售额合计] var Top5_City_Sales = CALCULATE([销售额合计] ,TREATAS( Top5_City ,'地区'[城市] )) return Sales - Top5_City_Sales , BLANK()
将度量放到值栏上,将城市维表中的城市放入图例栏中。
500吨汽车吊作业性能表(汽车吊支腿反力及抗倾覆验算)
石碣镇汽车站(今天,石碣汽车客运站恢复运营)
招贤汽车站(9月14日起,莒县K601路增开大站快车)
北京福田汽车图片(自重不到两吨,详解福田领航S1小卡)
东风轻型汽车(“东风轻型车”横空出世 未来无人驾驶车将快递送到家门口)
周口市汽车东站(郑阜高速铁路上的主要客运站——周口东站)
Copyright (c) 2022 玫瑰财经网 版权所有
备案号:冀ICP备17019481号
玫瑰财经网发布此信息的目的在于传播更多信息,与本站立场无关。玫瑰财经网不保证该信息(包含但不限于文字、视频、音频、数据及图表)全部或者部分内容的准确性、真实性、完整性、有效性、及时性、原创性等。
相关信息并未经过本网站证实,不对您构成任何投资建议,据此操作,风险自担。