PowerBi-RFM模型

PowerBi-RFM模型

----只是想用博客记录学习过程和结果,不提供数据,谢谢----

在这里插入图片描述
在这里插入图片描述
RFM
建关系:
在这里插入图片描述
数据不真实,只用于模型!!

DAX公式如下:

RFM.F = 
AVERAGEX( DISTINCT( '客户表'[客户名称] ) , 
     CALCULATE( COUNTROWS( '订单头' ) , TREATAS( VALUES( 'RFM日期'[Date] ) , '订单头'[订单日期] ) )
)
RFM.F MAX = 
MAXX( ALL( '客户表'[客户名称] ) , 
    CALCULATE( COUNTROWS( '订单头' ) , TREATAS( VALUES( 'RFM日期'[Date] ) , '订单头'[订单日期] ) )
)
RFM.F MIN = 
MINX( ALL( '客户表'[客户名称] ) , 
    CALCULATE( COUNTROWS( '订单头' ) , TREATAS( VALUES( 'RFM日期'[Date] ) , '订单头'[订单日期] ) )
)
RFM.F 分数 = IF( NOT ISBLANK( [RFM.F] ) ,  DIVIDE( [RFM.F] - [RFM.F MIN] , [RFM.F MAX] - [RFM.F MIN] ) * 100 )
RFM.F 平均 = CALCULATE( [RFM.F] , ALL( '客户表' ) )
RFM.F 分数 平均 = DIVIDE( [RFM.F 平均] - [RFM.F MIN] , [RFM.F MAX] - [RFM.F MIN] ) * 100
RFM.F 权重 = DIVIDE(MAX('参数 RFM'[参数 RFM])-min('参数 RFM'[参数 RFM]),100)
---------------------------------------------------------
RFM.M将RFM.F的COUNTROWS( '订单头' )改成SUM( '订单头'[订单金额] ),因为它是计算购买金额
RFM.M 权重 = DIVIDE(100-MAX('参数 RFM'[参数 RFM]),100),其他一样
---------------------------------------------------------------------------------------------------------------
RFM.R将RFM.F的COUNTROWS( '订单头' )改成AVERAGEX( '订单头' , DATEDIFF( [订单日期] , LASTDATE( 'RFM日期'[Date] ) , DAY ) ) ,因为它是计算客户最后一次购买距离筛选日期的时间间隔
RFM.R 权重 = DIVIDE(min('参数 RFM'[参数 RFM]),100),其他一样
-----------------------------------------------------------------------------------------------------------------
RFM 结果 分类 = 
VAR R = IF( [RFM.R 分数] >= [RFM.R 分数 平均] , "R↑" , "R↓" )
VAR F = IF( [RFM.F 分数] >= [RFM.F 分数 平均] , "F↑" , "F↓" )
VAR M = IF( [RFM.M 分数] >= [RFM.M 分数 平均] , "M↑" , "M↓" )
VAR RFM = R & F & M
RETURN CALCULATE( SELECTEDVALUE( 'RFM分类'[分类名称] ) , TREATAS( { RFM } , 'RFM分类'[RFM] ) )

RFM 结果 得分 = [RFM.R 分数] * [RFM.R 权重] + [RFM.F 分数] * [RFM.F 权重] + [RFM.M 分数] * [RFM.M 权重]

RFM 结果 人数 按 分类 = 
CALCULATE( 
    COUNTROWS( '客户表' ) , 
    FILTER( ALL( '客户表'[客户名称] ) , [RFM 结果 分类] = SELECTEDVALUE( 'RFM分类'[分类名称] ) )
)

RFM 结果 M 按 分类 = 
IF( SELECTEDVALUE( 'RFM分类'[分类名称] ) = [RFM 结果 分类] , [RFM.M] , BLANK() )

RFM 结果 得分 TOP N = 
IF( 
    CONTAINS( 
        TOPN(
            [参数 RFM TOP N 值] , 
            FILTER( 
                ALL( '客户表'[客户名称] ) , 
                IF( ISBLANK( SELECTEDVALUE( 'RFM分类'[分类名称] ) ) , TRUE() , [RFM 结果 分类] = SELECTEDVALUE( 'RFM分类'[分类名称] ) )
            ) , [RFM 结果 得分] , DESC ) , 
        '客户表'[客户名称] , SELECTEDVALUE( '客户表'[客户名称] ) 
    ) , 
    [RFM 结果 得分],
    BLANK()
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值