zoukankan      html  css  js  c++  java
  • 数据可视化之DAX篇(二十五)PowerBI常用的度量值:累计至今

    https://zhuanlan.zhihu.com/p/64999937

    经常碰到本年至今、本月至今的数据计算,其实还有一类计算是,从历史最早日期至今的累计计算,比如从开业到现在总共卖出了多少件商品,累计实现了多少销售额等。

    本年累计称为YTD,历史至今的累计是不是可以称为HTD呢:) ;这样的时间段很可能是跨年的,所以时间智能函数并不适用,不过不用时间智能函数依然可以很简单的进行计算。

    模拟数据如下:

     

    只是计算一个整体累计销售额很简单,我们想要计算的是从最初到任意一个日期的累计销售额,为了能一次计算出各种粒度的历史至今,可以先构造一个日期表并建立关系。(参考:玩PowerBI必备的日期表制作方式汇总

    然后写个度量值,

    历史至今 累计收入 =

    CALCULATE(

    SUM('订单表'[销售额]),

    FILTER(

    ALL('日期表'),

    '日期表'[日期]<=MAX('日期表'[日期])))

     

    然后在矩阵中看看结果,

     

     

    结果正是历史所有订单的累计销售额,这个度量值的关键是用MAX函数获取当前上下文的日期,然后返回小于等于当前日期的所有销售额的合计。

    这个度量值写法有一个问题,就是它把日期表中所有的日期都计算了一遍,其实大于最后一个订单日期的无须计算,因为结果并不会发生变化。

    为了解决这个问题,可以先把最后一个订单日期找出来:

    订单最大日期 = MAXX(ALL('订单表'),'订单表'[订单日期])

    然后在历史累计中增加个判断条件,

    历史至今 累计收入 优化 =

    IF(
    MIN('日期表'[日期])<=[订单最大日期],
    CALCULATE(
    SUM('订单表'[销售额]),
    FILTER(
    ALL('日期表'),
    '日期表'[日期]<=MAX('日期表'[日期]))))

    再来看一下结果,

     

     

    正是期望的效果。

    历史至今的聚合计算,不一定只是累计求和,还可以找出历史上最大的订单金额,或者历史至今的平均订单金额,这些情况只需要改一下聚合函数就行了,比如平均订单金额就是把SUM改成AVERAGE,

    历史至今 平均订单订单 =

    IF(
    MIN('日期表'[日期])<=[订单最大日期],
    CALCULATE(
    AVERAGE('订单表'[销售额]),
    FILTER(
    ALL('日期表'),
    '日期表'[日期]<=MAX('日期表'[日期]))))

    最大最小订单同理,不再一一列出,结果如下:

     

  • 相关阅读:
    管线命令
    CentOS7搭建本地YUM仓库,并定期同步阿里云源
    linux日志分割脚本
    Centos 7 命令整理
    python实现变脸动画测试
    python打印杨辉三角
    python打印乘法口诀,敏感字替换
    python食人蛇代码
    用python写的考勤自动打卡程序
    tomcat发版脚本
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12821272.html
Copyright © 2011-2022 走看看