本文基于 Adjust(原始数据) -> S3(云存储)-> Druid(数仓)-> Superset(可视化)。
几点说明:
- 共两个阶段会对已有字段(以下称为列)进行加工:
- 写入数仓时:在 Adjust/S3 原有列的基础上;
- 写入数仓后:在 Druid 原有列的基础上,也就是可视化查询时;
- 示例的 SQL 语句省略了除0的情况;
- Druid 不支持窗口函数;
统计原则
一个 ID,两个时间戳
adid
:用户唯一标识;installed_at
:首次打开的时间戳;created_at
:事件发生的时间戳,在数仓中为__time
;(Druid 需要)
时区说明:时间戳类型全部为 UTC 时区;
统计次数
没有使用 COUNT(*)
,是为了事件去重。
|
|
统计人数
使用的是 Adjust 的设备标识 adid
.
|
|
统计频次
次数 / 人数。
|
|
新增计算列
⚠️ 注意:写入数仓前的批量任务中新增,因此是基于 Adjust/S3 的原始列。
days_x
✍ 同期群分析,本质上是围绕 created_at
和 installed_at
之间相差的天数展开的。
|
|
关于次日,有两种可能的定义:
1.严格间隔 24h 为次日;
2.过了零点就是次日了;
⚠️ Adjust 和这里计算 days_x 的方式,都属于第一种。
1.严格间隔 24h 为次日;
2.过了零点就是次日了;
⚠️ Adjust 和这里计算 days_x 的方式,都属于第一种。
event_name
取齐,便于分析。
|
|
media_source
用于区分流量来源(归因)。
⚠️ 需要按需修改:实际接入的流量源。
|
|
revenue_kind
用于区分收入类型。
⚠️ 需要按需修改:收入事件名称。
|
|
revenue
用于统一计算所有类型的收入:广告、内购(一次性)、订阅。
⚠️ 需要按需修改:实际接入的聚合平台、收入事件名称。
|
|
is_test_device
未严格在 sandbox 环境测试时,手动维护的内部测试设置列表,用于剥离出生成环境的数据。
|
|
基础指标
⚠️ 注意:写入数仓后计算的,因此是基于 Druid 的原始列。
newUser
新增。
|
|
DAU
关于活跃的定义:
- Adjust:与应用发生互动,见 What is an active user?
- Firebase:
user_engagement
事件,见 User activity over time - BigQuery:至少发生了一个事件,且该事件的参数
engagement_time_msec
> 0,见 N-day active users - 自行定义:至少发生了一次自定义的
login
事件;
|
|
ARPDAU
活跃用户的 ARPU,其中活跃使用上述自定义的。
|
|
ARPU (New)
新用户的 ARPU.
|
|
同期群指标
RR
留存率。与上述活跃定义取齐,留存率计算公式:Rx = Dx活跃 / D0活跃
。
|
|
LTV
给定周期内的总收入。
|
|
广告变现指标
Imps
广告展示次数。
|
|
DAV
广告展示人数。
|
|
eCPM
|
|
Imps per DAU
活跃用户,平均广告展示次数。
|
|
Imps per DAV
看到广告的用户,平均广告展示次数。
|
|
未完待续 …
附:原始数据结构
原始数据示例,有助于理解数据结构。