前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Power Pivot中通过添加列计算不连续日期移动平均?

如何在Power Pivot中通过添加列计算不连续日期移动平均?

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

(二) 通过添加列计算不连续日期移动平均

之前我们讲了连续日期的移动平均的求法,那我们这次来看下如果不连续日期如何计算移动平均。

数据表——表1

效果

我们知道计算移动平均有3个条件:均值起始值,均值结束值以及最早可计算日期。其中连续和不连续日期最大的差异就是在均值的起始值。因为之前我们的起始值表示的是 '表1'[日期]>=Earlier('表1'[日期])-5),但是在不连续日期时,这个计算表达式就不能准确的表示。所以我们需要另外换一种方式来表达往前推5日。

1. 函数思路

A. 计算均值的起始日期

因为日期是不连续的,所以起始日应该是当天往前推第5天,而要表达不连续往前推5天就不能直接用日期-5的表示方式,所以我们需要计算当前日期的排序,这里可以使用2种表达方式,一种是CountRows,一种是RankX。

  • CountRows写法:
代码语言:javascript
复制
CountRows(Filter('表1','表1'[日期]<=Earlier('表1'[日期]))-5
  • RankX写法:
代码语言:javascript
复制
RankX('表1','表1'[日期],,ASC)-5
B. 计算均值的结束日期

结束日期应该就是当前日期,这里会涉及到Earlier函数

代码语言:javascript
复制
'表1'[日期]<Earlier('表1'[日期])
C. 计算最早可达到条件的日期

我们要计算5日均线,那就必须要有5日的数据才可以用于计算

代码语言:javascript
复制
Calculate(LastnonBlank('表1'[日期],1),TopN(5,'表1'))

先筛选出最前的5行,然后取最后一天的日期。当然这里也可以直接用>计算出的序列

代码语言:javascript
复制
CountRows(Filter('表1','表1'[日期]<=Earlier('表1'[日期]))>5

2. 函数合并

如果我们不需要另外单独建1列用作序列,可以直接写在内存里,这里我们使用var变量来处理。

代码语言:javascript
复制
var number=
CountRows(Filter('表1',
                 '表1'[日期]<=Earlier('表1'[日期])
                 )
          )
return 
if(number>5,   //满足5日均线计算条件
   AverageX(
//筛选序列小于当前值
            Filter('表1',
                   CountRows(FILTER('表1',
                             '表1'[日期]<=Earlier('表1'[日期])
                     )
                )<number && 
//同时筛选序列大于等于往前推5次
                   CountRows(Filter('表1',
                                    '表1'[日期]<=Earlier('表1'[日期])
                                   )
                             )>=number-5
                   ),
           '表1'[金额]),
   Blank()
   )

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (二) 通过添加列计算不连续日期移动平均
    • 1. 函数思路
      • A. 计算均值的起始日期
      • B. 计算均值的结束日期
      • C. 计算最早可达到条件的日期
    • 2. 函数合并
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档