使用 BigQuery 檢查 A/B 測試資料

除了在 A/B Testing 控制台中查看實驗資料,您也可以在 Firebase 中檢查及分析實驗資料。BigQuery雖然 A/B Testing 沒有個別的 BigQuery 表格,但實驗和變數成員資格會儲存在 Analytics 事件表格中的每個 Google Analytics 事件。

含有實驗資訊的使用者屬性格式為 userProperty.key like "firebase_exp_%"userProperty.key = "firebase_exp_01",其中 01 是實驗 ID,而 userProperty.value.string_value 則包含實驗變數的 (以零為基準) 索引。

您可以使用這些實驗使用者屬性擷取實驗資料。 您可以透過多種不同方式分析實驗結果,並獨立驗證 A/B Testing 的結果。

如要開始使用,請按照本指南所述完成下列步驟:

  1. 在 Firebase 控制台中啟用 BigQuery 匯出功能Google Analytics
  2. 使用 BigQuery 存取 A/B Testing 資料
  3. 探索查詢範例

在 Firebase 控制台中啟用 BigQuery 匯出功能 (適用於 Google Analytics)

如果採用 Spark 方案,您可以使用BigQuery沙箱免費存取 BigQuery,但須遵守沙箱限制。詳情請參閱「定價和 BigQuery 沙箱」。

首先,請確認您要將 Analytics 資料匯出至 BigQuery

  1. 開啟「整合」分頁標籤,方法是在 Firebase 控制台中依序點選 >「專案設定」
  2. 如果您已將 BigQuery 與其他 Firebase 服務搭配使用,請按一下「管理」。否則請按一下「連結」
  3. 查看「關於將 Firebase 連結至 BigQuery,然後按一下「下一步」
  4. 在「設定整合」部分,啟用 Google Analytics 切換鈕。
  5. 選取區域並選擇匯出設定。

  6. 按一下「連結至『BigQuery』」

視您選擇的資料匯出方式而定,表格最多可能需要一天才能提供。如要進一步瞭解如何將專案資料匯出至 BigQuery,請參閱「將專案資料匯出至 BigQuery」。

BigQuery 中存取 A/B Testing 資料

查詢特定實驗的資料前,請先取得下列部分或全部資訊,以供查詢使用:

  • 實驗 ID:您可以從「實驗總覽」頁面的網址取得這個 ID。舉例來說,如果網址看起來像這樣: https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25, 則實驗 ID 為 25
  • Google Analytics 房源 ID:這是 9 位數的Google Analytics房源 ID。您可以在 Google Analytics 中找到這個 ID;展開專案名稱以顯示 Google Analytics 事件資料表名稱 (project_name.analytics_000000000.events) 時,這個 ID 也會顯示在 BigQuery 中。
  • 實驗日期:為加快查詢速度並提高效率,建議您將查詢限制在包含實驗資料的Google Analytics每日Google Analytics事件資料表分區 (以 YYYYMMDD 字尾識別的資料表)。舉例來說,如果實驗期間為 2024 年 2 月 2 日至 2024 年 5 月 2 日,您應指定 _TABLE_SUFFIX between '20240202' AND '20240502'。如需範例,請參閱「選取特定實驗的值」。
  • 事件名稱:通常會對應到您在實驗中設定的目標指標。例如 in_app_purchase 活動、ad_impressionuser_retention 活動。

收集完產生查詢所需的資訊後,請按照下列步驟操作:

  1. Google Cloud 控制台中開啟 BigQuery
  2. 選取專案,然後選取「建立 SQL 查詢」
  3. 新增查詢。如要執行範例查詢,請參閱「探索範例查詢」。
  4. 按一下「執行」

使用 Firebase 控制台自動產生的查詢,查詢實驗資料

如果您使用 Blaze 方案,「實驗總覽」頁面會提供範例查詢,傳回您正在查看的實驗名稱、變數、事件名稱和事件數量。

如要取得並執行自動產生的查詢,請按照下列步驟操作:

  1. Firebase 控制台中,開啟 A/B Testing 並選取要查詢的 A/B Testing 實驗,開啟「實驗總覽」
  2. 在「選項」選單的「BigQuery 整合」下方,選取「查詢實驗資料」。這會在 BigQuery Google Cloud 控制台中開啟專案,並提供基本查詢,可用於查詢實驗資料。

以下範例顯示為名為「Winter welcome experiment」的實驗產生的查詢,該實驗有三個變化版本 (包括基準)。這項查詢會傳回每個事件的有效實驗名稱、變體名稱、專屬事件和事件計數。請注意,查詢產生器不會在資料表名稱中指定專案名稱,因為查詢產生器會直接在專案中開啟。

  /*
    This query is auto-generated by Firebase A/B Testing for your
    experiment "Winter welcome experiment".
    It demonstrates how you can get event counts for all Analytics
    events logged by each variant of this experiment's population.
  */
  SELECT
    'Winter welcome experiment' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'Welcome message (1)'
      WHEN '2' THEN 'Welcome message (2)'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_000000000.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN '20240202' AND '20240502')
    AND userProperty.key = 'firebase_exp_25'
  GROUP BY
    experimentVariant, eventName

如需其他查詢範例,請參閱「探索查詢範例」。

查看查詢範例

下列各節提供查詢範例,可用於從 Google Analytics 事件資料表擷取 A/B Testing 實驗資料。

從所有實驗中擷取購買和實驗標準差值

您可以根據實驗結果資料,獨立驗證Firebase A/B Testing結果。下列 BigQuery SQL 陳述式會擷取實驗變體、各變體中的不重複使用者人數,以及 in_app_purchaseecommerce_purchase 事件的總收益,並計算指定時間範圍內所有實驗的標準差,該時間範圍由 _TABLE_SUFFIX 開始和結束日期指定。您可以搭配單尾 t 檢定的統計顯著性產生器,使用從這項查詢取得的資料,驗證 Firebase 提供的結果是否符合您自己的分析。

如要進一步瞭解 A/B Testing 如何計算推論結果,請參閱「解讀測試結果」。

  /*
    This query returns all experiment variants, number of unique users,
    the average USD spent per user, and the standard deviation for all
    experiments within the date range specified for _TABLE_SUFFIX.
  */
  SELECT
    experimentNumber,
    experimentVariant,
    COUNT(*) AS unique_users,
    AVG(usd_value) AS usd_value_per_user,
    STDDEV(usd_value) AS std_dev
  FROM
    (
      SELECT
        userProperty.key AS experimentNumber,
        userProperty.value.string_value AS experimentVariant,
        user_pseudo_id,
        SUM(
          CASE
            WHEN event_name IN ('in_app_purchase', 'ecommerce_purchase')
              THEN event_value_in_usd
            ELSE 0
            END) AS usd_value
      FROM `PROJECT_NAME.analytics_ANALYTICS_ID.events_*`
      CROSS JOIN UNNEST(user_properties) AS userProperty
      WHERE
        userProperty.key LIKE 'firebase_exp_%'
        AND event_name IN ('in_app_purchase', 'ecommerce_purchase')
        AND (_TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYMMDD')
      GROUP BY 1, 2, 3
    )
  GROUP BY 1, 2
  ORDER BY 1, 2;

選取特定實驗的值

以下查詢範例說明如何在 BigQuery 中取得特定實驗的資料。這項範例查詢會傳回實驗名稱、變數名稱 (包括基準)、事件名稱和事件計數。

  SELECT
    'EXPERIMENT_NAME' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'VARIANT_1_NAME'
      WHEN '2' THEN 'VARIANT_2_NAME'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_ANALYTICS_PROPERTY.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN 'YYYMMDD' AND 'YYYMMDD')
    AND userProperty.key = 'firebase_exp_EXPERIMENT_NUMBER'
  GROUP BY
    experimentVariant, eventName