本文へ移動
Telemetry
製品分析 SQL レシピ

テストのコンバージョンと収益増加の比較

繰り返されるイベントを二重にカウントすることなく、コンバージョン、参加者あたりの収益、実験バリアントごとの相対的な上昇率を測定します。

上級者向けexperiment_eventsレビュー済み 2026-07-28テスト済み アパッチ DataFusion 45.2.0

レビュー者 Telemetry 製品チーム . SQL構文、必要なイベント項目、サンプル結果、クエリの利用上の制限を確認しました. このページのレビュー担当

質問に回答しました

この実験により、割り当てられた参加者あたりのコンバージョンと収益は向上しましたか?

実験結果には、参加者ごとに 1 つの割り当て、固定の結果ウィンドウ、およびコンバージョンと価値の両方が必要です。このパターンでは、各バリアントをコントロールと比較する前に、繰り返されるイベントを参加者レベルのレコードにまとめます。

イベントスキーマ

クエリが期待するフィールド

フィールド種類なぜ存在するのか
timestamp_utcTimestampUTC での割り当てまたは結果イベント時間。
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 は、割り当てられた参加者ごとに 1 つの結果レコードを作成し、繰り返しの購入や追跡イベントによって分母が大きくなるのを防ぎます。
  2. 2バリアントサマリーは参加者のボリューム、コンバージョン、収益を維持するため、商業的価値がなければコンバージョン率が高くても評価されません。
  3. 3最後の結合では、すべてのバリアントを対照率と比較し、パーセントポイントではなく相対的な上昇率をレポートします。

確認するエッジケース

  • 複数の変異にさらされた参加者を除外するか、文書化された治療意図ルールに従って参加者を割り当てます。
  • 各参加者の観察期間がすべて終了してから、未コンバージョンとして数えます。
  • 勝者を宣言する前に、信頼区間または事前に合意された統計検定を計算します。

推奨されるダッシュボード

  • バー: conversion_rate_pct (バリエーション別)
  • 表: 参加者、参加者あたりの収益、および相対的な上昇率
  • 推移: 各観察期間の終了後に、割り当て週別のコホート転換率を表示

アラートガイダンス

通常の実験のバリエーションについてページを表示しないでください。割り当てバランス、イベント配信、またはガードレール メトリックが壊れた場合にのみアラートを発します。

アラート設定を読む

このクエリに必要なイベントを設定する

関連する機器とガイド

分析を続ける

自分のイベントで実行する

テーブルを作成し、フィールドを調整して、結果を保存します

無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。

API キーを取得する