mengtuifrontend / Blog

芦叶满汀洲,寒沙带浅流。二十年重过南楼。柳下系船犹未稳,能几日,又中秋。 黄鹤断矶头,故人今在否?旧江山浑是新愁。欲买桂花同载酒,终不似,少年游。
18 stars 5 forks source link

闲谈萌推采集上报 #38

Open ajccom opened 4 years ago

ajccom commented 4 years ago

萌推项目的采集上报规范在立项之初基本已经定义完备,在后续业务迭代过程中也得到了充分的验证。

埋点规范

萌推的采集上报基于集团的采集上报工具,为了区分集团采集上报的预留字段,所有萌推项目上报的字段都以字母 x 开头。比如 type 字段,在原始报表中是 xtype 字段。

萌推所有业务上报字段的值,均为字符串格式或者 NULL。这个的缘由是原始数据落库处理时会将值根据其数据类型放入不同的字段,比如 a= 123,最终落库的数据为 a={int_type=123, long_type=0, float_type=0.0, string_type=0},如果是 a="xyz",落库后成了 a={int_type=0, long_type=0, float_type=0.0, string_type=xyz}。为了清洗数据方便,我们规定所有上报字段都用字符串格式。

通用字段

萌推项目每次上报都使用一些通用字段,通用字段中部分来自集团使用的字段,部分来自项目自定义字段,枚举如下:

字段 含义
member_id 用户 id,值为萌推 uid 的 hash 值
kuid 反作弊侧提供的设备识别码
ua 浏览器 ua 信息
ref HTTP Referrer 信息
xtype 上报类型,有 pvmtres.imp
xpage_name 当前页 page name,比如商详页 goods_detail
xpage_id 当前页 page id
xkey_param 当前页的细分参数,不同页面,其所表述的内容含义不同
xref_page_name 来源页 page name
xref_page_id 来源页 page id
xref_key_param 来源页 key param 值
xref_pos_id 来源页位置 id
xplatform 平台信息 微信商城 2,小程序 4,iOS 30,安卓 40,QTT 导量 110
xe_time 上报产生时间点,同步服务器时间
xapp_ver APP 版本号
xenv 环境信息,取值只有 NULLtesttest 表示非生产环境,一般清洗数据需要剔除 test 数据

kuid 和 tuid 关系

关于 kuid,kuid 在 iOS 和安卓下可以被解析为有效的 tuid,在其他非 APP 环境下皆无法正确解析为 tuid。

另外,萌推 H5 页面在 APP 环境下是使用 APP kuid 进行上报,所以无需区分 APP 下是 H5 还是原生上报。

xe_time 字段

集团上报 SDK 是收集上报机制,会在一个时间跨度之后将收集的上报一次性全部发送,即 N 条上报信息到达服务器的时间相同,所以上报产生时间需要通过 xe_time 字段记录。

类型枚举

上报的类型种类比较繁多,理论上是可以无限扩展的,常用的有 pvaction.click 等,这里先枚举一些常用的类型:

xtype 取值 表达类型
action.click 点击事件
launch 启动页上报,仅安卓 APP 有该上报
login 登陆上报
action.order 下单行为
action.order.pay 订单支付行为
action.click.cart 购物车行为
action.share 分享行为
action.search 搜索行为
action.download 下载行为,一般发生在站外

还有一些常用上报类型下面细述。

pv 上报

pv 上报一般指用户访问一个页面之初的上报,用来记录该页面的 page view,进而可以得到 user view 等数据。

pv 上报的 xtype 字段值为 pv。每个页面都设有独有的 page name 值。

可以查阅 km 文档:http://km.innotechx.com/pages/viewpage.action?pageId=76903202

另,每一次 pv 上报都使用不同的 page id。为了防止 page id 重复,其生成规则采用了时间和空间维度双重保障,具体规则如下:

page_name + 时间戳 + 10 位随机字符串

page id 的生命周期可以理解为页面访问到页面退出,可以合理用在比如路径查找、订单归因等数据清洗过程中。

在 qe 平台上有清洗的实时 pv 表:mengtuidw.dwd_bhv_pv_rt

曝光上报

曝光上报包含商品曝光上报、页面模块曝光上报等,其 xtype 值为 res.imp

曝光上报一般伴随两个特别字段 pos_idres_id。其含义如下:

字段 含义
pos_id 位置 id
res_id 资源 id

可以通过这两个字段精确到页面具体位置的上报,其知晓上报内容。比如 pos_id = 'recommend.1',res_id = 'goods?id=1002832',表示来源于页面的推荐列表,曝光的商品 id 是 1002832

相关 pos_id 及 res_id 定义可以查看文档:http://km.innotechx.com/pages/viewpage.action?pageId=40140937

在 qe 平台上有清洗的实时曝光表:mengtuidw.dwd_bhv_exposure_rt

tdata 字段上报

tdata 字段是推荐这边比较关注的一个字段,它不仅限于一个特定类型的上报中,而是结合在包括 pvres.imp 等上报中,通常以 xtdata 字段标识其值。

xtdata 字段值是一个 JSON String,其中包含了业务方需要的信息。

上报路径

tdata 上报拥有一条包含曝光到下单,比较完整的上报链路,如下所示:

算法推荐 -> GO 商品列表接口 -> 客户端曝光 -> 用户点击至商详 -> 用户下单

通过这个路径,能够保障 tdata 字段可以最终关联上商品产生的订单。

字段透传

在上述路径中,tdata 字段值会被一直透传,直至后续路径断开。该过程中,对 tdata 字段值一律不作处理,所以最终上报内容是等于下发内容的。了解这一点有助于快速排出问题。

业务划分

另外,tdata 字段目前有 2 个业务在使用,一个是算法推荐,另一个是广告系统。算法推荐使用 5key,分别是 req_id, p_score, o_score, from, s_score,目前除了 req_id 字段,其他几个字段比较鲜见;广告系统使用 1key: ads_report。 所以在调整 tdata 字段时需要注意不影响其他业务,并且及时通知维护文档:http://km.innotechx.com/pages/viewpage.action?pageId=97708332

session 上报

session 上报是在发生和商品相关的上报时,增加的一种冗余上报,

上报规则

session 上报的 type 值为 session。该上报中使用 xsession 字段表达上报内容,xsession 字段值是一个 JSON String,其中 key 枚举如下:

字段 含义
member_id 用户 id
opid kuid
gid goods id
time 上报时间
from_page_id 来源页 page id
page_id 当前页 page id
action_type session 上报的前置上报类型
page_name 当前页 page name
from_page_name 来源页 page name
key_param 当前页 key param
from_pos_id 来源页位置 id
ext 额外信息,JSON String

上报时机

在任何上报中含有 goods_id 字段时,即产生 session 上报。

产生 session 上报的重要来源有:

mt 上报

业务迭代过程中,为了减少清洗数据带来的人力和资源成本,所以增加了字段含义更为抽象的 mt 上报。

上报规则

字段 含义
xtype 类型,值为 mt
xaction 描述具体行为
xaction2 更细化的行为描述
xext1 通用字段,视具体上报内容而定
... ...
xext10 通用字段,视具体上报内容而定

mt 上报中,ext1ext1010 个字段都是根据具体上报定其含义。

这带来的好处是清洗一次表后,任何上报都可以在 mt 上报中得到表达。不便之处是具体上报中 ext 字段含义需要对照文档进行识别。

辅助工具

萌推 APP 在测试版 APP 中增加了一些辅助工具帮助数分及其他同学可以方便查看上报信息。

首页是下载测试版 APP,

下载地址:

iOS 版本的安装需要在 plist 中增加手机设备识别号,需要联系 杰伦女巫 进行步骤指导和安装

安装完成后需要设置一下 APP,

进入 我的 - 设置

安卓步骤:

进入 调试工程模式 切换环境 正式环境 开启 H5 DEBUG 模式 开启 强制关闭HTML本地资源包映射 点击顶部 保存重启

如提示 “当前环境,无需切换”,可以手动杀死 APP,再次打开生效

iOS 步骤:

进入 Debug 切换环境 线上环境 开启 是否强制使用远程资源包 开启 是否使用H5Debug 点击顶部 立即生效

如点击 立即生效 无反馈,可以手动杀死 APP,再次打开生效

上报内容查看工具

设置完成后,进入 H5 页面会发现右上角多了一个 toggle 按钮,表示已经生效。

点击 toggle 按钮可以切换可视化数据显示/隐藏。

可视化截图

一般的 PV 信息和曝光信息会在页面上直观呈现。

商品信息查看工具

设置完成后,H5 页面的右下角会多一个绿色的原型按钮。通过该按钮,可以直接查看商品数据。

具体操作是,先点击按钮,按钮此时会变成红色,表示进入选区模式。

在选区模式时,手指滑动屏幕,会出现一个选区。将选区选定一个商品名称,此时会出现一个遮罩层,展示出该商品相关的原始数据。

选区截图

商品数据截图

附录

文档

埋点规则:http://km.innotechx.com/pages/viewpage.action?pageId=34799684 page name 一览:http://km.innotechx.com/pages/viewpage.action?pageId=76903202 mt 上报一览:http://km.innotechx.com/pages/viewpage.action?pageId=72857273 session 上报规则:http://km.innotechx.com/pages/viewpage.action?pageId=69748056 pos_id/res_id 规则及一览:http://km.innotechx.com/pages/viewpage.action?pageId=40140937 字段解释:http://km.innotechx.com/pages/viewpage.action?pageId=69731721 APP 采集上报文档:http://km.innotechx.com/pages/viewpage.action?pageId=82251637

数据查询工具

QE 平台:http://dataplatform.qutoutiao.net/qe_vue/#/search

Thanks