上周我们分享了如何在Power Pivot中对月份进行编号,今天我们和大家一起看一下如何通过对周进行编号,来计算周环比(WOW)。

先来看一下我们的示例模型:

模型由销售记录表和日期表组成,我们已经创建了销售金额的度量值:

销售金额:=SUM([金额])

接下来我们在日期表里对周进行编号。最简单的编号方式是通过WEEKNUM进行,但这个方法会遇到跨年的问题-如果一周跨两年则无法正常计算。所以我们今天介绍另外一种方法:

先通过WEEKDAY把周几的信息提取出来:

=WEEKDAY('日期表'[日期],2)

注意WEEKDAY的第二个参数选2,每周从周一开始,这样符合中国用户的习惯。

接下来我们再通过公式提取出每周对应的周开始日期:

=CALCULATE(MAX('日期表'[日期]),FILTER(ALL('日期表'),'日期表'[第几周]=1&&'日期表'[日期]<=EARLIER('日期表'[日期])))

示例的日期表是从2014年1月1日开始,所以对于前几天没有周开始日期,这个不影响我们后面的周编号,所以忽略即可。

有了周开始日期,我们就可以通过对该日期排序来计算周编号了:

=RANKX('日期表','日期表'[周开始日期],'日期表'[周开始日期],ASC,Dense)

注意升序(ASC)和连续排序(Dense)的参数使用。

这样我们就得到了日期表里所有日期的连续周排序编号,依据此编号可以进行关于周的计算。

要注意一点,如果一周分别在两个月或两年的情况,为了不让周销售额被切片,我们可以对周销售额进行如下书写:

周销售额:=IF(HASONEVALUE('日期表'[周编号]),CALCULATE('销售记录'[销售金额],FILTER(ALL('日期表'),'日期表'[周编号]=VALUES('日期表'[周编号]))))

大家注意看下图第53周的数据,该周横跨了2014和2015年,而我们的周销售额可以正确显示整周的数字。

同理,我们计算上周销售额:

上周销售额:=IF(HASONEVALUE('日期表'[周编号]),CALCULATE('销售记录'[销售金额],FILTER(ALL('日期表'),'日期表'[周编号]=VALUES('日期表'[周编号])-1)))

周环比:

周环比:=DIVIDE('销售记录'[周销售额]-'销售记录'[上周销售额],'销售记录'[上周销售额])

下面是最终的效果:

有了连续的周编号后,我们即可进行多种基于周的时间智能计算。这就是我们今天的分享内容,更多Power Pivot时间智能函数的用法请参考我们的视频课程- Excel Power Pivot数据建模分析(进阶篇)。

*PowerPivot工坊原创文章,欢迎转载,请注明出处

-----------------------------------------------------------------------------------------------------------------------

延伸阅读:

-----------------------------------------------------------------------------------------------------------------------

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

sql 计算周环比wow_通过对周进行编号计算周环比(WOW)相关推荐

  1. SQL Server计算一年中的第几周

    一.计算一年中的第几天DATENAME(dp,d) DATENAME(dp,d)函数根据dp指定返回日期中相应部分的值,dp可以取值为:quarter,dayofyear,day,week,weekd ...

  2. 处理时间_5_计算时间列所在年的周序号

    计算时间列所在年的周序号 需求描述 需求:对EMP表里员工KING和SMITH的hiredate入职时间差,基于生成的日期算每天所在的周,相对于年. 解决方法:通过DATE_FORMAT函数来完成. ...

  3. java 算出下一个工作日_Java 计算一段时间段内除去周六日、节假日的工作日数———超详细(全)...

    Java 计算一段时间段内除去周六日.节假日的工作日数'' 实现功能提要: 本文章记录的是某段时间的起止时间段内的工作日,既是除去周六周日以及节假日日期的工作日数: 注释比较多,因为怕自己忘记,写的可 ...

  4. Java 计算一段时间段内除去周六日、节假日的工作日数———超详细(全)

    Java 计算一段时间段内除去周六日.节假日的工作日数'' 1.前端界面简介 2.后台处理代码 3.注: <END> 实现功能提要: 本文章记录的是某段时间的起止时间段内的工作日,既是除去 ...

  5. Oracle计算某日期段内排除周六日之后的天数(请假,工作日,日期型)

    因为本人不是主要从事Oracle等大数据操作方向,所以对于SQL语句了解并不专业,本文主要用于记录自己的使用心得,以及为广大网友提供思路,如果不喜欢我的解析和讲解可以直接跳过,拿走你觉得有用的SQL. ...

  6. java日期加减秒_Java日期——年、月、日、时、分、秒、周加减计算

    Java日期--年.月.日.时.分.秒.周加减计算 Java日期--年.月.日.时.分.秒.周加减计算 1.Pom依赖 joda-time joda-time 2.9.9 2.示例代码 package ...

  7. java 给一个开学日期,计算当天是开学第几周星期几或者开学第几周星期几为哪一天

    1.计算当天是开学第几周星期几 public static int getweek(Date d1, Date d2) {// 获得当前日期与本周日相差的天数Calendar cd = Calenda ...

  8. java表格计算,JAVA表格两日期间月,周,日计算

    JAVA报表两日期间月,周,日计算 //计算天数 public List day(String dates, String datee) throws ParseException { List da ...

  9. PLSQL计算日期是当月第几周

    网上查询的方法都是这个: SELECT TO_CHAR (p_date, 'W') INTO v_week FROM DUAL; 它实际上是星期N在当月第几次出现. 如本月的第1天是个周四,那么为个月 ...

最新文章

  1. Android Studio 3.0 安装注意点
  2. 电大管理英语4计算机期末考试,国开电大管理英语1单元自测4答案
  3. python语言源程序文件类型_浅谈Python的文件类型
  4. AcWing 898. 数字三角形
  5. UIImage保存到相册
  6. mysql数据库修改结构_Mysql 数据库之修改标的结构
  7. 并发编程之美(1)并发编程基础二
  8. python对象--加减重构
  9. MSDTC不可用解决办法
  10. Base64解码后的图片打不开
  11. JavaScript闭包理解
  12. 如何将工业现场模拟信号无线传输到PLC/主机?
  13. 堆与栈 java_JAVA中堆和栈的区别 - 勇往直前路飞桑的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  14. 财富取决于极少的大高潮,幸福取决于较多的小高潮
  15. 写给 35 岁的自己!
  16. 【BYM】Android模块化实践复盘
  17. Lombok @Slf4j 使用和配置
  18. TP-LINK WR941N 拆机全记录
  19. Spring Boot + vue-element 开发个人博客项目实战教程(四、数据库搭建和配置)
  20. 支付宝pc扫码支付简单实现

热门文章

  1. Parameter-FreeSpatialAttentionNetworkforPersonRe-Identification
  2. mysqldump命令备份数据 mysql备份数据
  3. 弥散峰度成像DKI简介
  4. R 语言与中心极限定理
  5. Java程序启动QQ(九)
  6. Android运行报错Manifest merger failed : uses-sdk:minSdkVersion 26 cannot be smaller than version 28 decl
  7. 分支定界算法在中学排课问题中的应用
  8. 科技云报道:AI+Science、元宇宙、仿生机器人……云栖大会带你看到未来的样子
  9. 计算机没考好的检讨书300百以上,考试反思检讨书300字范文7篇
  10. 基于fl2440内核linux-3.0移植----触摸屏移植