分流表
Assignment Table(分流表) 记录"谁在什么时候看到了哪个实验的哪个变体"。ABetterChoice 中每个运行中的实验都基于一张分流表来解析曝光、流量分配以及主指标的 join。
在控制台的位置
Data Management → Tables 列出所有已注册的表,Type 为 Assignment Table 的行就是本页面描述的对象。点击行可进入表的详情页。

表单字段
打开 New Table(或已有分流表的详情页)。当 Table Type 为 Assignment Table 时,表单需要填写:
| 字段 | 说明 |
|---|---|
Data Warehouse | 当前固定为 BigQuery。 |
DataSet ID | 源表所在的 BigQuery 数据集。 |
Table ID | 要注册的 BigQuery 表,下拉受 DataSet ID 过滤。 |
Name | 在 ABetterChoice 中的展示名,默认与 Table ID 一致。 |
Owner | 默认为当前用户且不可清空。可按需追加其他 owner。 |
Description (Optional) | 自由文本。 |
User ID Field | ABetterChoice 用作实验主体的列。它必须与您事实表、用户属性表中对应列保持一致,否则 join 不上。 |
Experiment Field | 把一次曝光绑定到某个实验的列(例如 exp_group_id)。 |
Partition Field | ABetterChoice 用来按天扫描曝光数据的列。 |
Partition Field Type | Date、Timestamp、Datetime 三选一,与列在仓库中实际存储时间的形式保持一致。 |
Event Time Field (Optional) | 当事件时间与分区列不同时,填写一个独立的事件时间列。 |
必填字段填写完成后,下方的 Schema 面板会渲染 BigQuery 列与检测到的类型。中途上游列有变更可点击 Refresh 重读。
Partition Field Type 的三种取值
ABetterChoice 支持三种分流表分区方式:
Date—— 列存储日历日(如 BigQueryDATE)。Timestamp—— 列存储精确瞬时时间(如 BigQueryTIMESTAMP)。Datetime—— 列存储不带时区的日期时间(如 BigQueryDATETIME,或形如YYYY-MM-DD HH:MM:SS的STRING)。
请按列在 BigQuery 中实际存储时间的形式选择。ABetterChoice 据此向 BigQuery 写出高效的分区裁剪谓词。
真实分流表的样子
Demo 项目 6666 注册的分流表是 abc_exp_exposure_date_partition,配置为:
User ID Field=user_idExperiment Field=exp_group_idPartition Field=ds,Partition Field Type=Date
它的 schema 短而明确 —— 这正是一张曝光日志应有的形态:
| 字段 | 类型 | 角色 |
|---|---|---|
ds | date | 映射到 Partition Field,Partition Field Type 为 Date。 |
user_id | string | 映射到 User ID Field。 |
exp_group_id | string | 映射到 Experiment Field,把一次曝光绑定到某个实验的某个分组。 |
exposure_time | string | 需要事件级精度时可作为 Event Time Field。 |
您不需要照抄这些列名 —— 关键的是表单中映射的角色绑定。列名是惯例,角色绑定是契约。
编辑与归档
详情页以只读为主:大部分字段会展示当前值,只有真正改动后 Update 按钮才会启用。唯一的破坏性操作是列表页 Actions 列里的 Archive,归档对依赖实验的影响详见 表生命周期。