SuperAPI AI 工具集

data-warehouse-experimentation

数据与分析

查看项目

更新于 10-15 15:17

技能介绍

仓库原生实验(Warehouse-Native Experimentation)是一套面向资深数据科学家的操作手册,用于直接在 BigQuery、Snowflake 或任何现代数据仓库中原生运行实验,指标定义放在 dbt 中,统计分析用 SQL 或 Python 完成。

用途与定位

多数规模化运行实验的公司使用专用平台(Statsig、Optimizely、LaunchDarkly with experimentation、PostHog、Amplitude Experiment)。这些平台把分配、埋点与分析集成在一个产品中。另一种运营模式是仓库原生实验:分配在代码中或通过功能开关完成,曝光事件像其他事件一样写入仓库,指标定义为 dbt 模型,统计分析以 SQL 或 Python 笔记本针对仓库数据运行,所谓的“实验平台”就是现有的数据栈。

该技能关注操作执行层:基于 SQL 的分配、曝光日志、dbt 中的指标定义、SQL 或 Python 统计分析、方差缩减、序贯检验。它与方法论技能互补而不替代:experiment-design 覆盖假设、样本量、随机化单位、主要指标等方法论(与工具无关,应先读);experimentation-analytics 覆盖置信区间、p 值、效应量、决策框架等结果解读;experimentation-platform-orchestrator 详细覆盖平台与仓库的决策;feature-flagging 覆盖不通过平台运行时的分配基础设施。当已决定采用仓库原生方案后,再阅读本技能;若仍在决策阶段,应先看 experimentation-platform-orchestrator。

适用场景:在平台与仓库原生之间做决策、搭建仓库原生实验基础设施、审计已有体系,或在记录平台无法处理自定义指标或分群时运行特定实验。

何时适合仓库原生

六个因素倾向仓库原生:规模成本(平台按 MAU 或事件计费,百万级 MAU 时费用成为真实预算项,仓库原生运行在已付费的基础设施上);自定义指标(收入含退款逻辑、队列 LTV、留存区间、多事件组合等复杂业务指标在平台上可能吃力,SQL 可表达任意指标);自定义分群(企业客户、账户层级交叉、复杂行为分群,dbt 模型可无限组合);信任要求(医疗、金融、政府等受监管行业需要完整透明的计算过程,仓库原生每一步都可在 SQL 中审计);现有数据团队实力(已有数据工程师和数据科学家时,在之上叠加实验规范的成本低于采用新平台);指标定义迭代(仓库原生的迭代速度等同 dbt 部署速度)。

五个因素倾向平台:前端可视化实验(Optimizely 的强项,脚本标签注入变体代码并支持所见即所得编辑);周级别以下的迭代速度(部分平台 30 分钟可搭好实验,仓库原生首次运行新模式常需一天以上);缺乏强数据基础设施的团队(没有仓库、dbt 和分析师就不要从仓库原生开始);移动端实验(基于 SDK 且支持离线的分配属于平台职责);开箱即用且带严格保证的序贯检验(Statsig 和 Eppo 提供带校准 alpha 消耗的 mSPRT,自建工作量很大)。许多成熟团队两者并用:仓库原生处理困难场景,平台处理标准实验的快速迭代。

架构

四个组件按数据流顺序:分配(用户如何被分桶,通过哈希函数、功能开关或随机分配表);曝光日志(用户首次暴露于实验时触发的离散事件,像其他事件一样写入仓库);指标定义(从仓库事件计算主要与次要指标的 SQL 查询或 dbt 模型);分析(在 SQL 或 Python 中把曝光与指标连接,产出带置信区间的效应估计)。

流程:用户访问产品,分配决定分桶(对照组或实验组),若用户暴露于变体行为,则向仓库发送曝光事件;用户行为产生指标事件进入同一仓库;分析时曝光按分配单位(通常是 user_id)与指标连接,计算提升并给出决策。曝光事件模式至关重要:没有它只能做“意向治疗”分析(所有被分配者,不论是否看到变体);有它才能做“已暴露”分析。后者通常是所需,尤其当变体只影响被分配用户的一个子集(例如到达特定页面的用户)时。

分配模式

三种方式。确定性哈希分配是仓库原生的默认方式,例如 MOD(ABS(FARM_FINGERPRINT(CONCAT(user_id, 'exp_button_color_v1'))), 100) < 50;盐值确保不同实验对同一用户产生不相关分配,可复现、无服务依赖、跨实验盐隔离,可在任意 SQL 查询中内联计算。功能开关分配依赖功能开关服务(LaunchDarkly、Statsig flags、Unleash 或内部)做分桶,仓库只记录开关服务选择的分配,适用于分配必须遵守百分比放量、定向规则等不便在 SQL 中复制的规则。随机分配表在实验开始时预先随机化用户入表,较少见,适用于资格集合在实验开始时固定且希望分配确定、显式(如合规审计),缺点是实验中途加入的新用户不在表中。

曝光日志

仓库原生实验中最重要的纪律。必需字段包括 experiment_id(字符串,每个实验的唯一标识)、variant_id(字符串,用户被分入的变体)、user_id(字符串,分配单位)、exposed_at(时间戳,ISO 8601 UTC,曝光触发时刻),以及可选的 context_* 上下文属性(设备、页面、account_id 等)。

曝光必须恰好在该用户看到变体特定行为时触发,不是在页面加载、会话开始或应用打开时。延迟曝光陷阱:若变体只在按钮点击时起作用却在页面加载时触发曝光,所有页面加载用户都会进入分析,对照与实验组都包含从未到达按钮的用户,分析会稀释真实效应。示例:实验组展示新定价页、对照组展示旧页,应在定价页加载时触发曝光,而不是用户落地首页时。重复触发陷阱:有些实现每次变体特定交互都触发曝光,用户点击五次就产生五条曝光记录,按 distinct user_id 计数的分析工具能正确处理,按行计数的则不能。纪律是每个用户每个实验仅触发一次曝光,在首次变体特定暴露时刻触发,用客户端确定性标记或服务端缓存强制单次触发。

在 dbt 模型中定义指标

以 dbt 模型定义指标带来四点:指标定义的版本控制(每次改动都是 git 提交,历史可查);可测试性(对指标输出做 dbt 测试可捕获回归);可组合性(同一个 fct_orders 模型同时供给看板、实验分析和高管报告,定义对齐、无漂移);单一事实来源(实验与看板数字不一致时,答案在 dbt 模型中)。典型模式是按 user_id 分组、每用户一行的 exp_metrics_* 模型,底层事实表用 fct_*,同时供给指标模型和看板。方差纪律要求同一指标定义同时用于看板与实验分析,否则会出现“实验说收入提升但看板没动”,这几乎总是指标定义不一致导致。

SQL 中的统计分析

基础双样本 Welch t 检验可在 SQL 中完成:按变体聚合出 n、均值、方差,再计算绝对提升、相对提升与 Welch t 统计量 (treatment.mean - control.mean) / SQRT(treatment.variance / treatment.n + control.variance / control.n)。t 统计量通过 SQL 函数(BigQuery 用 UDF,Snowflake 用原生函数或存储过程)转换为 p 值或置信区间,也可把 SQL 结果交给 Python 计算。SQL 模式适用于连续指标的简单 t 检验;比例检验把方差换成 p * (1 - p);非参数检验(如 Mann-Whitney)在 SQL 中会很快变得难看,应改用 Python。比简单 t 检验更复杂的(CUPED、bootstrap、双重稳健估计、序贯检验)在 Python 中更容易实现:SQL 负责 SUM 和 AVG 聚合,统计数学交给 Python。

Python 中的统计分析

通常在 Jupyter 或 Hex 笔记本中进行,使用 pandas、numpy、scipy。从仓库拉取聚合数据后,可用 stats.ttest_ind(treatment, control, equal_var=False) 做 Welch t 检验,并计算均值差的置信区间(diff ± 1.96 * se)。Python 提供完整统计生态(scipy、statsmodels、numpy)以支持 SQL 难以表达的技术。笔记本模式为每个实验一个按 experiment_id 参数化的笔记本,纳入 git 或 Hex 项目版本控制,末尾产出一份书面决策文档,归档到可查询的仓库(Notion、GitHub markdown 或仓库中的专用实验结果表)。

方差缩减:CUPED 及其他

CUPED(Controlled-experiment Using Pre-Experiment Data,源自微软)是仓库原生实验最强大的方差缩减技术。直觉是:若能从事前数据预测用户的指标行为,就能减掉这部分预测方差,留下更小的残差来检验。做法是先取每用户的事前指标(如过去 28 天收入),theta 为指标对事前期的回归系数 np.cov(metric, pre)[0, 1] / np.var(pre),调整后指标为 metric - theta * (pre - pre.mean()),再对调整后指标做 t 检验;均值保持不变(CUPED 不改变点估计),但方差更小、置信区间更窄。CUPED 在参与度指标上通常可减少 30% 到 50% 的方差,相当于为达到相同统计功效把实验多跑 1.5 到 2 倍时长,对每季度运行 5 个以上实验的团队值得投入。其他方差缩减技术包括分层(按事前协变量如分群、地区、设备切分分析并汇总各层估计),适用于协变量对指标有强预测力时。

限制

官方资料未提供本技能的具体安装命令、支持平台版本、收费方式或价格信息,相关内容暂未提供。分类依据其数据仓库实验执行与统计分析的明确用途归入数据与分析。