DAX计算上月留存客户的两个方法

问题:本月消费客户,在上月有消费的客户数量统计

这个问题需要用到的知识主要有三个方面:

时间智能函数在这个问题中使用PREVIOUSMONTH函数更简单些,只有一个参数,就是日期表的日期列,DATEADD函数的应用要更广泛一些,参数也比较多。

非重复计数的DAX方法有很多,DISTINCT函数虽然简单直接,但是不适用这个问题,我们使用COUNTROWS+VLAUES这样的方法,当然这两个函数不一定是直接嵌套,分开也是同样的道理。

计算表是必须的,两种解决方法都需要用到计算表,两种不同的计算表。

我们简单模拟的数据:

DAX计算上月留存客户的两个方法

交集法

这个方法的思路是分别取出本月与上月的账号取交集,共同部分,然后计数。

度量值:=var a=CALCULATETABLE(VALUES('表1'[账号]))

var b=CALCULATETABLE(VALUES('表1'[账号]),DATEADD('日历'[Date],-1,MONTH))

var c=INTERSECT(a,b)

return COUNTROWS(c)

这个度量值中定义了三个表:

最后用COUNTROWS函数统计c表的账号数量。

如果要得到想要的结果,还需要写一个度量值:

有消费:=CALCULATE([度量值],'表1'[消费]>0)

得到消费金额大于0的客户数量。

这个方法思路非常清晰,度量值写起来也很简洁,中间我们用来非重复计数的方法就是COUNTROWS+VALUES,只不过VLAUES在CALCULATETABLE中就已经运行好了。

统计法

统计法的思路是统计出每个账号每个月的本月消费与上月消费情况,然后根据统计结果,在统计一次。

这个方法需要先写两个度量值:

本月消费:=SUM([消费])

上月消费:=CALCULATE([本月消费],PREVIOUSMONTH('日历'[Date]))

这两个度量值,正常也是要写的,既然做数据分析,最基础的消费金额统计还是需要的,这里上月消费用的就是PREVIOUSMONTH函数,上一个例子中用的是DATEADD函数,这两个函数一定条件下是可以互换使用。

然后我们就要来写统计表了,先用DAXStudio来测试一下:

DAX计算上月留存客户的两个方法

这个统计表,我们用了CROSSJOIN来建立的笛卡尔积,然后统计了本月消费与上月消费,最外边用FILTER函数过滤掉没有消费的账号。

这个表的行数就是我们要的结果,回到Power Pivot中直接用COUNTROWS函数统计行数就可以了。

DAX计算上月留存客户的两个方法

统计法里面我们在做非重复计数时用的也是COUNTROWS+VALUES,这个CROSSJOIN的笛卡尔集出来的就是我们想要的统计结果。

这个例子里面我们使用时间智能函数,使用时间智能函数的一个必要条件:

建立并标记日期表,并建立好数据表与日期表之间的多对一关系

最后我们来看一下在透视表中的结果:

DAX计算上月留存客户的两个方法

更多DAX函数的介绍请订阅专栏:

展开阅读全文

页面更新:2024-05-19

标签:笛卡尔   上月   统计法   客户   方法   统计表   度量   函数   账号   思路   数量   日期   两个   简单   智能   时间   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top