Power BI(二十)power pivot之Earlier函数 - DAX进阶的里程碑
Earlier函数之累计求和、累计百分比
帕累托法则往往称为二八原理,即百分之八十的问题是百分之二十的原因所造成的。在帕累托图中,不同类别的数据根据其频率降序排列的,并在同一张图中画出累积百分比图。帕累托图可以体现帕累托原则:数据的绝大部分存在于很少类别中,极少剩下的数据分散在大部分类别中。这两组经常被称为“至关重要的极少数”和“微不足道的大多数”。帕累托图能区分“微不足道的大多数”和“至关重要的极少数”,从而方便人们关注于重要的类别。
拥有的数据如下:(销售金额必须是降序排列)
假如不使用Earlier函数,客户使用传统的方法
累积=SUM($B$2:B2)
累计百分比==E2/MAX(E:E)
生成帕累托图
但是我们知道这些都是手动的,源数据一变动往往需要重新弄一遍,所以我们使用Earlier函数
为什么使用Earlier函数呢?大家可以看一下原excel表中,每一列的计算公式都是不一样的,然而power
pivot的计算列是写好直接就应用到整列,所以不使用Earlier函数就做不到不同行不同计算公式的效果
累计销售金额=SUMX(FILTER('产品销售表2',EARLIER('产品销售表2'[销售金额])<='产品销售表2'[销售金额]),'产品销售表2'[销售金额])
理解:
EARLIER('产品销售表2'[销售金额])<='产品销售表2'[销售金额])
可以理解成筛选原表这一行的销售金额小于等于虚拟表(与产品销售表2一样的表)的销售纪录的所有记录
累积百分比='产品销售表2'[累积销售金额]/SUMX('产品销售表2','产品销售表2'[销售金额])
%='产品销售表2'[累积销售金额]/SUMX(ALL('产品销售表2'),'产品销售表2'[销售金额])
生成帕累托图
Earlier函数进行排名
数据必须为升序或则降序
计算列
训练的排名=COUNTROWS(FILTER('产品销售表',EARLIER('产品销售表'[销售金额])<'产品销售表'[销售金额]))+1
我们也可以使用rankx函数
=RANKX('产品销售表','产品销售表'[销售金额])
Earlier函数区分新老客户
我们的思路就是假如这笔订单下单日期之前客户有存在过消费金额,则这条客户就是老客户
新增计算列
区分新老客户=IF(SUMX(FILTER('销售记录',EARLIER([下单日期])>'销售记录'[下单日期]&&EARLIER([客户ID])='销售记录'[客户ID]),'销售记录'[金额])>0,"老客户","新客户")