PowerBI DAX 计算客户的平均交易年龄

PowerBI战友联盟

共 1673字,需浏览 4分钟

 ·

2021-03-08 20:03

本文来研究客户的交易年龄。与自然年龄不同,交易年龄指的是客户在发生交易时的年龄,这在多年分析中的差异就会非常显著。

问题背景

在生意中,往往需要计算交易客户的平均年龄,但随着时间的推移,客户每年的年龄都在长大,因此,在计算中使用用户在交易时的年龄更加贴切,而不是客户的静态年龄。

静态平均年龄计算

如果客户的年龄已经由最新的年龄所标记了,这个年龄由 TODAY 和 BIRTHDAY 的 YEAR 共同决定。那么,其平均年龄的计算可以是:

Customer.AverageAge.Dim = 
CALCULATE(
AVERAGEX(
SUMMARIZE( Customer , Customer[Age] ) , [Age]
)
,
TREATAS( VALUES( 'Order'[CustomerID] ) , Customer[CustomerID] )
)

该算法从客户表中获取已经计算得到的年龄。

动态平均年龄计算

如果考虑多年数据,那么在购买的时候用最新的用户年龄就不够合理,就需要考虑动态年龄,使用订单数据计算如下:

Customer.AverageAge.Fact = 
CALCULATE(
AVERAGEX(
SUMMARIZE( Customer , Customer[BirthYear] ) , YEAR( MAX( 'Calendar'[Date] ) ) - [BirthYear]
)
,
TREATAS( VALUES( 'Order'[CustomerID] ) , Customer[CustomerID] )
)

这里通过交易时的客户找回客户表,但用交易所在的日期年份来计算年龄后再做平均,这样就更加合理。

技巧:钩子

这里使用了一个通用的 DAX 技巧:钩子。

我们称 TREATAS( VALUES( 'Order'[CustomerID] ) , Customer[CustomerID] ) 是一个钩子,它将不相关的两列挂载起来,进而可以实现计算。

效果

如果观察用不同方法得到的结果,可以看出:

在 2019 年,由于购买时的客户更加年轻,因此平均年龄与 2020 年有所不同,也更加真实的反应了业务。

总结

在研究与客户有关的问题时,往往需要在 客户表 和 订单表 之间联动,这就涉及到不少 DAX 技巧,大家可以自行演练实验。

DAX 设计模式(第二版)中文在线学习正式开放


PowerBI 免费技术讲座系列 - BI佐罗专场


财务报告三大表统一及高级分析通用模板 - 数据结构篇


Zebra BI 4.5 发布 - 支持自定义计算


全网首发 PowerBI 全动态中国式复杂矩阵完美增强版 4.0 版


全网首发 PowerBI DAX 支持面向切面超级设计模式共迎 2021


《PowerBI 高级》 - 视频课首发,成为专家必备


在订阅了BI佐罗讲授的《BI真经》之《BI进行时》课程区,除了可以下载本文案例,还可以观看视频讲解。

让数据真正成为你的力量

Create value through simple and easy with fun by PowerBI

Excel BI | DAX Pro | DAX 权威指南 | 线下VIP学习

扫码与PBI精英一起学习,验证码:data2021

PowerBI MVP 带你正确而高效地学习 PowerBI
点击“阅读原文”,即刻开始

浏览 53
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报