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

假设有一组数据,

已知每一个产品贡献的利润,如果要计算前几名产品的贡献利润总和,或者每一个产品和利润更高产品的累计贡献占总体的比例,就涉及到累计求和,数据量较小的情况下,在 Excel 中可以轻松实现,毕竟 Excel 是对单元格进行操作。

但是在 PowerBI 中,对整个字段运算很简单,而对每一行的数据进行筛选汇总,却需要动一点小心思,下面就以此表为例介绍几种常用的累计求和方式,并以此案例来进一步掌握几个函数的用法。

利用 M 函数累计求和

将该数据导入到 PQ 编辑器中,添加自定义列,

公式栏中输入M函数,

=List.Sum(Table.SelectRows(更改的类型,(x)=>x[利润]>=[利润])[利润])

然后就新增加了一列累计利润,

对这里的公式稍微解释一下,

Table.SelectRows 函数用来筛选表中符合条件的行,"更改的类型"是表的名称,在PQ编辑器中,每一个步骤就是一个表,步骤名就是该表的名称。

(x)=>x[利润]>=[利润]是筛选条件,这个相对比较难理解,还记得之前介绍的自定义函数吗,见到=>这个符号,就代表这里有个自定义函数,只是在这里是内置函数。意思为每一行为变量x,只要第x行的利润数大于等于当前行的利润,就利用 Table.SelectRows 函数把改行筛选出来。

而 Table.SelectRows 函数返回的是一个表,如果要提取该表中利润列,就是在该函数外面再加上字段名进行深化,于是就有了 Table.SelectRows(更改的类型,(x)=>x[利润]>=[利润])[利润],它返回的是符合条件的利润列。

最后再在最外面套上 List.Sum 函数对该列进行求和,就得到了以上表中累计利润。

利用 DAX 进行累计求和

在 DAX 中可以用 EARLIER 函数和 VAR 定义变量两种方式。

使用 EARLIER 函数

累计利润2 =
CALCULATE(SUM('产品'[利润]),
FILTER(ALL('产品'),'产品'[利润]>=EARLIER('产品'[利润])))

EARLIER函数以前专门介绍过,可以参考:EARLIER 函数 | PowerBI星球

使用VAR定义变量的方式累计求和

累计利润3 = VAR cur_profit='产品'[利润]

RETURN CALCULATE(SUM('产品'[利润]),
FILTER(ALL('产品'),'产品'[利润]>=cur_profit))

参考:采悟:DAX学习:使用VAR定义变量

这两种方式返回的结果和利用M函数的效果完全一致,

这两种函数,其实和上面M函数一样,都是通过各自的方式筛选符合大于等于当前利润的数据行,然后求和得到结果。

上面的DAX求和用到的是CALCULATE,其实这里也可以用SUMX函数,

累计利润4 = SUMX(filter(all('产品'),'产品'[利润]>=EARLIER('产品'[利润])),'产品'[利润])

累计利润5 = VAR cur_profit='产品'[利润]
RETURN SUMX(FILTER(ALL('产品'),'产品'[利润]>=cur_profit),'产品'[利润])

CALCULATE函数第一个参数是汇总方式,第二个及之后的参数为筛选条件,而SUMX函数第一个参数筛选条件,第二个参数为求和字段,在求和的计算上,SUMX可以实现和CALCULATE一样的效果。

案例中的数据已经按照利润从大到小进行排列,理解上更直观,其实即使不进行排序,这几种方式也都可以返回正确的结果,因为计算的逻辑和每一行的顺序无关。

上面几个公式,需要的时候可以随时套用,当然在理解的基础上灵活掌握这些函数,可以更有效的进行各种数据分析。累计求和在数据分析中十分常用,比如ABC分析,后面会进一步介绍。

数据可视化之DAX篇(十)在PowerBI中累计求和的两种方式的更多相关文章

  1. 数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你

    https://zhuanlan.zhihu.com/p/88528732 在各种经营分析报告中,我们常常会看到YTD,YOY这样的统计指标,这样的数据计算并不难,尤其是在PowerBI中,因为有时间 ...

  2. 数据可视化之DAX篇(二)Power BI中的度量值和计算列,你搞清楚了吗?

    https://zhuanlan.zhihu.com/p/75462046 对于初学者,总是会把度量值和计算列搞混,我也经常碰到这样的问题,有些星友用文章中的代码总是报错,发给我一看,才知道TA把本来 ...

  3. 数据可视化之DAX篇(九) 关于DAX中的VAR,你应该避免的一个常见错误

    https://zhuanlan.zhihu.com/p/67803111 本文源于微博上一位朋友的问题,在计算同比增长率时,以下两种DAX代码有什么不同? -------------------- ...

  4. 数据可视化之DAX篇(八) DAX学习:使用VAR定义变量

    https://zhuanlan.zhihu.com/p/64414205 前面介绍如何使用DAX生成日期表的时候,使用了VAR,有人留言问这个VAR怎么理解,那么这篇文章就来介绍VAR以及它的用法. ...

  5. 数据可视化之DAX篇(二十五)PowerBI常用的度量值:累计至今

    https://zhuanlan.zhihu.com/p/64999937 经常碰到本年至今.本月至今的数据计算,其实还有一类计算是,从历史最早日期至今的累计计算,比如从开业到现在总共卖出了多少件商品 ...

  6. 数据可视化之DAX篇(五) 使用PowerBI的这两个函数,灵活计算各种占比

    https://zhuanlan.zhihu.com/p/57861350 计算个体占总体的比例是一个很常见的分析方式,它很简单,就是两个数字相除,但是当需要计算的维度.总体的范围发生动态变化时,如何 ...

  7. 数据可视化之DAX篇(十五)Power BI按表筛选的思路

    https://zhuanlan.zhihu.com/p/121773967 ​数据分析就是筛选.分组.聚合的过程,关于筛选,可以按一个维度来筛选,也可以按多个维度筛选,还有种常见的方式是,利用几个特 ...

  8. 数据可视化之DAX篇(十二)掌握时间智能函数,同比环比各种比,轻松搞定!

    https://zhuanlan.zhihu.com/p/55841964 时间可以说是数据分析中最常用的独立变量,工作中也常常会遇到对时间数据的对比分析.假设要计算上年同期的销量,在PowerBI中 ...

  9. 数据可视化之DAX篇(二十四)Power BI应用技巧:在总计行实现条件格式

    https://zhuanlan.zhihu.com/p/98975646 如何将表格或者矩阵中值的条件格式也应用于总计行? 目前PowerBI并不支持这种功能,无法在总计行或者小计行上应用条件格式, ...

随机推荐

  1. python数据预处理

    缺失值处理 import pandas as pda import numpy as npy import matplotlib.pylab as pyl # data=pda.read_excel( ...

  2. delphi 控件查询

    //老古董,以前这些东西太多了,收藏的没过来,只好粘贴至此,当然不是本人整理的. delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org ...

  3. 049.Kubernetes集群管理-集群监控Metrics

    一 集群监控 1.1 Metrics Kubernetes的早期版本依靠Heapster来实现完整的性能数据采集和监控功能,Kubernetes从1.8版本开始,性能数据开始以Metrics API的 ...

  4. Head_First_Python(中文版)完整版PDF免费下载_百度云盘

    Head_First_Python(中文版)完整版PDF免费下载_百度云盘 提取码:bjbg 本书特色 根据认知科学和学习理论的最新研究成果,这本书采用一种适合大脑的丰富格式娓娓道来,而不是长篇累牍地 ...

  5. Python数据处理常用工具(pandas)

    目录 数据清洗的常用工具--Pandas 数据清洗的常用工具 Pandas常用数据结构series和方法 Pandas常用数据结构dataframe和方法 常用方法 数据清洗的常用工具--Pandas ...

  6. mybatis面试入门

    第一步创建一个java project 导入mybatis需要的jar包,创建与数据库一一对应的javabean对象 第二步:创建mybatis的配置文件 sqlMapconfig.xml 第三步:创 ...

  7. Mongodb 批量更新

    >db.col.update({查询条件},{修改条件},{multi:true})

  8. JVM的堆内存泄漏排查-性能测试

    JVM异常说明 https://testerhome.com/articles/24259 一文中已介绍了,JVM每个运行时区域--程序计数器 .Java虚拟机栈.本地方法栈.Java堆.方法区.直接 ...

  9. 呼~~~~--历时几个星期终于搞好了HTTPS协议---阿里云

    打开网站加入阿里云官网 https://yundun.console.aliyun.com/?p=cas#/overview/cn-hangzhou 登陆查看自己的证书 没有点击购买证书 -- 选中对 ...

  10. 安装Centos 7 并且配置远程登录

    安装: 1.安装VMware fusion.https://www.vmware.com/cn/products/fusion/fusion-evaluation.html 2.下载centos 7 ...