前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KEEPFILTERS函数针对筛选后汇总行的影响

KEEPFILTERS函数针对筛选后汇总行的影响

作者头像
逍遥之
发布2020-03-24 16:01:01
1K0
发布2020-03-24 16:01:01
举报
文章被收录于专栏:数据技巧

我们有这样一张表及汇总金额。

要求:

  • 求3个月的平均金额
  • 求2年的平均金额

这种要求看起来还是比较简单的,因为是以日历的天为计算颗粒,直接写度量即可。

代码语言:javascript
复制
AverageX('表1',[金额总和])

但是如果我想把未展开的数据作为一个整体来进行计算的话则不一样了。

要求:

  • 求每月的平均销售额

针对月份,我们可以使用Values来进行计算。

代码语言:javascript
复制
AverageX(Values('日历'[月]),[金额总和])

但是请注意使用这个公式的时候在总计这里出错了,我们要求的总计应该是(25+45+65+85+105+125)/6=75,而这里却是150。

是因为什么原因导致的呢?这个150是怎么计算的出来的呢?

  • 实际上这个150是这样算出来的(25+45+65+85+105+125)/3=150

因为我们使用Valuse的是会对月份进行去重的,所以2018年和2019年加起来通过values求得的是3,所以最终除以的也是3。

那如何根据我们原先的需求去计算呢?这个时候我们在计算values的时候要把2018年的月份和2019年的月份区分开,把月份作为唯一值进行计算。

代码语言:javascript
复制
专注月平均正确:=AverageX(Values('日历'[MMM-YYYY]),[金额总和])

这样我们计算的结果才是我们想要的。

之前我们知道有这个专注月份这个度量:

代码语言:javascript
复制
AverageX(Values('日历'[月]),[金额总和])

结果是合计后除以values计算后的月份个数,但有一个问题,我们看下

我们对数据做了筛选,但结果却依旧没有改变。

那我们还是依旧想使用筛选过后的数据除以values计算出来的月份数量该如何操作呢?

这个时候就可以使用KeepFilters函数了。在原有进行计算values的时候加多一层KeepFilters,就可以保证在计算的时候可以随着具体的筛选来进行变动的计算。

代码语言:javascript
复制
专注月平均KeepFilters:=AverageX(KeepFilters(Values('日历'[月])),[金额总和])

我们来看下使用这个函数后的结果。

要点:

  • 如果是月份不重复,他的结果就和专注月平均正确这个度量值相同的计算结果。
  • 如果月份有重复则按照之前的原则进行计算。第2张图片的计算原理也就是(25+45+105+125)/3=100

我们最后在反过来看下这个函数名称KeepFilters,也就是保持筛选,代表着筛选是会起作用的。

我们再思考下,如果需要计算的是(25+230)/2=127.5这种结果,我们该怎么写?

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档