duweike

Results 1 issues of duweike

## 项目简述 使用Flink SQL实时计算,能够让达标的用户立刻领取到相应的优惠权益。 ## 背景 在活动推广中,发放优惠券是一种常见的营销策略,在银行等金融行业中,仍然存在达标用户领取优惠券时,需要T+1甚至T+n才能兑换的现象,例如购买理财达到一定金额后,赠送给用户的满减券需要过几天带能领取等,这种现象严重影响了客户的使用感受,因此达标客户在T+0时间点收到优惠券对营销活动效果影响很大。 本项目使用Flink SQL这个易用、高效的实时计算框架,能够让业务分析人员无需编程,即可实时收集和统计达标客户信息,并发放优惠券,实现精准营销。 ## 目标 1)开发过程要简单,业务开发人员只需要SQL,不需要编程。 2)达标客户要包含当日新增客户。 3)业务人员可以自由选择活动上线时间,如今天15号,要求达标客户从月初1号到当前时刻起计算达标的用户。 4)达标或不达标用户可追溯,可解释,若用户不达标,能够追查到原因。 ## 实施方案 **实施案例:** 每月1号到当前时刻,用户入账金额累计大于5000,则达标,可以领取指定优惠券。 1)使用Flink SQL CDC特性,构建实时用户属性表UserTable,属性表实时了,才能满足当日新开户的用户领到优惠券。 2)使用离线数仓跑批SQL加工每月1号到T+1天的每个用户入账总金额,然后每天翻盘导入维表,供最终实时计算使用,设跑批控制表为RunBatchControlTable,批量聚合表为BatchSumTable。 3)使用Flink SQL对流水表TranHistoryTable分组聚合每个用户每天累计入账总金额,设当日聚合的表为TodaySumTable。 4)到这里就需要把离线的数据和实时的数据做一个汇总,然后判断是否满足达标。以TranHistoryTable为源表作为事件触发的表,以跑批控制表的跑批完成日期来精确控制批量累计和与当天的累积和进行汇总,判断最终是否大于达标金额5000。 整个工作流程如图所示: **技术支持:** a)多流顺序性:开发数据延迟功能,多个数据流发生先后顺序保证,对kafka数据源进行源码开发,实现数据延迟功能,以保证当天开户数据和当天汇总的数据早于最终的汇总逻辑。该延迟功能不能用水印实现,因为实际业务的事件时间往往很不可靠。 b)数据源限速:为了提高稳定性提升,受Spark...