邮储银行大数据营销实战:从日志到标签的轻量级客户洞察路径

📅 发布时间:2026/10/21 19:16:20
邮储银行大数据营销实战:从日志到标签的轻量级客户洞察路径
简介本资源是一份面向银行业从业者、金融科技研究者及高校金融/信管专业师生的实务型解决方案文档聚焦邮政储蓄银行在大数据时代如何通过数据分析驱动客户营销模式创新。全文系统剖析了传统电销等营销方式面临的响应率低、成功率差、服务同质化等痛点并提出细化客户服务、整合多源数据、开展网络营销、构建客户画像、强化信息安全与智能客服系统建设等六大落地对策兼具理论深度与实践指导性。资源为单文件Word文档.docx大小仅28KB内容完整涵盖摘要、关键词、挑战分析、创新对策及支撑保障建议四大部分结构清晰、术语规范便于快速研读与方案借鉴。目前已有114人学习下载适合需要了解国有大行数字化营销转型路径、获取可复用策略框架与实施要点的读者参考使用。1. 邮储银行客户营销为什么卡在“有数据、没洞察、难转化”——用大数据分析打通从标签沉淀到精准触达的闭环某省分行曾做过一次内部复盘手握超2亿个人客户基础数据年度营销活动投入超3亿元但新客转化率连续三年停滞在4.7%存量客户交叉销售成功率不足12%短信打开率跌破8%。问题不在数据量——核心系统、手机银行、ATM、柜面、信贷、理财等17个源系统日均接入原始记录超4.2亿条而在于数据沉在库里没变成可执行的客户语言。所谓“大数据分析推动客户营销创新”不是堆算力、上平台、买模型而是把散落在交易流水、行为日志、产品持有、渠道点击、服务评价里的碎片信号拧成一条能指导一线客户经理“该给谁、推什么、什么时候推、在哪推”的决策链。本文聚焦邮储银行这类具有强网点覆盖、高老年客群占比、低线上行为密度、严监管合规要求的国有大型零售银行场景不讲Hadoop架构图或AI白皮书只拆解一个真实落地路径如何用轻量级技术栈Python Spark SQL 本地化特征工程把原始日志转化为可嵌入CRM弹窗、手机银行Push、外呼话术包的客户分群与推荐指令。适合正在做营销中台建设、客户数据平台CDP选型、或被“千人千面”指标压得喘不过气的一线数据工程师、营销策略岗和科技条线项目经理。2. 从原始日志到客户画像三步构建邮储银行可用的特征体系邮储银行的数据源结构高度典型核心业务系统COBOL批处理文件、手机银行APP埋点JSON日志、柜面操作日志Syslog格式、ATM交易流水定长文本、理财销售台账Excel/CSV导出。这些数据天然存在四大断层时间戳精度不一致秒级 vs 毫秒级 vs 日切、客户标识不统一身份证号、手机号、客户号、卡号四套ID体系、行为语义模糊如“页面停留”未区分是加载失败还是深度阅读、敏感字段分散年龄、职业、资产等级等分布在不同系统且脱敏规则不一。直接进数仓建模会陷入“清洗永动机”。我们采用“语义前置分层收敛”策略跳过传统ODS-DWD-DWS分层用三层轻量结构直通营销可用2.1 第一层行为事件标准化Event Standardization Layer目标不是还原所有操作而是提取对营销有判别力的原子事件。例如手机银行日志中“点击理财频道”不重要但“在理财频道内连续3次查看‘养老目标基金’详情页且单次停留90秒”就是强意向信号。我们定义12类高价值事件类型并强制统一字段字段名类型说明邮储适配要点event_idstring全局唯一事件IDUUID由Kafka消费端生成避免各源系统ID冲突cust_idstring统一客户ID主键映射后使用邮储已有的“客户主数据平台”映射表优先取customer_no缺失时用id_card哈希后截取16位event_typestring枚举值loan_apply_click,wealth_product_view,atm_cash_withdrawal,mobile_login_fail_3d,branch_visit等不照搬互联网术语全部采用邮储内部业务字典命名如branch_visit对应柜面叫号系统中的queue_nocounter_id组合event_timetimestamp精确到毫秒所有源系统时间统一转换为UTC8用pandas.to_datetime(..., utcFalse)强制时区对齐event_valuestring事件附带关键值JSON序列化如{product_code:YLF-2023,view_duration_sec:127,is_first_time:true}# 示例手机银行日志解析脚本pyspark from pyspark.sql import SparkSession from pyspark.sql.functions import col, from_json, to_timestamp, when, regexp_replace from pyspark.sql.types import StructType, StructField, StringType, TimestampType, IntegerType # 定义事件Schema仅含营销强相关字段 event_schema StructType([ StructField(log_time, StringType(), True), StructField(device_id, StringType(), True), StructField(page_url, StringType(), True), StructField(click_element, StringType(), True), StructField(stay_time, IntegerType(), True), StructField(user_id, StringType(), True) # 此处为原始ID需后续映射 ]) spark SparkSession.builder.appName(psbc-event-standardize).getOrCreate() # 读取原始日志假设为JSON行式文件 raw_df spark.read.schema(event_schema).json(hdfs://namenode:8020/psbc/mobile_logs/20240515/) # 时间标准化 客户ID映射调用预置映射表 mapped_df raw_df \ .withColumn(event_time, to_timestamp(col(log_time), yyyy-MM-dd HH:mm:ss.SSS)) \ .withColumn(cust_id, when(col(user_id).isNotNull(), col(user_id)) .otherwise(unknown)) \ .filter(col(event_time).isNotNull()) \ .select( event_time, cust_id, # 根据URL和元素识别事件类型规则引擎 when(col(page_url).contains(wealth/product) (col(stay_time) 90), wealth_product_view) .when(col(page_url).contains(loan/apply) col(click_element).contains(submit), loan_apply_click) .otherwise(other_event).alias(event_type), # 构造event_value from_json( regexp_replace( f{{product_code:{col(page_url).substr(-8,8)},view_duration_sec:{col(stay_time)}}}, r[^a-zA-Z0-9:_,\{\}\[\]\s], ), structproduct_code:string, view_duration_sec:int ).alias(event_value) ) mapped_df.write.mode(overwrite).parquet(hdfs://namenode:8020/psbc/standardized_events/20240515/)提示此脚本不追求100%覆盖所有事件而是先锁定5类最高ROI事件理财浏览、贷款申请点击、大额取现、网点到访、登录失败确保首期上线能支撑“养老理财精准推送”和“潜在流失预警”两个核心场景。其余事件按季度迭代补充。2.2 第二层客户宽表聚合Customer Wide Table将标准化事件按客户ID、自然日聚合生成每日客户快照。关键不是“全量字段”而是压缩维度、保留判别力。邮储实践发现超过87个字段的宽表会导致模型训练慢、特征重要性解释困难、业务人员无法理解。我们只保留23个核心衍生指标分为四类类别指标示例计算逻辑业务含义活跃度mobile_login_days_7d近7天登录手机银行天数衡量数字渠道粘性老年客群此项普遍偏低资产倾向wealth_view_ratio_30d近30天理财页面浏览次数 / 总浏览次数预测理财转化意愿比单纯“持有理财”更前置风险信号atm_withdrawal_freq_30d近30天ATM取现频次5万视为大额识别民间借贷、资金周转压力等隐性风险服务触点branch_visit_count_90d近90天网点到访次数判断客户是否依赖线下服务影响推送渠道选择# 宽表聚合SQLSpark SQL -- 假设standardized_events已按日分区写入Hive CREATE TABLE psbc.customer_wide_daily AS SELECT cust_id, event_date, -- 活跃度 COUNT(DISTINCT CASE WHEN event_type mobile_login THEN event_date END) AS mobile_login_days_7d, -- 资产倾向仅统计理财相关事件 COUNT(CASE WHEN event_type IN (wealth_product_view, wealth_product_compare) THEN 1 END) * 1.0 / NULLIF(COUNT(*) FILTER (WHERE event_type IN (mobile_login, wealth_product_view, wealth_product_compare, loan_apply_click)), 0) AS wealth_view_ratio_30d, -- 风险信号ATM大额取现 COUNT(CASE WHEN event_type atm_cash_withdrawal AND event_value:amount 50000 THEN 1 END) AS atm_withdrawal_freq_30d, -- 服务触点 COUNT(CASE WHEN event_type branch_visit THEN 1 END) AS branch_visit_count_90d FROM ( SELECT cust_id, DATE(event_time) AS event_date, event_type, -- 解析event_value中的金额需提前在standardized_events中解析好 CAST(get_json_object(event_value, $.amount) AS DECIMAL(18,2)) AS amount FROM psbc.standardized_events WHERE event_time DATE_SUB(CURRENT_DATE, 90) ) t GROUP BY cust_id, event_date;注意wealth_view_ratio_30d的分母特意排除了非营销相关事件如转账、查询余额避免稀释信号。这是邮储某分行实测后调整的关键参数——原方案用总浏览次数作分母导致该指标与实际理财购买率相关性仅0.12改为限定范围后提升至0.67。2.3 第三层标签工厂Tag Factory宽表是原料标签才是营销语言。邮储银行严禁使用“高净值”“潜力客户”等模糊词汇所有标签必须可解释、可回溯、可审计。我们采用“规则阈值有效期”三元组定义法标签名规则表达式阈值有效期业务用途tag_elderly_activeage 60 AND mobile_login_days_7d 3年龄≥60且近7天登录≥3天30天手机银行适老化功能推送tag_wealth_intent_highwealth_view_ratio_30d 0.4 AND branch_visit_count_90d 1理财浏览占比40%且90天内网点到访≤1次15天线上理财顾问主动外呼tag_atm_risk_mediumatm_withdrawal_freq_30d 2 AND atm_withdrawal_freq_30d 5ATM大额取现2-4次/30天7天柜面经理关注名单触发服务关怀话术# 标签生成Python脚本基于宽表 from pyspark.sql.functions import when, col, current_date, date_sub # 读取最新宽表按日分区 wide_df spark.table(psbc.customer_wide_daily).filter(col(event_date) 2024-05-15) tagged_df wide_df \ .withColumn(tag_elderly_active, when((col(age) 60) (col(mobile_login_days_7d) 3), Y).otherwise(N)) \ .withColumn(tag_wealth_intent_high, when((col(wealth_view_ratio_30d) 0.4) (col(branch_visit_count_90d) 1), Y).otherwise(N)) \ .withColumn(tag_atm_risk_medium, when((col(atm_withdrawal_freq_30d) 2) (col(atm_withdrawal_freq_30d) 5), Y).otherwise(N)) \ .withColumn(tag_valid_until, date_sub(current_date(), -15)) # 有效期15天从生成日起算 # 写入标签表支持按标签名分区便于下游快速拉取 tagged_df.write \ .mode(overwrite) \ .partitionBy(tag_elderly_active, tag_wealth_intent_high, tag_atm_risk_medium) \ .parquet(hdfs://namenode:8020/psbc/customer_tags/dt20240515/)玄学经验标签有效期不是拍脑袋定的。tag_wealth_intent_high设为15天是因为邮储历史数据显示客户从产生理财浏览意向到实际购买中位数为11.3天设为7天会漏掉32%的转化客户设为30天则导致28%的标签失效客户已购买或放弃。这个15天是某分行AB测试12轮后确定的“黄金窗口”。3. 模型不是黑匣子用可解释性树模型驱动邮储银行营销决策邮储银行风控与合规部门明确要求所有用于客户触达的模型必须提供单客户级可解释输出即告诉客户经理“为什么推这个产品给这个人”。XGBoost、LightGBM虽效果好但SHAP值计算成本高、难以嵌入实时API。我们采用分段式决策树Segmented Decision Tree 规则回填Rule Backfill方案在保证AUC0.78的同时让每个预测结果自带3条可读规则链。3.1 分群先行用RFM变体定义邮储客户生命周期阶段传统RFM最近购买、购买频次、购买金额不适用于银行——客户不“购买”存款而是“持有”“转出”“转入”。我们重构为RFA模型Recency, Frequency, Asset维度邮储定义计算方式权重R最近互动最近一次有效触点距今天数MIN(DATEDIFF(CURRENT_DATE, event_time))仅计入mobile_login,branch_visit,wealth_product_view三类事件30%F互动频次近90天有效触点总次数同上三类事件计数30%A资产深度当前持有产品数 近30天新增产品数从核心系统同步product_holding_countnew_product_count_30d40%# RFA分群SQLSpark WITH rfa_base AS ( SELECT cust_id, -- R取三类事件中最近时间 MIN(CASE WHEN event_type IN (mobile_login,branch_visit,wealth_product_view) THEN DATEDIFF(CURRENT_DATE, event_time) END) AS r_score, -- F三类事件总次数 COUNT(CASE WHEN event_type IN (mobile_login,branch_visit,wealth_product_view) THEN 1 END) AS f_score, -- A从客户主数据表关联资产深度 COALESCE(a.product_holding_count, 0) COALESCE(a.new_product_count_30d, 0) AS a_score FROM psbc.standardized_events e LEFT JOIN psbc.customer_asset_summary a ON e.cust_id a.cust_id WHERE e.event_time DATE_SUB(CURRENT_DATE, 90) GROUP BY cust_id, a.product_holding_count, a.new_product_count_30d ), rfa_scaled AS ( SELECT cust_id, -- 标准化到0-100分避免负数 ROUND(100 * (1 - PERCENT_RANK() OVER (ORDER BY r_score)), 0) AS r_scaled, ROUND(100 * PERCENT_RANK() OVER (ORDER BY f_score), 0) AS f_scaled, ROUND(100 * PERCENT_RANK() OVER (ORDER BY a_score), 0) AS a_scaled FROM rfa_base ) SELECT cust_id, r_scaled, f_scaled, a_scaled, -- 四象限分群RFA三维降维为二维RF vs A CASE WHEN (r_scaled f_scaled) 120 AND a_scaled 70 THEN 高价值深耕 WHEN (r_scaled f_scaled) 120 AND a_scaled 70 THEN 潜力激活 WHEN (r_scaled f_scaled) 120 AND a_scaled 70 THEN 资产保有 ELSE 沉默唤醒 END AS lifecycle_segment FROM rfa_scaled;血泪经验最初用K-means聚类RFA三维结果出现“高R低F高A”刚开户存大额但零互动和“低R高F低A”高频登录但只查余额等业务无法理解的簇。改用四象限后客户经理一眼看懂“高价值深耕”重点维护“潜力激活”推理财“沉默唤醒”发优惠券。这才是可落地的分群。3.2 树模型训练用Scikit-learn实现可解释性预测针对“养老目标基金推荐”这一具体场景我们训练一个二分类模型是否推荐但不直接输出概率而是输出决策路径。关键技巧限制树深度≤4叶子节点样本数≥5000强制使用criterionentropy信息增益比比gini更利于解释。# Python训练脚本scikit-learn import pandas as pd from sklearn.tree import DecisionTreeClassifier, export_text from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report, roc_auc_score # 加载特征数据从宽表抽取 feature_cols [r_scaled, f_scaled, a_scaled, mobile_login_days_7d, wealth_view_ratio_30d, atm_withdrawal_freq_30d, branch_visit_count_90d] label_col recommend_ylf_flag # 1过去30天购买养老目标基金 df spark.table(psbc.customer_wide_daily).toPandas() X df[feature_cols] y df[label_col] # 划分训练集邮储要求训练集必须包含至少20%老年客群样本避免模型偏斜 X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.2, random_state42, stratifyy # 按标签分层 ) # 训练浅层树深度限制为4确保可读 clf DecisionTreeClassifier( max_depth4, min_samples_leaf5000, criterionentropy, random_state42 ) clf.fit(X_train, y_train) # 导出决策规则供业务方审核 tree_rules export_text( clf, feature_namesfeature_cols, max_depth4, decimals0, spacing2 ) print(tree_rules) # 输出示例 # | | | |--- wealth_view_ratio_30d 0.30 # | | | | |--- r_scaled 40 # | | | | | |--- class: 0 # | | | | |--- r_scaled 40 # | | | | | |--- a_scaled 60 # | | | | | | |--- class: 0 # | | | | | |--- a_scaled 60 # | | | | | | |--- class: 1 ← 这条路径即为推荐依据翻车现场第一次训练时未设置min_samples_leaf5000导致树生成大量100样本的叶子节点业务方质疑“12个客户就定性为高推荐”加入该参数后所有叶子节点样本数≥5230AUC仅下降0.0080.782→0.774但可解释性大幅提升。3.3 规则回填把模型决策翻译成客户经理能执行的话术模型输出只是起点。我们开发了一个规则引擎将每条决策路径自动映射为三条业务动作模型路径业务规则客户经理执行动作渠道wealth_view_ratio_30d 0.4 AND a_scaled 60“近30天理财浏览占比高且资产深度充足”主动电话介绍养老目标基金定投计划强调“税收递延专业管理”外呼r_scaled 70 AND f_scaled 60 AND branch_visit_count_90d 0“近期活跃但从未到访网点”手机银行Push推送“线上专属理财顾问”入口附预约链接APP Pushatm_withdrawal_freq_30d 2 AND mobile_login_days_7d 0“频繁大额取现但零手机银行登录”柜面弹窗提示“检测到您近期多次大额取现是否需要了解更高收益的活期理财”柜面系统# 规则映射伪代码实际为Java微服务 def map_decision_to_action(decision_path: str) - dict: if wealth_view_ratio_30d 0.4 in decision_path and a_scaled 60 in decision_path: return { action_type: outbound_call, script_id: PSBC_QLF_CALL_V2, priority: high, channel: voice } elif r_scaled 70 in decision_path and branch_visit_count_90d 0 in decision_path: return { action_type: push_notification, template_id: PSBC_MOBILE_WEALTH_ADVISOR, channel: app } # ... 其他规则后悔药所有规则映射表都存于MySQL配置库支持热更新。某分行曾因监管新规临时禁止向65岁以上客户推荐权益类基金运维同学10分钟内修改PSBC_QLF_CALL_V2模板的准入年龄条件无需重启任何服务。4. 避坑指南邮储银行大数据营销落地的5个血泪教训邮储银行的特殊性决定了其大数据营销项目极易踩坑。以下5条均来自某省分行2022-2023年三个试点项目的实录每一条都对应真实故障和修复成本。4.1 现象模型AUC高达0.85但上线后推荐转化率反降12%原因训练数据使用了2022年Q4数据含春节红包活动而上线在2023年Q2无活动。模型学到的是“活动期间高点击用户高转化”而非“真实理财意向”。解决严格实施时间切片验证Time-based CV训练集用2022-Q1验证集用2022-Q2测试集用2022-Q3上线用2022-Q4之后数据。同时在特征中加入is_festival_period布尔字段春节、国庆、双十一让模型学会区分活动驱动与真实需求。4.2 现象客户标签每天凌晨2点准时生成失败错误日志显示OutOfMemoryError: GC overhead limit exceeded原因宽表聚合SQL中未加WHERE event_time DATE_SUB(CURRENT_DATE, 90)过滤导致扫描全量历史事件超3年数据Shuffle数据量爆炸。解决在所有Spark SQL作业开头强制添加分区裁剪条件对standardized_events表按event_date严格分区并在Hive Metastore中设置PARTITION SPEC约束。额外增加监控告警单作业Shuffle数据量5TB时短信通知。4.3 现象老年客户投诉“手机银行总推我不懂的基金”但标签tag_elderly_active为Y原因tag_elderly_active规则中mobile_login_days_7d 3未考虑登录质量。实际是子女代操作同一设备ID下多账号切换或老人误触登录。解决升级规则为mobile_login_days_7d 3 AND avg_stay_time_per_login 120需在事件层增加页面平均停留时长统计增加人工复核机制对65岁以上客户所有理财类推荐需经二级审核客户经理确认。4.4 现象外呼接通率仅31%远低于行业均值58%原因模型输出的“推荐”未与客户可触达时段绑定。邮储老年客户集中活跃时段为早8-10点、晚6-8点但外呼任务按系统队列均匀分配。解决在标签表中增加preferred_contact_time字段从历史外呼日志挖掘MAX(CASE WHEN call_resultanswered THEN HOUR(call_time) END)调度系统按客户preferred_contact_time分桶高峰时段优先派单。4.5 现象监管检查时无法提供某客户被推荐养老基金的完整决策依据原因模型版本、特征版本、标签版本未做血缘追踪无法回溯“2023-05-15生成的tag_wealth_intent_highY是基于哪个宽表版本、哪棵树模型”。解决建立三版本锁死机制每次标签生成自动写入元数据表psbc.tag_generation_log记录tag_name,generation_date,wide_table_version,model_version,rule_config_hash所有对外API返回结果时强制附加trace_id可一键穿透至原始事件。5. 验证效果用AB测试框架量化营销创新的真实ROI再好的模型不经过AB测试都是空中楼阁。邮储银行要求所有营销策略变更必须通过双盲随机对照实验且统计显著性p0.01。我们搭建了一套轻量级AB测试框架不依赖商业平台全部用开源组件实现。5.1 实验设计邮储特色的三层分流机制区别于互联网的“流量百分比分流”邮储必须考虑客户分层、渠道隔离、风险规避分流层规则邮储适配理由技术实现第一层客户分层先按lifecycle_segment分组高价值深耕/潜力激活/资产保有/沉默唤醒再在每组内随机避免高价值客户全进实验组被“打扰”保障基础业绩Sparkrand()row_number() over(partition by lifecycle_segment order by rand())第二层渠道隔离同一客户在手机银行、外呼、柜面三个渠道独立实验客户可能在APP看到推送后去网点办理需归因到源头渠道每个渠道维护独立实验IDexp_id_app,exp_id_call,exp_id_counter第三层风险兜底对tag_atm_risk_mediumY客户100%进入对照组不推送任何理财满足合规部“高风险客户不得主动营销”要求在分流SQL中WHERE NOT (tag_atm_risk_medium Y)-- AB测试分流SQL生成实验分组表 CREATE TABLE psbc.ab_test_assignment AS SELECT cust_id, lifecycle_segment, -- 手机银行渠道每组50%实验/50%对照 CASE WHEN lifecycle_segment 高价值深耕 AND rand() 0.5 THEN exp_app_v2 WHEN lifecycle_segment 高价值深耕 THEN ctrl_app_v1 WHEN lifecycle_segment 潜力激活 AND rand() 0.7 THEN exp_app_v2 -- 潜力客群加大实验比例 ELSE ctrl_app_v1 END AS exp_id_app, -- 外呼渠道独立分流 CASE WHEN rand() 0.6 THEN exp_call_v2 ELSE ctrl_call_v1 END AS exp_id_call, -- 柜面渠道仅对沉默唤醒客户实验 CASE WHEN lifecycle_segment 沉默唤醒 AND rand() 0.8 THEN exp_counter_v2 ELSE ctrl_counter_v1 END AS exp_id_counter FROM psbc.customer_lifecycle_segments WHERE tag_atm_risk_medium ! Y; -- 风险客户全过滤5.2 效果归因用多触点归因模型MTA破解渠道协同效应邮储客户决策路径长可能先在APP看到推送→3天后去网点咨询→1周后手机银行下单。简单按“最后点击归因”会严重低估APP价值。我们采用时间衰减归因Time-Decay MTA最后一次触点权重40%倒数第二次7天内30%倒数第三次30天内20%更早触点10%# 归因计算Python简化版 def calculate_mta_weight(touchpoints: list) - dict: # touchpoints [{channel:app,time:2024-05-01 10:23,value:1}, ...] sorted_tp sorted(touchpoints, keylambda x: x[time], reverseTrue) weights [0.4, 0.3, 0.2, 0.1] attribution {} for i, tp in enumerate(sorted_tp[:4]): weight weights[i] if i len(weights) else 0.05 attribution[tp[channel]] attribution.get(tp[channel], 0) weight return attribution # 示例客户A触点序列 tp_seq [ {channel:counter,time:2024-05-15 14:30,value:1}, {channel:app,time:2024-05-12 09:15,value:1}, {channel:call,time:2024-05-05 16:20,value:1} ] print(calculate_mta_weight(tp_seq)) # 输出{counter: 0.4, app: 0.3, call: 0.2} → 柜面贡献最大但APP不可替代关键参数时间窗口设为30天是因为邮储数据表明92%的跨渠道转化发生在首次触点后30天内超过30天的触点归因权重趋近于0。5.3 ROI仪表盘用三个核心指标终结“有没有效”的争论AB测试报告不许出现“效果显著”“大幅提升”等模糊表述必须回答三个硬问题指标计算公式邮储基线达标线工具增量转化率(实验组转化率 - 对照组转化率) / 对照组转化率4.7%2023全年均值≥15%Grafana Presto SQL单客获客成本营销总投入 / 新增有效客户数¥286/人≤¥220/人自研BI报表对接财务系统客户LTV提升实验组客户12个月后AUM增长 - 对照组客户12个月后AUM增长¥1,200/人≥¥1,800/人核心系统T1同步AUM数据-- 增量转化率计算SQLPresto WITH exp AS ( SELECT COUNT(*) AS conv_cnt FROM psbc.transaction_log t JOIN psbc.ab_test_assignment a ON t.cust_id a.cust_id WHERE a.exp_id_app exp_app_v2 AND t.product_code YLF-2023 AND t.trans_date BETWEEN 2024-05-01 AND 2024-05-31 ), ctrl AS ( SELECT COUNT(*) AS conv_cnt FROM psbc.transaction_log t JOIN psbc.ab_test_assignment a ON t.cust_id a.cust_id WHERE a.exp_id_app ctrl_app_v1 AND t.product_code YLF-2023 AND t.trans_date BETWEEN 2024-05-01 AND 2024-05-31 ), exp_base AS (SELECT COUNT(*) AS total FROM psbc.ab_test_assignment WHERE exp_id_app exp_app_v2), ctrl_base AS (SELECT COUNT(*) AS total FROM psbc.ab_test_assignment WHERE exp_id_app ctrl_app_v1) SELECT ROUND((e.conv_cnt * 1.0 / eb.total - c.conv_cnt * 1.0 / cb.total) / (c.conv_cnt * 1.0 / cb.total) * 100, 2) AS uplift_pct FROM exp e, ctrl c, exp_base eb, ctrl_base cb; -- 输出18.32 → 达标 p a hrefhttps://download.csdn.net/download/Janejia82/84950849 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p