FILTER+COUNTROWS 场景应用
现有如下场景:某食品制造商要分析其每年双十一、618在电商平台销售产品的情况,及目标达成情况。数据结构如下:
数据会记录每年(Year)、每个活动期间(Type)、每个产品(Product)、每天(Date)的销售额(Sales),而目标(Target)则不会分到每天。所以我们看到,下面两条数据中,2019年、双11,京东、A产品的Target是重复的两个10000。
如果直接对Target进行求和的话,肯定会造成结果成倍增大,所以,我们要怎样求得正确的Target值呢?
首先的想法是,当Type、Product、Customer、Year均相同时,Target值相同,那就取第一个Target值即可,其他重复的将其变成0。
为了简化公式,我们先创造一个Key键(把能确认一个唯一Target值的关键字段合并在一起)。
然后把Key键相同的筛选出来编号,取编号为1的对应的Target值。编码公式如下:
RowNo. = COUNTROWS(FILTER('表',[Key]=EARLIER([Key])&&[ID]<=EARLIER('表'[ID])))
此公式写于计算列,其含义是,在计算每一行时,是在该表中筛选出所有Key值与当前行Key值相同,并且ID小于等于当前行ID的行,接着对筛选出来的这个表计算行数。
可想而知,相同Key键组成的表,ID最小的其编码就等于1,即第一行。
取编码为1的Target值作为该Key键的目标,其他标记为0.
Target_Distinct = IF(COUNTROWS(FILTER('表',[Key]=EARLIER([Key])&&[ID]<=EARLIER('表'[ID])))=1,[Target],0)
这样,对该列求和便是我们想要的结果。
Target_ = SUM('表'[Target_Distinct])
当然,其实该场景比较简单的方法是,单独准备一张目标表,将目标表通过Key键与销售表关联,从而计算目标达成率。
本期内容就是这些,小伙伴们下期再见!
-
PowerPivot工坊原创文章,转载请注明出处!
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~
Power Pivot工坊
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)