实验指标报表

AB实验最终是以提升业务的指标为目的。上线实验后,我们期望可以可视化的看到实验效果及指标数据。本文介绍的实验指标系统包括3部分, 指标数据源的接入, 指标的定义, 实验指标的可视化展示。

整体架构

image-20210813142642800

PAI-Rec 引擎是我们的推荐服务,里面集成了配置中心的 SDK,实验信息从配置中心获取到。在推荐服务返回接口中,会记录实验id exp_id, 以及请求的标识 reqid 等。这些数据会埋点在服务的 APP 上。

当用户产生行为时,最终数据会回流到系统中,我们现在支持数据源在 ODPS 中。 当配置中心配置了若干个指标后,我们会动态组装 SQL, 然后对 ODPS 的数据进行计算、统计,并把结果存到 Hologres 中。在报表页面,可以实时查询到指标数据。

数据源定义

数据源包含两部分,数据来源表,以及数据结果表。来源表是 ODPS 表, 结果表是 Hologres 表。并且需要遵循一定的 schema 规范。

实验报表来源表

字段名称

字段含义

是否必填

说明

user_id

用户id

用户标识,可以是用户的 uid, 也可以是设备 devcie_id, imei 等

exp_id

实验id

ab 服务返回的实验id, 通过埋点回流。如果是用户的自己的推荐服务,设置自定义的标识即可。exp_id:ER1_L1#EG1#E1_L2#EG2#E2

维度字段

比如操作系统 os

可以根据此维度字段过滤对应的指标

计算字段

比如 曝光, show_count, 点击,click_count

计算字段是用户填写的数值类型,比如曝光数,点击数,观看时长等

dt

日期分区

格式:yyyyMMdd

hh

小时分区

24小时制, 00 ~ 23

mm

分钟分区

00 ~ 59

来源表可以离线产出,也可以实时产出,主要看客户的业务系统。如果是离线产出, user_id, exp_id, dt 是必须的。 如果是实时的,user_id, exp_id, dt, hh 是必须的,mm 分区不是必须的。

指标也分为离线和实时。如果是实时产出的数据源,离线、实时指标可以共用一个数据源。如果是离线产出的数据源,只能创建离线指标,无法创建实时指标。

上面的维度字段也不是必须的,加上维度字段可以对指标进行维度分析。比如常见的维度字段有性别、操作系统(IOS, 安卓)等。这样报表的数据可以分 男女,ios 和 安卓进行查看。

实时报表结果表

字段名称

字段含义

是否必填

说明

exp_id

实验id

ab 服务返回的实验id, 通过埋点回流。如果是用户的自己的推荐服务,设置自定义的标识即可。如果是ab 服务的实验id, exp_id 是拆分开的,具体到某一个实验上。 比如 L1#EG1#E1, L2#EG2#E2

维度字段

比如操作系统 os

可以根据此维度字段过滤对应的指标

metric_name

指标的名称,比如 pv, uv, ctr 等

metric_value

指标的值

float64 值

dt

日期字段

格式:yyyyMMdd

hh

小时字段

24小时制, 00 ~ 23

mm

分钟字段

00 ~ 59

结果表字段基本都是固定的,只有维度字段是可变的。维度字段的定义与来源表中的定义保持一致即可。

离线指标和实时指标不能混用一个结果表。离线指标结果表只需要有 dt 日期字段即可。实时指标至少要有 hh 小时字段 。

配置举例

来源表配置

image-20210813174109319

结果表配置

image-20210813181325738

指标定义

从生成方式上来说,指标分为离线和实时指标。从类型上来说,分为单一指标和衍生指标。衍生由两个单一指标组成,并支持 + - * / 计算。

指标定义,如果 ODPS 支持的 function 都可以支持。

离线指标

在指标的定义中,我们可以指标模板来快速创建指标。

image-20210913152832116

实时指标

image-20210813163853031

衍生指标

image-20210813163939892

指标诊断

指标定义之后,可以使用指标诊断功能,来判断可能出现的问题,防止配置错误。

image-20210913153359180

指标统计流程

image-20210813174401110

指标测试和数据重跑

当新增加一个指标时,可以使用指标测试功能,快速的验证设置的指标是否是正确的。 指标测试是对昨天的数据进行重跑。

image-20210816180456900

重跑的结果可以通过离线任务列表来查看。 如果重跑失败, 可以查看 message 相关的信息。可以把 message 相关的信息拷贝到 dateworks 里执行,来查看具体的错误原因。

image-20210816180620076

如果重跑成功,可以查看相关的报表,看下相关的数据是否正确。

如果指标测试成功,需要跑多天的数据,可以使用数据重跑功能。 如果有时候当天的数据源没有正确产出,数据修复后,也可以使用数据重跑功能。

image-20210816181251405

实验指标报表

离线指标和实时指标分别对应不同的报表。报表查看可以直接通过实验组来看到各个实验的指标值以及与base 实验的差异。

image-20210813175139935

这里还可以设置维度,比如根据操作系统来区分实验效果。 不设置维度值,会把维度的所有值拿出来对比。

image-20210813175257437

image-20210813181516306