事件结构
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 作业或结果事件时间(UTC)。 |
| experiment_name | Utf8 | 稳定的实验标识符。 |
| variant | Utf8 | 控制或指定治疗。 |
| user_id | Utf8 | 稳定的参与者标识符。 |
| event_name | Utf8 | experiment_assigned 或 purchase_completed。 |
| revenue_usd | Float64 | 完成购买后的标准化收入。 |
DataFusion SQL
复制查询
sql
WITH participant_outcomes AS (
SELECT
experiment_name,
variant,
user_id,
MAX(CASE WHEN event_name = 'experiment_assigned' THEN 1 ELSE 0 END)
AS was_assigned,
MAX(CASE WHEN event_name = 'purchase_completed' THEN 1 ELSE 0 END)
AS converted,
SUM(CASE
WHEN event_name = 'purchase_completed' THEN revenue_usd
ELSE 0.0
END) AS revenue_usd
FROM experiment_events
WHERE timestamp_utc >= now() - INTERVAL '60 days'
GROUP BY experiment_name, variant, user_id
),
variant_summary AS (
SELECT
experiment_name,
variant,
COUNT(*) AS participants,
SUM(converted) AS converted_participants,
100.0 * SUM(converted) / NULLIF(COUNT(*), 0) AS conversion_rate_pct,
SUM(revenue_usd) / NULLIF(COUNT(*), 0) AS revenue_per_participant_usd
FROM participant_outcomes
WHERE was_assigned = 1
GROUP BY experiment_name, variant
),
control AS (
SELECT
experiment_name,
conversion_rate_pct AS control_conversion_rate_pct
FROM variant_summary
WHERE variant = 'control'
)
SELECT
summary.experiment_name,
summary.variant,
summary.participants,
summary.converted_participants,
summary.conversion_rate_pct,
summary.revenue_per_participant_usd,
100.0 * (
summary.conversion_rate_pct - control.control_conversion_rate_pct
) / NULLIF(control.control_conversion_rate_pct, 0) AS relative_lift_pct
FROM variant_summary AS summary
JOIN control
ON control.experiment_name = summary.experiment_name
ORDER BY summary.experiment_name, summary.variant;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
不同实验变体的转化提升
该治疗具有更高的观察到的每位参与者的转化率和收入;统计不确定性在推出前仍需要审查。
control
12.99%
comparison 0%
proof_near_cta
14.91%
comparison 14.78%
| experiment_name | variant | participants | converted_participants | conversion_rate_pct | revenue_per_participant_usd | relative_lift_pct |
|---|---|---|---|---|---|---|
| annual_plan_checkout | control | 2,140 | 278 | 12.99 | 18.42 | 0 |
| annual_plan_checkout | proof_near_cta | 2,187 | 326 | 14.91 | 21.76 | 14.78 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1第一个 CTE 为每个指定的参与者创建一个结果记录,防止重复购买或跟踪事件导致分母膨胀。
- 2变体摘要保留参与者数量、转化率和收入,因此在没有商业价值的情况下不会评估更高的转化率。
- 3最终的连接将每个变体与控制率进行比较,并报告相对而不是百分点的提升。
需要检查的边界情况
- 排除暴露于多种变体的参与者或根据记录的意向治疗规则分配他们。
- 等每位参与者的完整观察期结束后,再将其计为未转化。
- 在宣布获胜者之前计算置信区间或预先商定的统计测试。
推荐仪表板
- 条形:conversion_rate_pct(按型号)
- 表:参与者、每个参与者的收入以及相对提升
- 趋势:每个观察期结束后,按分配周统计群组转化率
设置此查询需要的事件
相关埋点和指南
继续分析
在你的事件上运行
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。