8.20 PowerBI系列之DAX函数专题-RFM客户价值分析

需求

R(recency)F(frequency)M(monetary)
在这里插入图片描述

实现

1 R = today()-'订单表'[最后一个订单日期] //计算客户最近一次购买到目前有多少天
2  最后一个订单日期=
var customercode = selected('订单表'[客户编号])
lastorderdate = maxx(
filter('订单表',‘订单表’[客户编号] = customercode,all('订单表'[客户编号])),
'订单表'[订单日期]
)
return lastorderdate
3 F = distinctcount('订单表'[序号])
4 M = sum('订单表'[销售额])
5 计算表 RMF = summarize('订单表','订单表'[客户编号],'订单表'[R],"F",[F],"M",[M]//按照客户粒度,把最近一次购买到现在的天数,购买的次数和构购买的金额取出来
6 F得分_均值 = if('RFM'[F]>=average('RFM'[F]),2,1) //按照所有客户的F均值比较 //不需要取消F列上的上下文取平均吗?
7  F得分_中值 = IF(‘RFM’[F]>=percentile.exc('RFM'[F],0.5),2,1
8 R得分_均值 = if('RFM'[R]<=average(RFM[R],2,1)
9 客户分组=
switch(
'RFM'[RFM],
"111","流失客户",
"112","重要挽留客户",
"121","一般保持客户",
"122","重要保持客户",
"211","新客户",
"212","重要发展客户",
"221","一般价值客户",
"222","重要价值客户",
blank()
)
PERCENTILE.EXC(<column>, <k>)


如果列为空,则返回 BLANK()。

如果 k 为零或空白,则百分点等级 1/(n+1) 返回最小值。 如果为零,则超出范围,并返回错误。

如果 k 为非数字或超出 0 到 1 的范围,则返回错误。

如果 k 不是 1/(n - 1) 的倍数,则 PERCENTILE.EXC 将插入值以确定第 k 个百分位数的值。

当指定百分位数的值在数组中的两个值之间时,PERCENTILE.EXC 将进行插值。 如果它无法为指定的百分位数 k 进行插值,则返回错误。

在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值