跳转到内容
Telemetry
产品分析 SQL查询示例

比较实验转化和收入提升

通过实验变量衡量转化率、每个参与者的收入以及相对提升,而无需重复计算重复事件。

高级experiment_events已审核 2026-07-28测试用 阿帕奇 DataFusion 45.2.0

审阅者 Telemetry产品团队 . 我们检查了 SQL 语法、必需的事件字段、示例结果和查询使用限制. 谁负责审核此页面

问题已回答

实验是否提高了每个指定参与者的转化率和收入?

实验结果需要每个参与者进行一项作业、固定的结果窗口以及转化率和价值。在将每个变体与对照进行比较之前,该模式将重复事件折叠到参与者级别的记录中。

事件结构

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp作业或结果事件时间(UTC)。
experiment_nameUtf8稳定的实验标识符。
variantUtf8控制或指定治疗。
user_idUtf8稳定的参与者标识符。
event_nameUtf8experiment_assigned 或 purchase_completed。
revenue_usdFloat64完成购买后的标准化收入。
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。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。

查询结果

不同实验变体的转化提升

该治疗具有更高的观察到的每位参与者的转化率和收入;统计不确定性在推出前仍需要审查。

experiment_namevariantparticipantsconverted_participantsconversion_rate_pctrevenue_per_participant_usdrelative_lift_pct
annual_plan_checkoutcontrol2,14027812.9918.420
annual_plan_checkoutproof_near_cta2,18732614.9121.7614.78

综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。

Conversion lift by experiment variant:来自 Compare experiment conversion and revenue lift 示例结果的合成 conversion_rate_pct 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载示例数据

JSON 包包含类型化事件契约, illustrative 输入行、确切的 SQL、预期输出、审阅注释和引擎版本。 CSV 包含显示的结果。

SQL 是如何工作的

  1. 1第一个 CTE 为每个指定的参与者创建一个结果记录,防止重复购买或跟踪事件导致分母膨胀。
  2. 2变体摘要保留参与者数量、转化率和收入,因此在没有商业价值的情况下不会评估更高的转化率。
  3. 3最终的连接将每个变体与控制率进行比较,并报告相对而不是百分点的提升。

需要检查的边界情况

  • 排除暴露于多种变体的参与者或根据记录的意向治疗规则分配他们。
  • 等每位参与者的完整观察期结束后,再将其计为未转化。
  • 在宣布获胜者之前计算置信区间或预先商定的统计测试。

推荐仪表板

  • 条形:conversion_rate_pct(按型号)
  • 表:参与者、每个参与者的收入以及相对提升
  • 趋势:每个观察期结束后,按分配周统计群组转化率

警报指导

不要寻呼正常的实验变化;仅当分配平衡、事件传递或护栏指标中断时发出警报。

读取警报设置

设置此查询需要的事件

相关埋点和指南

继续分析

在你的事件上运行

创建表,调整字段并保存结果

免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。

获取 API 密钥