所有工具均采用开源方案,可直接执行以下命令部署:
1. 数据存储层ClickHouse部署,执行docker命令:
``` docker run -d --name clickhouse-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 yandex/clickhouse-server:22.8.15.23 ```2. 前端埋点SDK直接引入CDN地址即可,无需下载:https://unpkg.com/sa-sdk-js@2.18.0/dist/sensorsdata.min.js
必须覆盖从用户进店到支付完成的全节点,所有事件必填属性不能省略:
直接复制以下代码到前端项目的公共头部文件,替换上报地址即可生效:
```javascript ```
后端埋点直接调用服务端SDK上报即可,SDK下载地址:https://github.com/sensorsdata/sa-sdk-java/releases/tag/v3.1.10
默认采用7天内末次点击归因规则,直接执行以下SQL即可得到各渠道成交贡献数据,可直接用于渠道投放效果评估:
```sql SELECT source_channel, COUNT(DISTINCT order_id) AS valid_order_num, SUM(pay_amount) AS total_gmv, ROUND(SUM(pay_amount)/COUNT(DISTINCT gv.user_id),2) AS arpu FROM order_pay_success ops LEFT JOIN goods_view gv ON ops.user_id = gv.user_id AND gv.enter_time < ops.pay_time AND gv.enter_time > (ops.pay_time - INTERVAL 7 DAY) WHERE ops.pay_time > NOW() - INTERVAL 30 DAY GROUP BY source_channel ORDER BY total_gmv DESC ```如需计算全链路各触点的贡献,采用权重分配规则:首次触点20%、末次触点60%、中间所有触点平均分配20%,执行以下SQL即可:
```sql -- 多触点归因计算 WITH user_behavior_path AS ( SELECT user_id, groupArray(source_channel) AS path, groupArray(enter_time) AS time_list FROM goods_view WHERE enter_time > NOW() - INTERVAL 7 DAY GROUP BY user_id ) SELECT channel, ROUND(SUM(weight pay_amount),2) AS contribution_gmv FROM ( SELECT ubp.user_id, ops.pay_amount, arrayJoin(ubp.path) AS channel, -- 计算每个触点的权重 CASE WHEN arrayPosition(ubp.path, channel) = 1 THEN 0.2 WHEN arrayPosition(ubp.path, channel) = length(ubp.path) THEN 0.6 ELSE 0.2/(length(ubp.path)-2) END AS weight FROM user_behavior_path ubp JOIN order_pay_success ops ON ubp.user_id = ops.user_id WHERE length(ubp.path) >= 1 ) t GROUP BY channel ORDER BY contribution_gmv DESC ```grep 'api/pay/submit' /var/log/nginx/access.log | grep -E '(500|502|403)' | awk '{print $7,$9}' | sort | uniq -cSELECT remark FROM order_create WHERE pay_time IS NULL AND create_time > NOW() - INTERVAL 1 HOUR如果发现后台成交数据与实际收款金额不符,按以下步骤排查:
SELECT COUNT() FROM order_pay_success WHERE pay_time > NOW() - INTERVAL 10 MINUTE,若返回0则为数据上报链路中断。针对加购未下单、下单未支付的用户,执行以下SQL筛选出高意向用户,直接对接短信/公众号推送接口发优惠券召回:
```sql -- 筛选加购30分钟未下单用户 SELECT DISTINCT user_id, phone FROM cart_add ca LEFT JOIN order_create oc ON ca.user_id = oc.user_id AND oc.create_time > ca.add_time WHERE ca.add_time BETWEEN NOW() - INTERVAL 1 HOUR AND NOW() - INTERVAL 30 MINUTE AND oc.order_id IS NULL ```召回文案统一模板:【店铺名称】您关注的商品还在购物车哦,点击链接领5元无门槛券立即支付:xxx,实测召回转化率可达8%-12%。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图