参考资料地址1:https://pan.baidu.com/s/1JHDIgWz4yHZ46h_L7-gIUA 提取码: b9dv
参考资料地址2:https://share.weiyun.com/cE3EUSA3 密码:chi9p6
一、《flink实时规则营销系统》项目背景
传统的“精准营销平台”由营销人员基于画像标签数据去圈选人群,进行营销推送,存在不足;
这种传统手段,往往无法抓住那些 “转瞬即逝的营销机会”;
如:一个促销狂热型用户,正在浏览包包时,及时推送出正在做促销活动的包包信息,是最有效的;
如:一个价格敏感型用户,正在犹豫不决反复查看他购物车中的某目标商品时,适时推送优惠券,是最有效的;
这些场景,显然无法通过营销人员通过人工手段去发现,需要用软件系统自动、实时监控用户的行为,并实时做出判断,并进而驱动营销消息推送系统推送相关营销内容;
总之,在应对这一类的需求时,以前的传统的“基于用户画像标签库的精准营销平台”显得力不从心;
因而,擅长用键鼠改变世界的攻城狮们,决定为公司的推广、运营部门开发一个应对上述场景的自动化、智能的、实时、规则动态可变的营销利器 —— 《实时动态规则智能运营系统》
二、需求分析
2.1 营销规则举例
- 搜索兴趣词包含“商务休闲”的用户,如果浏览包含“商务休闲”的商品页面,则触发一个优惠券推送消息;
- 活跃度等级为C的用户,且在规则发布前的3天内,发生过 “搜索雀巢” AND “加购” ,当他再次上线时,触发一个app弹窗消息;
- 活跃度等级为C的用户,规则发布前2天内,发生过A事件3次以上,规则上线后发生了B事件,且之后间隔1天再次发生B事件,则触发;
- 规则运行时,检测到用户发生了下单事件,而在随后的15分钟内没有支付,则触发;
- 规则运行时,一个用户如果搜索的关键词符合某正则表达式,则触发;
- 宝妈用户,在2022-08-07开始,做过A行为3+次,做过(B行为,E行为)序列2+次,则触发;
2.2 规则营销需求的宏观抽象
- 营销规则有多样化的灵活的定义(不光参数可以支持自定义,且运算模型也可以自定义);
- 营销规则通常针对满足某画像的人群,也可没有针对性
- 营销规则通常都有有效期(也有可能是无限期的),要求系统能够支持动态增加、停用运营计划(规则)
- 营销规则根据需求的变化,需要能够方便地进行在线管理,如新增、停用、修改
三、行为判断的逻辑分析
1)行为判断:行为事件的类型及属性的判断
判断用户的某个行为事件,是否是规则条件中要求的事件
- 简单的,可能就是
event_id = "X"
AND
properties["p1"] =/>/!=/< "v1"
- 稍微复杂的 ,可能就是
event_id = "X"
AND
properties["p1"] 包含 "kw1"
- 再复杂点的,可能就是
event_id = "X"
AND
properties["p1"] + properties["p2"] > 100
AND
properties["p3"] 满足 正则表达式 [1,10]*?a
2)行为序列的判断
判断用户的一系列行为事件中,是否满足规则条件所要求的依次发生的序列,比如A B E
行为序列判断,是上述 “行为判断” 的衍生
本质上,就是在 判断事件 的基础上,加上时间先后的序列关系
这个逻辑,可以用 正则匹配进行计算(全窗口运算); 也可以用滚动聚合的方式计算;
3)事件(序列)发生次数的判断
判断要求的事件或事件序列,发生了多少次
是上述 “行为判断”、“行为序列判断” 的衍生
本质上,就是在 判断事件(或序列)的基础上,进行次数累计
四、画像条件判断的实现难点
初略考虑,应该就是查询用户画像标签库即可;
站在系统的角度来考虑时: 什么时机去查询? 去哪里查?
比如:
查询时机: 当一个人的某个行为触发了某个规则,此时去查询该用户的画像标签是否满足规则的人群画像条件
查询的目标: 用户画像标签数据库
如果画像数据库在hbase中,可以用如下伪代码来快速判断
## 如果条件是: 活跃等级 = C AND 首单时间< "2022-06-01"
get = new Get(guid)
get.addColumn("活跃等级")
get.addColumn("首单时间")
result = table.get(Get)
activeLevel = result.getValue("活跃等级")
firstOrderDate = result.getValue("首单时间")
if(activeLevel = 'C' && firstOrderDate< "2022-06-01")
return true;
## 如果条件是: 兴趣词 :包含 "速溶咖啡"
## 这种条件,用hbase的支撑就不太好处理了
// favroitWords : [海底捞, 咖啡伴侣, 小罐速溶咖啡,乔丹 ,篮球 ]
favroitWords = result.getValue("兴趣词")
有疑问加站长微信联系(非本文作者)