瓦拉数据字段百科全书
本文档系统梳理所有已知数据库字段,包含释义、用途和计算口径。
- 更新时间: 2026-05-07
- 维护人: 小溪 📊
目录
- PostgreSQL vala_bi 库
- MySQL vala_user 库(源表)
- MySQL vala 库(配置表)
- MySQL vala_order 库
- 核心计算口径汇总
- 渠道映射表
一、PostgreSQL vala_bi 库
数据库: Online PostgreSQL (bj-postgres-16pob4sg)
角色: 线上环境用户行为与业务 BI 数据
权限: 只读
1.1 bi_vala_order(订单表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
订单主键 ID |
唯一标识一笔订单 |
去重统计订单数:COUNT(DISTINCT id) |
account_id |
bigint |
YES |
用户账号 ID |
关联用户信息 |
关联 bi_vala_app_account.id |
out_trade_no |
varchar |
YES |
商户订单号 |
外部交易流水号,关联退费表 |
关联 bi_refund_order.out_trade_no |
trade_no |
varchar |
YES |
交易流水号 |
支付平台交易号,关联退费表 |
关联 bi_refund_order.trade_no |
pay_amount |
varchar |
YES |
支付金额(元) |
以元为单位的金额(字符串格式) |
⚠️ 建议统一用 pay_amount_int |
goods_id |
bigint |
YES |
商品 ID |
关联购买的商品 |
|
order_status |
integer |
YES |
订单状态 |
标识订单当前状态 |
状态枚举:1=未支付,2=已支付,3=已完成,4=已退款,5=已取消 |
order_status_comment |
text |
YES |
订单状态备注 |
状态变更说明 |
|
is_used |
integer |
YES |
是否已使用 |
标记订单是否已被使用 |
|
sale_channel |
integer |
YES |
购课渠道编号 |
端内购课渠道(仅 key_from=app-active-h5-0-0 时有效) |
见渠道映射表 |
created_at |
timestamptz |
YES |
创建时间 |
订单创建时间 |
|
updated_at |
timestamptz |
YES |
更新时间 |
订单最后更新时间 |
|
deleted_at |
timestamptz |
YES |
删除时间 |
NULL=未删除 |
统计时过滤 deleted_at IS NOT NULL |
pay_channel |
integer |
YES |
支付渠道 |
支付方式(微信/支付宝等) |
|
pay_amount_int |
integer |
YES |
支付金额(分) |
以分为单位的整数金额 |
GMV/GSV 统计使用此字段,元 = 分/100 |
pay_success_date |
timestamptz |
YES |
支付成功时间 |
实际支付成功的时间 |
时间维度统计的基准时间 |
quantity |
integer |
NO |
数量 |
购买数量 |
默认 1 |
goods_name |
text |
NO |
商品名称 |
购买的课程/商品名称 |
|
goods_apply_package_ids |
text |
NO |
适用套餐包 ID |
商品关联的套餐包 |
|
key_from |
text |
NO |
销售渠道标识 |
标识订单来源渠道 |
渠道映射见渠道映射表 |
expire_days |
integer |
YES |
有效期天数 |
课程有效期 |
|
关联关系:
bi_vala_order.account_id → bi_vala_app_account.id(关联用户)
bi_vala_order.trade_no ↔ bi_refund_order.trade_no(关联退费)
bi_vala_order.out_trade_no ↔ bi_refund_order.out_trade_no(关联退费)
1.2 bi_vala_app_account(用户账号表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
用户账号主键 |
唯一标识一个用户账号 |
关联 bi_vala_order.account_id、bi_vala_app_character.account_id |
tel |
varchar |
YES |
手机号 |
用户注册手机号 |
明文手机号 |
tel_encrypt |
varchar |
YES |
加密手机号 |
加密后的手机号 |
|
name |
varchar |
YES |
用户姓名 |
用户真实姓名 |
|
id_card |
varchar |
YES |
身份证号 |
用户身份证 |
⚠️ 敏感信息 |
status |
smallint |
NO |
账号状态 |
标识账号是否正常 |
1=正常用户,2=测试用户;所有统计必须 status=1 |
pay_status |
integer |
YES |
付费状态 |
标识用户是否付费 |
|
login_times |
integer |
YES |
登录次数 |
累计登录次数 |
|
remark |
text |
YES |
备注 |
人工备注信息 |
|
key_from |
varchar |
NO |
注册来源 |
用户注册时的渠道标识 |
同订单表 key_from 含义 |
created_at |
timestamptz |
YES |
注册时间 |
用户注册时间 |
新增用户统计的时间基准 |
updated_at |
timestamptz |
YES |
更新时间 |
最后更新时间 |
|
deleted_at |
timestamptz |
YES |
删除时间 |
NULL=未删除 |
统计时过滤 |
download_channel |
text |
YES |
下载渠道 |
用户下载 App 的渠道 |
新增用户(免费注册)按此字段分渠道统计 |
注意事项:
- 测试账号剔除规则:所有订单类统计必须
JOIN bi_vala_app_account ON account_id 并 WHERE status = 1
download_channel 为汉字格式,匹配时使用「关键字包含」方式,如 LIKE '%学而思%'
1.3 bi_vala_app_character(用户角色表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
角色主键 |
唯一标识一个角色 |
关联学习记录表的 user_id |
account_id |
bigint |
YES |
账号 ID |
关联用户账号 |
关联 bi_vala_app_account.id |
nickname |
varchar |
YES |
角色昵称 |
用户的角色昵称 |
|
gender |
smallint |
YES |
性别 |
角色性别 |
0=girl,1=boy,其他=unknown |
birthday |
varchar |
YES |
出生日期 |
YYYY-MM-DD 格式 |
split_part(birthday,'-',1) 提取年份 |
avatar |
text |
YES |
头像 |
角色头像 URL |
|
spine_name |
varchar |
YES |
Spine 动画名称 |
角色动画资源 |
|
latest_login |
timestamptz |
YES |
最后登录时间 |
角色最近一次登录 |
|
reputation |
char |
YES |
声望值 |
角色声望等级 |
|
robots_cnt |
integer |
YES |
机器人数量 |
拥有的机器人数量 |
|
head_image |
varchar |
YES |
头像图片 |
头像图片资源 |
|
status |
smallint |
YES |
角色状态 |
角色是否有效 |
|
purchase_season_package |
text |
YES |
赛季包购买状态 |
JSON 数组格式 |
'[1]'=未购买赛季包;'[1]' = 未付费角色 |
total_sp_point |
integer |
YES |
总 SP 积分 |
累计获得的技能点 |
|
balance_sp_point |
integer |
YES |
余额 SP 积分 |
当前可用技能点 |
|
point |
integer |
YES |
积分 |
通用积分 |
|
pay_status |
smallint |
YES |
付费状态 |
角色维度的付费状态 |
0=未付费,1=已付费 |
created_at |
timestamptz |
YES |
创建时间 |
角色创建时间 |
|
updated_at |
timestamptz |
YES |
更新时间 |
最后更新时间 |
|
deleted_at |
timestamptz |
YES |
删除时间 |
NULL=未删除 |
|
mood |
integer |
YES |
心情值 |
角色当前心情 |
|
mood_start_time |
bigint |
YES |
心情起始时间 |
心情值变化的时间戳 |
|
1.4 bi_refund_order(退费订单表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
退费订单主键 |
唯一标识一笔退费 |
|
account_id |
bigint |
YES |
账号 ID |
退费用户 |
|
out_trade_no |
varchar |
YES |
商户订单号 |
关联原订单 |
关联 bi_vala_order.out_trade_no |
trade_no |
varchar |
YES |
交易流水号 |
关联原订单 |
关联 bi_vala_order.trade_no |
refund_amount |
varchar |
YES |
退费金额(元) |
字符串格式退费金额 |
⚠️ 建议用 refund_amount_int |
created_at |
timestamptz |
YES |
创建时间 |
退费申请时间 |
|
updated_at |
timestamptz |
YES |
更新时间 |
退费最后更新时间 |
当 status=3 时即退费成功时间 |
deleted_at |
timestamptz |
YES |
删除时间 |
NULL=未删除 |
|
refund_amount_int |
integer |
NO |
退费金额(分) |
整数退费金额 |
GSV 计算使用此字段 |
reason |
text |
NO |
退费原因 |
退费原因说明 |
|
sale_channel |
integer |
NO |
销售渠道 |
退费订单的渠道 |
|
status |
integer |
NO |
退费状态 |
退费处理状态 |
status=3 表示退费成功 |
is_admin |
boolean |
NO |
是否管理员操作 |
是否管理员手动退费 |
|
channel_refund_id |
bigint |
NO |
渠道退费 ID |
支付渠道退费流水号 |
|
refund_ticket_ids |
text |
YES |
退费券 ID |
关联的退费券 |
|
refund_type |
integer |
NO |
退费类型 |
退费分类 |
|
refund_method |
integer |
NO |
退费方式 |
退款到账方式 |
|
after_sale_no |
text |
YES |
售后单号 |
售后流程单号 |
|
退费订单校验规则(双条件,缺一不可):
bi_refund_order.status = 3(退费成功)
bi_vala_order.order_status = 4(订单状态为已退款)
1.5 bi_user_course_detail(用户课程明细表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
integer |
NO |
课程明细主键 |
|
|
created_at |
timestamptz |
YES |
创建时间 |
|
|
updated_at |
timestamptz |
YES |
更新时间 |
|
|
account_id |
integer |
YES |
用户 ID |
关联账号 |
关联 bi_vala_app_account.id |
user_id |
integer |
YES |
角色 ID |
关联角色 |
关联 bi_vala_app_character.id |
course_level |
text |
YES |
课程等级 |
L1/L2(对应 A1/A2) |
|
active_time |
timestamptz |
YES |
激活时间 |
课程激活时间 |
|
expire_time |
timestamptz |
YES |
过期时间 |
课程过期时间 |
不为空=正式课,为空=体验课 |
latest_unit_index |
integer |
YES |
最新单元索引 |
最近学习的单元编号 |
|
latest_lesson_index |
integer |
YES |
最新课时索引 |
最近学习的课时编号 |
|
learn_duration |
integer |
YES |
学习时长 |
累计学习时长 |
|
last_learn_time |
timestamptz |
YES |
最后学习时间 |
最近一次学习时间 |
|
deleted_at |
timestamptz |
YES |
删除时间 |
有值=课程已删除,空=未删除 |
统计时过滤 |
1.6 bi_level_unit_lesson(课程结构映射表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
integer |
YES |
chapter_id |
直接关联播放记录表的 chapter_id |
例子:L1 S0 U00 L01 → id=343 |
course_level |
varchar |
YES |
课程等级 |
L1 / L2 |
对应 A1 / A2 |
course_season |
varchar |
YES |
季度 |
S0 / S1 / S2 / S3 / S4 |
S0=U0 所在季 |
course_unit |
varchar |
YES |
单元 |
U00 / U01 / U02 ... |
每季 12 个单元 |
course_lesson |
varchar |
YES |
课时 |
L01 / L02 / L03 / L04 / L05 |
每单元 5 节课 |
使用方式:
- 查询某课程的学习数据时,先通过此表按
course_level + course_season + course_unit + course_lesson 匹配出目标 id(即 chapter_id),再关联播放记录表查询
- [李承龙确认] 匹配课程统一使用此表
1.7 bi_user_chapter_play_record_0~7(用户课时播放记录,8 张分表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
播放记录主键 |
|
|
user_id |
bigint |
YES |
角色 ID |
关联角色 |
关联 bi_vala_app_character.id |
chapter_id |
bigint |
YES |
课时 ID |
关联课程 |
关联 bi_level_unit_lesson.id |
chapter_unique_id |
varchar |
YES |
完课唯一标识 |
关联组件播放记录 |
关联 bi_user_component_play_record.chapter_unique_id |
play_status |
smallint |
YES |
播放状态 |
是否完成课时 |
1=正常完成,0=未开始,2=中途退出 |
story_id |
bigint |
YES |
故事 ID |
关联游戏/故事 |
|
created_at |
timestamptz |
YES |
创建时间 |
首次进入/开始时间 |
首次完成时间:按 user_id + chapter_id 分组取 created_at 最小值 |
updated_at |
timestamptz |
YES |
更新时间 |
|
|
deleted_at |
timestamptz |
YES |
删除时间 |
NULL=未删除 |
|
map_position |
text |
YES |
地图位置 |
课程在地图上的位置 |
|
dialog_info |
text |
YES |
对话信息 |
对话数据 JSON |
|
level |
varchar |
YES |
等级 |
课程等级标识 |
|
分表处理: 统计时需要用 UNION ALL 合并 8 张分表的数据。
1.8 bi_user_component_play_record_0~7(用户组件播放记录,8 张分表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
组件播放主键 |
|
|
user_id |
bigint |
YES |
角色 ID |
|
|
chapter_id |
bigint |
YES |
课时 ID |
|
|
chapter_unique_id |
varchar |
YES |
完课唯一标识 |
关联课时播放记录 |
|
component_id |
bigint |
YES |
组件 ID |
组件编号 |
|
sub_component_type |
smallint |
YES |
组件子类型 |
|
|
component_type |
smallint |
YES |
组件类型 |
大类:核心互动/中互动等 |
|
comp_type |
varchar |
YES |
组件类型名 |
字符串类型名 |
|
play_status |
smallint |
YES |
播放状态 |
|
1=完成,2=退出(退出率统计条件:IN (1,2)) |
pass_time |
integer |
YES |
通过时间 |
|
|
interval_time |
integer |
YES |
播放耗时(毫秒) |
完课耗时统计核心字段 |
求和 /60000 = 分钟(保留1位小数) |
read_word_count |
integer |
YES |
阅读词数 |
|
|
speak_count |
integer |
YES |
口语次数 |
|
|
listen_sentence_count |
integer |
YES |
听力句数 |
|
|
write_word_count |
integer |
YES |
写作词数 |
|
|
created_at |
timestamptz |
YES |
创建时间 |
|
|
updated_at |
timestamptz |
YES |
更新时间 |
|
|
deleted_at |
timestamptz |
YES |
删除时间 |
|
统计需过滤 |
section_id |
bigint |
YES |
小节 ID |
|
|
component_unique_code |
varchar |
YES |
组件唯一编码 |
如 core_reading_order-0101004 |
组件维度统计的核心分组字段 |
play_result |
varchar |
YES |
练习结果 |
|
Perfect / Good / Oops |
finish_question_count |
integer |
YES |
完成题目数 |
|
|
skill_points |
integer |
YES |
技能点 |
获得的技能点 |
|
c_type |
varchar |
YES |
组件类别 |
组件分类标识 |
|
c_id |
varchar |
YES |
组件类别 ID |
|
|
user_behavior_info |
text |
YES |
用户行为信息 |
详细行为 JSON |
|
behavior_analysis_info |
text |
YES |
行为分析信息 |
|
|
session_id |
varchar |
YES |
会话 ID |
学习会话标识 |
|
listen_time |
integer |
YES |
听力时间 |
|
|
dialog_list |
text |
YES |
对话列表 |
|
|
level |
varchar |
YES |
等级 |
|
|
1.9 bi_user_unit_review_question_result(课程巩固 Review 源表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
主键 |
|
|
user_id |
bigint |
YES |
角色 ID |
|
|
story_id |
bigint |
YES |
故事 ID |
|
|
score |
integer |
YES |
得分 |
|
|
score_text |
varchar |
YES |
评分等级 |
Perfect/Good/Oops |
|
question_list |
text |
YES |
题目列表 JSON |
包含每题的 isRight/isSkip |
正确率 = 正确数/总题数*10000(万分比) |
sp_value |
integer |
YES |
SP 值 |
|
|
created_at |
timestamptz |
YES |
创建时间 |
|
|
updated_at |
timestamptz |
YES |
更新时间 |
|
|
deleted_at |
timestamptz |
YES |
删除时间 |
|
|
category |
varchar |
YES |
分类 |
|
|
exp |
integer |
YES |
经验值 |
|
|
play_time |
bigint |
YES |
播放时间(毫秒) |
巩固用时计算来源 |
play_time / 1000 = 秒 |
read_word_count |
bigint |
YES |
阅读词数 |
|
|
listen_time |
bigint |
YES |
听力时间 |
|
|
speak_count |
bigint |
YES |
口语次数 |
|
|
level |
varchar |
YES |
等级 |
|
|
1.10 bi_user_unit_summary_km_result(单元强化 Summary 源表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
主键 |
|
|
user_id |
bigint |
YES |
角色 ID |
|
|
story_id |
bigint |
YES |
故事 ID |
|
|
km_id |
varchar |
YES |
知识模块 ID |
|
|
km_type |
varchar |
YES |
知识模块类型 |
|
|
score_text |
varchar |
YES |
评分等级 |
|
|
sp_value |
integer |
YES |
SP 值 |
|
|
created_at |
timestamptz |
YES |
首次进入时间 |
强化进入时间 |
|
updated_at |
timestamptz |
YES |
更新时间 |
|
|
deleted_at |
timestamptz |
YES |
删除时间 |
|
|
play_time |
bigint |
YES |
播放时间 |
|
|
sum_explain |
text |
YES |
总结说明 |
|
|
level |
varchar |
YES |
等级 |
|
|
1.11 bi_user_unit_challenge_question_result(单元挑战 Challenge 源表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
主键 |
|
|
user_id |
bigint |
YES |
角色 ID |
|
|
story_id |
bigint |
YES |
故事 ID |
|
|
chapter_id |
bigint |
YES |
课时 ID |
注意:挑战是单元级而非课时级,但仍有关联 |
|
unique_id |
varchar |
YES |
唯一标识 |
|
|
score |
integer |
YES |
得分 |
|
|
score_text |
varchar |
YES |
评分等级 |
Perfect / Good / Oops |
四维度评分合计 |
question_list |
text |
YES |
题目列表 |
包含四维度评分详情 |
解析出 listening/speaking/reading/writing 各自评分 |
sp_value |
integer |
YES |
SP 值 |
|
|
exp |
integer |
YES |
经验值 |
|
|
created_at |
timestamptz |
YES |
首次进入时间 |
挑战进入时间 |
|
updated_at |
timestamptz |
YES |
更新时间 |
|
|
deleted_at |
timestamptz |
YES |
删除时间 |
|
|
play_time |
bigint |
YES |
播放时间 |
|
|
level |
varchar |
YES |
等级 |
|
|
1.12 bi_user_task_log(用户任务日志表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
integer |
NO |
主键 |
|
user_id |
integer |
NO |
角色 ID |
|
task_type |
integer |
NO |
任务类型 |
|
task_id |
integer |
NO |
任务 ID |
|
status |
integer |
NO |
任务状态 |
|
start_time |
bigint |
NO |
开始时间 |
Unix 时间戳 |
updated_at |
timestamptz |
YES |
更新时间 |
|
created_at |
timestamptz |
YES |
创建时间 |
|
1.13 account_detail_info(账号详情表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
计算口径 |
id |
bigint |
NO |
主键 |
|
|
account_id |
integer |
YES |
账号 ID |
关联用户 |
|
login_time |
text |
YES |
登录时间 |
|
|
device |
text |
YES |
设备信息 |
|
|
device_os |
text |
YES |
设备操作系统 |
iOS/Android |
|
login_address |
text |
YES |
登录地址 |
格式"省份-城市" |
split_part(login_address,'-',2) 提取城市 |
login_times |
integer |
YES |
登录次数 |
|
|
created_time |
timestamptz |
NO |
创建时间 |
|
|
phone_login_times |
integer |
YES |
手机登录次数 |
|
=0 表示从未手机登录 |
1.14 account_login(账号登录表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
account_id |
integer |
YES |
账号 ID |
|
login_date |
text |
NO |
登录日期 |
日期维度分组 |
created_time |
timestamptz |
NO |
创建时间 |
|
status |
integer |
NO |
状态 |
|
1.15 account_device(设备表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
account_id |
integer |
YES |
账号 ID |
|
device |
text |
YES |
设备标识 |
|
created_time |
timestamptz |
NO |
创建时间 |
|
1.16 bi_vala_seasonal_ticket(季度券表,PG 侧同步)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
account_id |
bigint |
YES |
账号 ID |
|
out_trade_no |
varchar |
YES |
订单号 |
|
give_time |
bigint |
NO |
发放时间戳 |
|
expire_time |
bigint |
NO |
到期时间戳 |
|
used_time |
bigint |
NO |
使用时间戳 |
|
character_id |
integer |
YES |
角色 ID |
|
ticket_type |
smallint |
YES |
券类型 |
1=Season Pass,2=Season Copy |
season_package_id |
integer |
YES |
赛季包 ID |
|
season_package_name |
varchar |
YES |
赛季包名称 |
|
status |
integer |
YES |
状态 |
0=未使用,1=已使用,-1=禁用 |
created_at |
timestamptz |
YES |
创建时间 |
|
updated_at |
timestamptz |
YES |
更新时间 |
|
deleted_at |
timestamptz |
YES |
删除时间 |
|
character_name |
varchar |
YES |
角色名 |
|
redeem_code |
varchar |
YES |
兑换码 |
|
apply_package_ids |
text |
YES |
适用套餐包 ID |
|
ticket_group |
text |
NO |
券分组 |
|
name |
varchar |
YES |
名称 |
|
season_package_level |
varchar |
YES |
赛季包等级 |
|
1.17 account_activity_count(账号活动统计表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
time_period |
integer |
YES |
时间周期 |
|
counts |
integer |
YES |
计数 |
|
stat_date |
text |
NO |
统计日期 |
|
created_time |
timestamptz |
NO |
创建时间 |
|
1.18 account_paid_activity_count(付费账号活动统计表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
integer |
NO |
主键 |
|
time_period |
integer |
YES |
时间周期 |
|
counts |
integer |
YES |
计数 |
|
stat_date |
text |
NO |
统计日期 |
|
created_time |
timestamptz |
NO |
创建时间 |
|
1.19 growth_activity_behavior(增长活动行为表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
integer |
NO |
主键 |
|
es_id |
varchar |
NO |
ES 记录 ID |
|
account_id |
integer |
YES |
账号 ID |
|
account_name |
varchar |
YES |
账号名 |
|
activity |
text |
YES |
活动 |
|
behavior |
varchar |
YES |
行为 |
|
created_at |
timestamptz |
YES |
创建时间 |
|
info |
text |
YES |
详细信息 |
|
source |
varchar |
YES |
来源 |
|
sub_behavior |
varchar |
YES |
子行为 |
|
user_id |
integer |
YES |
角色 ID |
|
user_name |
varchar |
YES |
角色名 |
|
1.20 user_behavior_buried_points(埋点数据表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
integer |
NO |
主键 |
|
burying_point_id |
integer |
YES |
埋点 ID |
|
burying_point_name |
varchar |
YES |
埋点名称 |
|
burying_point_sub_id |
integer |
YES |
子埋点 ID |
|
burying_point_sub_name |
varchar |
YES |
子埋点名称 |
|
account_id |
integer |
YES |
账号 ID |
|
account_name |
varchar |
YES |
账号名 |
|
character_id |
integer |
YES |
角色 ID |
|
character_name |
varchar |
YES |
角色名 |
|
active_time |
integer |
YES |
活跃时间 |
|
version_id |
varchar |
YES |
版本 ID |
|
step_duration |
integer |
YES |
步骤耗时 |
|
finish_status |
varchar |
YES |
完成状态 |
|
season_package_id |
integer |
YES |
赛季包 ID |
|
season_package_name |
varchar |
YES |
赛季包名 |
|
unit_id |
integer |
YES |
单元 ID |
|
unit_name |
varchar |
YES |
单元名 |
|
lesson_id |
integer |
YES |
课时 ID |
|
lesson_name |
varchar |
YES |
课时名 |
|
component_id |
integer |
YES |
组件 ID |
|
component_name |
varchar |
YES |
组件名 |
|
c_type |
varchar |
YES |
组件类别 |
|
c_id |
varchar |
YES |
组件类别 ID |
|
learning_module_id |
integer |
YES |
学习模块 ID |
|
learning_module_name |
varchar |
YES |
学习模块名 |
|
learning_point_id |
integer |
YES |
知识点 ID |
|
learning_point_name |
varchar |
YES |
知识点名 |
|
card_id |
integer |
YES |
卡 ID |
|
card_name |
varchar |
YES |
卡名 |
|
data_version |
varchar |
YES |
数据版本 |
|
ex2 |
text |
YES |
扩展字段 2 |
|
ex3 |
text |
YES |
扩展字段 3 |
|
es_id |
varchar |
YES |
ES 记录 ID |
|
1.21 data_sync_config(数据同步配置表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
job_name |
text |
NO |
任务名称 |
cron 任务标识 |
database_name |
text |
YES |
数据库名 |
|
origin_table |
text |
YES |
源表 |
|
dest_table |
text |
YES |
目标表 |
|
deal_time |
timestamptz |
YES |
处理时间 |
|
full_id |
bigint |
NO |
全量 ID |
|
created_at |
timestamptz |
NO |
创建时间 |
|
updated_at |
timestamptz |
YES |
更新时间 |
|
1.22 feishu_table_record(飞书表格记录表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
data_table |
text |
NO |
数据表名 |
|
record_id |
text |
YES |
记录 ID |
|
created_at |
timestamptz |
NO |
创建时间 |
|
1.23 user_detail_info(用户详情表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
user_id |
integer |
YES |
角色 ID |
|
latest_login_time |
bigint |
YES |
最近登录时间戳 |
|
latest_active_time |
bigint |
YES |
最近活跃时间戳 |
|
created_time |
timestamptz |
NO |
创建时间 |
|
1.24 user_behavior_0~15(用户行为分表,16 张)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
user_id |
integer |
YES |
角色 ID |
|
stat_date |
text |
NO |
统计日期 |
|
learning_time |
integer |
YES |
学习时长 |
|
created_time |
timestamptz |
NO |
创建时间 |
|
二、MySQL vala_user 库(源表)
数据库: Online MySQL vala_user (bj-cdb-dh2fkqa0)
角色: 用户行为源数据
权限: 只读
2.1 vala_user_learn_record(用户学习记录表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
user_id |
bigint |
NO |
角色 ID |
|
game_id |
bigint |
YES |
故事 ID |
关联游戏 |
chapter_id |
bigint |
YES |
关卡/课时 ID |
|
component_type |
bigint |
YES |
组件类型 |
|
sub_component_type |
bigint |
YES |
组件子类型 |
|
component_id |
bigint |
NO |
组件 ID |
|
card_content |
text |
YES |
知识卡详情 JSON |
|
is_new |
tinyint |
NO |
是否新数据 |
0=否,1=是 |
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
2.2 vala_user_chapter_finish_record(课时完成记录表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
user_id |
bigint |
NO |
角色 ID |
|
game_id |
bigint |
YES |
游戏 ID |
|
chapter_id |
bigint |
NO |
关卡/课时 ID |
|
created_at |
datetime |
YES |
首次完成时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
2.3 vala_user_interact_log(用户互动日志表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
user_id |
bigint |
NO |
角色 ID |
|
component_type |
tinyint |
YES |
互动类型 |
1=knowledge_QA |
relation_type |
tinyint |
YES |
好友关系类型 |
1=相识 2=熟识 3=友好 4=挚友 5=至交 |
npc_id |
bigint |
NO |
NPC 角色 ID |
|
session_id |
varchar |
NO |
会话 ID |
|
summary |
text |
NO |
对话总结 |
|
dialog_list |
text |
YES |
对话详情 JSON |
|
dialog_score |
text |
YES |
对话得分汇总 |
|
tencent_soe |
text |
YES |
腾讯云语音评测数据 |
|
chat_review_resp |
text |
YES |
回顾学习数据 |
|
cost_time |
int |
NO |
耗时(秒) |
|
insert_time |
datetime |
YES |
日志上报时间 |
|
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
favor_value |
int |
YES |
好感度值 |
大模型判定的互动好感度 |
2.4 vala_user_game_finish_record(游戏完成记录表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
int |
NO |
主键 |
|
user_id |
bigint |
NO |
角色 ID |
|
game_id |
bigint |
NO |
故事 ID |
|
chapter_id |
bigint |
NO |
关卡 ID |
|
score |
float |
NO |
总得分 |
|
score_level |
char |
YES |
得分等级 |
|
unique_code |
varchar |
YES |
唯一校验码 |
每次学习完的唯一标识 |
source_type |
tinyint |
YES |
来源类型 |
1=APP,2=小程序 |
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
timestamp |
YES |
删除时间 |
|
2.5 vala_user_long_term_memory(用户长期记忆表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
user_id |
int |
YES |
角色 ID |
|
npc_id |
int |
YES |
NPC 角色 ID |
|
robot_id |
int |
YES |
机器人 ID |
|
config_id |
int |
YES |
配置 ID |
|
session_id |
varchar |
YES |
会话 ID |
|
log_id |
int |
YES |
日志 ID |
|
source |
varchar |
YES |
来源 |
|
source_type |
varchar |
YES |
来源类型 |
|
memory_type |
varchar |
YES |
记忆类型 |
|
sub_type |
varchar |
YES |
来源子类型 |
|
user_content |
text |
YES |
用户内容 |
|
system_content |
text |
YES |
系统内容 |
|
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
三、MySQL vala 库(配置表)
数据库: Online MySQL vala (bj-cdb-dh2fkqa0)
角色: 课程/产品配置数据
权限: 只读
3.1 vala_game_info(游戏信息表/单元)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
游戏/单元 ID |
关联 game_id |
en_name |
varchar |
NO |
英文名称 |
|
cn_name |
varchar |
NO |
中文名称 |
|
game_code |
varchar |
NO |
游戏编码 |
|
game_category |
tinyint |
NO |
游戏类型 |
1=改编,2=原创 |
season_package_id |
bigint |
YES |
季度包 ID |
|
level_type |
tinyint |
NO |
展开类型 |
1=顺序展开,2=触发式展开 |
desc |
text |
NO |
简介 |
|
is_hide |
tinyint |
NO |
是否隐藏 |
0=不隐藏,1=隐藏 |
is_ready |
tinyint |
YES |
是否就绪 |
|
card_package_id |
text |
YES |
卡包 ID |
|
card_plot_id |
text |
YES |
剧情卡 ID |
|
index |
int |
YES |
排序 |
UnitIndex = (SeasonOfQuarter-1)*12 + Index |
plot_card_config |
text |
YES |
剧情卡配置 JSON |
|
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
3.2 vala_game_chapter(游戏关卡/课时表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
课时 ID |
即 chapter_id |
game_id |
bigint |
YES |
所属游戏/单元 ID |
关联 vala_game_info.id |
season_package_id |
bigint |
YES |
季度包 ID |
|
en_name |
varchar |
NO |
英文名称 |
|
cn_name |
varchar |
NO |
中文名称 |
|
scene_id |
varchar |
NO |
关联场景 ID |
|
lesson_type |
tinyint |
YES |
课程类型 |
1=主线,2=支线 |
event_id |
int |
YES |
事件 ID |
支线课程的事件 ID |
desc |
text |
NO |
简介 |
|
index |
smallint |
YES |
排序 |
每单元 5 节课:1~5 → L01~L05 |
learn_config |
text |
YES |
思路学习内容 JSON |
|
scene_path |
text |
YES |
场景信息路径 |
|
self_knowledge_card_config |
text |
YES |
本故事知识卡配置 JSON |
|
other_knowledge_card_config |
text |
YES |
其他故事知识卡配置 JSON |
|
review_knowledge_card_config |
text |
YES |
复习知识卡配置 JSON |
|
chapter_extension_config |
text |
YES |
关卡扩展配置 JSON |
|
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
课程结构关系:
vala_game_info.id (unit) → vala_game_chapter.game_id
vala_game_chapter.id (chapter_id) → bi_user_chapter_play_record.chapter_id
- ChapterIndex = UnitIndex * 5 + Chapter.Index
3.3 vala_game_season_package(季度包表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
季度包 ID |
|
cn_name |
varchar |
YES |
中文名称 |
|
en_name |
varchar |
YES |
英文名称 |
|
season_of_year |
int |
NO |
年份 |
|
season_of_quarter |
int |
NO |
季度 |
1/2/3/4 |
season_cn_desc |
text |
YES |
中文描述 |
|
season_en_desc |
text |
YES |
英文描述 |
|
is_hide |
tinyint |
YES |
是否隐藏 |
0=不隐藏,1=隐藏 |
is_ready |
tinyint |
YES |
是否就绪 |
|
index |
int |
YES |
排序 |
|
level |
char |
YES |
难度等级 |
L1 / L2 |
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
课程结构层级:
CourseLevel (L1/L2) → SeasonPackage (S0~S4) → GameInfo (Unit, 每季12个) → GameChapter (Lesson, 每单元5个)
3.4 unit_challenge_question(单元挑战题目配置表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
category |
varchar |
YES |
挑战科目 |
listening/speaking/reading/writing |
type |
varchar |
YES |
题目类型 |
|
question_set_id |
varchar |
YES |
题目集 ID |
|
question_content |
text |
YES |
题目配置 JSON |
|
notice_content |
text |
YES |
飞书通知原始数据 |
配置变更通知 |
err_msg |
text |
YES |
解析错误信息 |
|
related_path |
text |
YES |
组件关联路径 |
|
material_list |
text |
YES |
材料列表 |
|
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
四、MySQL vala_order 库
数据库: Online MySQL vala_order (bj-cdb-dh2fkqa0)
权限: 只读
4.1 vala_seasonal_ticket(季度券表 - 源表)
| 字段 |
类型 |
可空 |
释义 |
用途 |
id |
bigint |
NO |
主键 |
|
unique_code |
varchar |
YES |
季度券唯一码 |
|
account_id |
bigint |
YES |
账户 ID |
|
account_name |
varchar |
YES |
账户名 |
发放给账户名 |
tel |
varchar |
YES |
手机号 |
账户手机号 |
give_time |
int |
YES |
发放时间戳 |
|
expire_time |
int |
YES |
到期时间戳 |
|
expire_type |
tinyint |
NO |
有效期类型 |
1=1个月 2=3个月 3=6个月 4=1年 5=3年 |
ticket_type |
tinyint |
NO |
券类型 |
1=Season Pass,2=Season Copy |
used_time |
int |
YES |
使用时间戳 |
|
season_package_id |
bigint |
YES |
赛季包 ID |
|
season_package_name |
varchar |
YES |
赛季包名称 |
|
status |
tinyint |
NO |
状态 |
0=未使用,1=已使用,-1=禁用 |
created_at |
datetime |
YES |
创建时间 |
|
updated_at |
datetime |
YES |
更新时间 |
|
deleted_at |
datetime |
YES |
删除时间 |
|
五、核心计算口径汇总
5.1 订单/收入类指标
| 指标 |
计算公式 |
说明 |
| 订单数 |
COUNT(DISTINCT bi_vala_order.id) |
去重统计(需剔除测试账号) |
| GMV |
SUM(bi_vala_order.pay_amount_int) / 100 |
全部营销金额(含退费,单位元) |
| 退费金额 |
SUM(CASE WHEN r.status=3 AND o.order_status=4 THEN o.pay_amount_int ELSE 0 END) / 100 |
双条件校验退费成功 |
| GSV |
GMV - 退费金额 |
实际收入 |
| 退费率 |
退费订单数 / 总订单数 * 100% |
时间段内成交订单中发生退费的比例 |
前置条件(所有订单统计必须满足):
JOIN bi_vala_app_account a ON o.account_id = a.id AND a.status = 1(剔除测试账号)
- 退费订单需同时满足:
bi_refund_order.status = 3 AND bi_vala_order.order_status = 4
5.2 用户增长类指标
| 指标 |
计算口径 |
说明 |
| 新增注册用户 |
按 bi_vala_app_account.created_at 日期分组,WHERE status=1 AND deleted_at IS NULL |
按 download_channel 分渠道统计 |
| 新增付费用户 |
按 bi_vala_order.pay_success_date 日期分组 |
端内按 sale_channel,端外按 key_from 分渠道 |
5.3 学习行为类指标
课时维度
| 指标 |
计算公式 |
说明 |
| 课时首次完成时间 |
MIN(created_at),按 user_id + chapter_id 分组,play_status=1 |
从 bi_user_chapter_play_record 取 |
| 课时总耗时(分钟) |
SUM(interval_time) / 60000,聚合 chapter_unique_id |
从 bi_user_component_play_record 取,保留1位小数 |
| 完成人数 |
COUNT(DISTINCT user_id) WHERE play_status=1 |
|
课程巩固 (Review)
| 指标 |
计算公式 |
说明 |
| 巩固完成人数 |
COUNT(first_done_review_duration > 0) |
user_chapter_time 表 |
| 巩固平均用时(分钟) |
AVG(first_done_review_duration) / 60 |
原始单位: 秒 |
| 巩固正确率% |
AVG(first_done_review_right_rate) / 100 |
原始单位: 万分比 |
| 巩固用时(秒) |
play_time / 1000 |
源表 bi_user_unit_review_question_result |
| 巩固正确率(万分比) |
正确数 / 总题数 * 10000 |
|
单元强化 (Summary)
| 指标 |
计算公式 |
说明 |
| 强化进入人数 |
COUNT(summary_in_ts > 0) |
user_unit_time 表 |
| 强化完成人数 |
COUNT(summary_done_ts > 0) |
|
| 首次进入强化时间 |
MIN(created_at) FROM bi_user_unit_summary_km_result |
|
单元挑战 (Challenge)
| 指标 |
计算公式 |
说明 |
| 挑战参与人数 |
COUNT(challenge_in_ts > 0) |
user_unit_time 表 |
| 挑战完成人数 |
COUNT(challenge_done_ts > 0) |
|
| 四维度 Perfect/Good/Oops 率 |
各评级人数 / (P+G+O 总人数) * 100 |
从 question_list JSON 解析 |
组件维度
| 指标 |
计算公式 |
说明 |
| Oops率 |
COUNT(play_result='Oops') / COUNT(*) * 100% |
play_status=1,剔除测试账号 |
| 退出率 |
COUNT(play_status=2) / COUNT(play_status IN (1,2)) * 100% |
有效参与 = 完成 + 退出 |
| 总参与次数 |
COUNT(*) WHERE play_status IN (1,2) |
|
5.4 课程结构计算
- UnitIndex = (SeasonOfQuarter - 1) * 12 + GameInfo.Index
- ChapterIndex = UnitIndex * 5 + Chapter.Index
5.5 核心版本时间节点
- 2025-10-01: 核心版本上线时间,部分统计需区分此节点前后
六、渠道映射表
6.1 sale_channel 映射(端内渠道,仅 key_from=app-active-h5-0-0 有效)
| sale_channel 值 |
渠道名称 |
| 11 |
苹果 |
| 12 |
华为 |
| 13 |
小米 |
| 14 |
荣耀 |
| 15 |
应用宝 |
| 17 |
魅族 |
| 18 |
VIVO |
| 19 |
OPPO |
| 21 |
学而思 |
| 22 |
讯飞 |
| 23 |
步步高 |
| 24 |
作业帮 |
| 25 |
小度 |
| 26 |
希沃 |
| 27 |
京东方 |
| 41 |
官网 |
| 71 |
小程序 |
| 其他值 |
站外 |
6.2 key_from 映射(销售渠道)
| key_from 值 |
渠道名称 |
备注 |
app-active-h5-0-0 |
端内购买 |
需结合 sale_channel 细分 |
app-sales-bj-qhm-0 |
端内购买 |
需结合 sale_channel 细分 |
| 以上两者之外 |
端外购买 |
|
sales-adp* (前缀匹配) |
销售渠道购买 |
端外中的销售渠道 |
newmedia-dianpu-xhs-0-0 |
小红书店铺 |
|
newmedia-daren% (前缀匹配) |
达人直播 |
|
newmedia-dianpu-wwxx-0-0 |
万物 |
|
6.3 download_channel(下载渠道,新增用户统计)
download_channel 为汉字格式
- 匹配方式:关键字包含,如
LIKE '%学而思%'
- 支持中文渠道名模糊匹配
附录:表名索引
| 数据库 |
表名 |
说明 |
| PG vala_bi |
bi_vala_order |
订单表 |
| PG vala_bi |
bi_vala_app_account |
用户账号表 |
| PG vala_bi |
bi_vala_app_character |
角色表 |
| PG vala_bi |
bi_refund_order |
退费订单表 |
| PG vala_bi |
bi_user_course_detail |
用户课程明细表 |
| PG vala_bi |
bi_level_unit_lesson |
课程结构映射表 |
| PG vala_bi |
bi_user_chapter_play_record_0~7 |
课时播放记录(8分表) |
| PG vala_bi |
bi_user_component_play_record_0~7 |
组件播放记录(8分表) |
| PG vala_bi |
bi_user_unit_review_question_result |
巩固练习源表 |
| PG vala_bi |
bi_user_unit_summary_km_result |
强化源表 |
| PG vala_bi |
bi_user_unit_challenge_question_result |
挑战源表 |
| PG vala_bi |
bi_user_task_log |
任务日志表 |
| PG vala_bi |
bi_vala_seasonal_ticket |
季度券表(同步) |
| PG vala_bi |
account_detail_info |
账号详情表 |
| PG vala_bi |
account_login |
账号登录表 |
| PG vala_bi |
account_device |
设备表 |
| PG vala_bi |
account_activity_count |
账号活动统计表 |
| PG vala_bi |
account_paid_activity_count |
付费账号活动统计表 |
| PG vala_bi |
growth_activity_behavior |
增长活动行为表 |
| PG vala_bi |
user_behavior_buried_points |
埋点数据表 |
| PG vala_bi |
user_detail_info |
用户详情表 |
| PG vala_bi |
data_sync_config |
数据同步配置表 |
| PG vala_bi |
feishu_table_record |
飞书表格记录表 |
| PG vala_bi |
chapter_component_index |
组件索引表 |
| PG vala_bi |
chapter_config_count |
配置计数表 |
| MySQL vala |
vala_game_info |
游戏/单元信息表 |
| MySQL vala |
vala_game_chapter |
游戏关卡/课时表 |
| MySQL vala |
vala_game_season_package |
赛季包表 |
| MySQL vala |
unit_challenge_question |
挑战题目配置表 |
| MySQL vala_user |
vala_user_learn_record |
学习记录表 |
| MySQL vala_user |
vala_user_chapter_finish_record |
课时完成记录表 |
| MySQL vala_user |
vala_user_interact_log |
互动日志表 |
| MySQL vala_user |
vala_user_game_finish_record |
游戏完成记录表 |
| MySQL vala_user |
vala_user_long_term_memory |
长期记忆表 |
| MySQL vala_order |
vala_seasonal_ticket |
季度券源表 |