flink实时规则营销系统教程(第39期,2023版)

kaudmands · · 214 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

参考资料地址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("兴趣词")

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

214 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传