zoukankan      html  css  js  c++  java
  • 数据可视化之powerBI技巧(九)PowerBI按周进行业务分析的思路

    按周进行数据分析,在零售业、电商等类型的公司中很常见,但是不少人觉得按周进行分析无从下手,一个主要的原因是找不到对应的函数,因为时间智能函数只对应年、季、月、天这几个粒度,没有关于周的时间智能函数。

    没有相应的函数当然也能搞定,本文就介绍几种常见的周分析的思路,掌握后就可以灵活地进行各种时间分析。


     

    进行周分析之前,我们首先应该构造含有周序列的日期表。

    创建日期表

    在日期表中,应该包含每个日期是周几,以及属于一年中的第几周的数据,这里直接用DAX生成一个日期表,

     

    日期表 =
    ADDCOLUMNS(
    ADDCOLUMNS (
    CALENDAR (DATE(2016,1,1), DATE(2017,12,31)),
    "年度", YEAR ( [Date] ),
    "季度", "Q" & FORMAT ( [Date], "Q" ),
    "月份", FORMAT ( [Date], "MM" ),
    "日",FORMAT ( [Date], "DD" ),
    "年度季度", FORMAT ( [Date], "YYYY" ) & "Q" & FORMAT ( [Date], "Q" ),
    "年度月份", FORMAT ( [Date], "YYYY/MM" ),
    "周几", WEEKDAY ( [Date],2 ),
    "周数",WEEKNUM([Date],2)
    ),
    "年度周数",[年度]*100+[周数]
    )

     

    其中主要是两个有关周的函数,WEEKDAY和WEEKNUM。

    WEEKDAY返回当前日期是星期几,其中第二个参数可以控制每周是从哪一天开始的,

    • 参数为1时:周日为第一天,编号为1到7.
    • 参数为2时:周一为第一天,编号为1到7.
    • 参数为3时:周日为第一天,编号为0到6.

     

    WEEKNUM返回当前日期属于当年的第几周,其中第二个参数可以控制每周的第一天是周日还是周一,

    • 参数为1时:周日为第一天
    • 参数为2时:周一为第一天

     

    每个单位进行周分析的习惯或者考核周期不一样,就可以通过这两个函数的参数,来调整周开始的时间。

    这里我们使用国内常用的周一作为第一天。

     

     

     

     

    并且为了使每年的周数具有唯一性,添加了年度周数的字段。有了这个日期表,进行各种周分析就很方便了。

     

    上周同期

     

    上周同期,就是上周的今天,比如今天是星期三,上周同期就是计算上个星期三的数据,其实就是向过去移动7天,那么度量值可以这样写:

     

    上周同期 销售额 =
    CALCULATE(
    [销售金额],
    DATEADD('日期表'[日期],-7,DAY)
    )

     

     

     

     

     

    本周至今

     

    时间智能函数中有本年至今YTD、本季至今QTD和本月至今MTD,但没有本周至今(可以称为WTD),那么我们自己来构造一个WTD,实际就是周数相同的,小于等于当天的这几日的数据;

     

    本周至今WTD =
    VAR curyearweek=SELECTEDVALUE('日期表'[年度周数])
    RETURN
    CALCULATE(
    [销售金额],
    FILTER(
    ALL('日期表'),
    '日期表'[年度周数]=curyearweek
    &&'日期表'[日期]<=MAX('日期表'[日期])
    )
    )

     

     

     

     

     

    周环比

     

    计算周环比,实际上就是本周数据和上周数据的对比,只要计算出上周累计的数据,周环比也就可以简单的计算出来了。

     

    上周累计 =
    VAR curyear= SELECTEDVALUE('日期表'[年度])
    VAR curweeknum=SELECTEDVALUE('日期表'[周数])
    RETURN
    CALCULATE(
    [销售金额],
    FILTER(
    ALL('日期表'),
    '日期表'[年度]=curyear
    &&'日期表'[周数]=curweeknum-1
    )
    )

     

    周环比 = DIVIDE([销售金额],[上周累计])-1

     

     

     

     

    你可能注意到了,第一周的数据比较异常,主要是由于第一周没有上期数据,并且第一周的天数很可能不完整,所以数据会比较异常。关于这个问题并没有统一的解决方式,主要是根据自己公司的业务分析习惯,或者管理与考核的要求,进行具体的微调。

     

    通过以上几种常见的周分析思路,你应该感觉到对周进行分析并不难,熟练运用VAR和CALCULATE+FILTER+ALL函数组合,灵活筛选时间段,不仅是对周,对各种不规则的时间序列都可以进行灵活分析,当然,最重要的是,先构建一个满足分析需要的日期表。

  • 相关阅读:
    sqlserver 表操作 SQL篇
    C#知识点汇总
    DDL
    sqlserver2008简介
    面向对象继承
    IO文件流
    【帅刺猬课堂】Winform中使用WPF的UserControl
    KS Gantt甘特图控件通过递归加载无限层级的数据
    Office 每次打开需要重新配置的问题修复方法
    扩展方法
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12795927.html
Copyright © 2011-2022 走看看