FILTER+COUNTROWS 场景应用


现有如下场景:某食品制造商要分析其每年双十一、618在电商平台销售产品的情况,及目标达成情况。数据结构如下:
file

数据会记录每年(Year)、每个活动期间(Type)、每个产品(Product)、每天(Date)的销售额(Sales),而目标(Target)则不会分到每天。所以我们看到,下面两条数据中,2019年、双11,京东、A产品的Target是重复的两个10000。

file

如果直接对Target进行求和的话,肯定会造成结果成倍增大,所以,我们要怎样求得正确的Target值呢?
首先的想法是,当Type、Product、Customer、Year均相同时,Target值相同,那就取第一个Target值即可,其他重复的将其变成0。
为了简化公式,我们先创造一个Key键(把能确认一个唯一Target值的关键字段合并在一起)。
file

然后把Key键相同的筛选出来编号,取编号为1的对应的Target值。编码公式如下:

RowNo. = COUNTROWS(FILTER('表',[Key]=EARLIER([Key])&&[ID]<=EARLIER('表'[ID])))

此公式写于计算列,其含义是,在计算每一行时,是在该表中筛选出所有Key值与当前行Key值相同,并且ID小于等于当前行ID的行,接着对筛选出来的这个表计算行数。

file

可想而知,相同Key键组成的表,ID最小的其编码就等于1,即第一行。
取编码为1的Target值作为该Key键的目标,其他标记为0.

Target_Distinct = IF(COUNTROWS(FILTER('表',[Key]=EARLIER([Key])&&[ID]<=EARLIER('表'[ID])))=1,[Target],0)

file

这样,对该列求和便是我们想要的结果。

 Target_ = SUM('表'[Target_Distinct])

当然,其实该场景比较简单的方法是,单独准备一张目标表,将目标表通过Key键与销售表关联,从而计算目标达成率。

file

本期内容就是这些,小伙伴们下期再见!

  • PowerPivot工坊原创文章,转载请注明出处!

    如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊