小伙伴,大家好!今天给大家分享的是如何在Power BI中实现不同类别下的TOPN产品的计算,这类计算并不复杂,也有很多博主写过文章,今天小编给大家介绍两个方法来实现,顺便对比下两个方法的performance。
首先,还是看下最后的实现效果吧,话不多说,直接上图!

解决方案一:只需要用一个度量值即可实现,先用ISINSCOPE对产品名称进行判断,如果True则计算排名。ALLSELECTED在这作为筛选调节器,规避product name的筛选。返回的结果还需要在筛选器对度量值进行筛选(具体如下图)
销售排名 =IF (ISINSCOPE ( 'Product'[Product Name] ),RANKX (CALCULATETABLE (VALUES ( 'Product'[Product Name] ),ALLSELECTED ( 'Product'[Product Name] )),[Sales Amount]))

解决方案二:需要用到多个判断和两个度量值(注意:第二种方法的汇总值是有问题的,这里未作优化处理,并不是计算有问题,大家可以考虑下如何优化,作为一个思考题。)
销售额=IF (IF (HASONEVALUE ( 'Product'[Product Name] ),RANKX ( ALL ( 'Product'[Product Name] ), [Sales Amount] ),BLANK ()) <= 3,[Sales Amount],BLANK ())销售额排名=IF( IF (HASONEVALUE ( 'Product'[Product Name] ),RANKX ( ALL ( 'Product'[Product Name] ), [Sales Amount] ),BLANK ())<=3,IF(HASONEVALUE('Product'[Product Name]),RANKX ( ALL ( 'Product'[Product Name] ), [Sales Amount] ),BLANK()),BLANK())

至于两个方案的performance,由于数据量不大看不到很明显的差异,
如下分别是方案1和方案2的性能测试。
红色是方案1,绿色方案2

需要演示案例可以私信:18923468365
文章转载自PowerBI Home,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




