• Power BI-Power Pivot-客户最后下单时间(1)


    今天在Power BI星球中看了一篇有关计算列和度量值差异的案例文章,其操作是在Power BI Desktop中完成的,我这里将该案例转换为Excel2016中的实现方式,案例中的数据类似如下图所示。

    2019-08-17_222934

    我们的目的就是算出每个客户的最后的订单日期值,这个需求非常简单,即使使用Excel公式都很容易实现,但是这个案例主要的目的是用最简单的方式来理解计算列和度量值。

    首先我们来看看Power Pivot中的计算列

    1、在空白的Excel工作表中录入如上图所示的数据内容后,将其转换为“表”并重新设置名称

    2019-08-17_222934

    2、在Power Pivot选项卡中,找到“添加到数据模型”按钮,打开Power Pivot界面如下

    2019-08-17_222934

    3、我们首先使用“添加列”的方式,尝试一次,按照逻辑,每个客户的最后的订单日期,就是求每个客户订单日期的最大值,我们首先使用公式

    =MAX([订单日期])

    说明几点:

    此处使用的是计算列,并且引用的是本表中的列,所以不需要标注出表名称

    字段名称使用成对的中括号隔离,表名称使用成对的单引号隔离

    2019-08-17_222934

    结果分析1

    观察图片所得到的的结果,可以看出采用类似Excel写公式的逻辑,返回的结果是错误的,该计算列中所有行返回的是同一个值,即订单日期列的最大日期值。

    我们需要计算列在每一行中针对该行自己的情况(上下文)来计算,此时需要使用Calculate函数,那么我们就来看看套用了Calculate后的结果

    2019-08-17_222934

    结果分析2

    观察图片所得到的的结果,套用Calculate函数后,使每一行在计算的时候都考虑了当前行的情况,也就是使用了当前行的数据。更准确的说是使用当前行的所有列的值筛选了整个表的所有行。

    即:例如第一行,筛选条件为:订单日期为2019/1/1,客户名称为甲,产品名称为A,金额为100的所有行。

    筛选完毕后,再在该筛选结果表上计算订单日期的最大值。

    我们在Excel中新添加一行数据,与第1行数据一模一样,将计算的逻辑切换为计算金额合计,修改公式来观察结果,其计算的结果为200

    2019-08-17_222934

    基于以上情况的分析,如果我们需要按客户来计算订单日期的最大值,那么就需要清除对订单日期、产品名称、金额列的筛选条件,此时我们就需要借助于AllExcept函数

    =CALCULATE(MAX([订单日期]),ALLEXCEPT('订单数据','订单数据'[客户]))

    ALLEXCEPT函数有2个参数:

    第一个参数:进行筛选排除的表名

    第二个参数:将只对该参数中指定的列实施筛选,其它的列将清除筛选

    2019-08-17_222934

    启示总结:

    在调用CALCULATE函数才会启动按行筛选功能,否则函数的计算将没有任何筛选数据能力,最终的计算将针对整个表计算

    在没有配置行筛选的范围时,对于每一行,将会使用所有的列的值对表数据行进行筛选

    要控制筛选条件,需要使用筛选过滤的函数进行处理,例如ALLEXCEPT

  • 相关阅读:
    【一起来烧脑】读懂HTTP知识体系
    Day16:小前端
    Day15:大前端
    Day14:CSS垂直居中
    Day13:H5+JS+C3
    web学习
    javascript 闭包
    微信小程序微信登录
    微信小程序开源
    mpvue搭建小程序框架
  • 原文地址:https://www.cnblogs.com/alexywt/p/11370950.html
Copyright © 2020-2023  润新知