除了在 Firebase 控制台中查看 A/B 測試實驗數據之外,您還可以在 BigQuery 中檢查和分析實驗數據。雖然 A/B 測試沒有單獨的 BigQuery 表,但實驗和變體成員資格儲存在 Analytics 事件表中的每個 Google Analytics 事件中。
包含實驗資訊的使用者屬性的形式為userProperty.key like "firebase_exp_%"
或userProperty.key = "firebase_exp_01"
,其中01
是實驗 ID, userProperty.value.string_value
包含實驗的(從零開始的)索引實驗變體。
您可以使用這些實驗使用者屬性來提取實驗數據。這使您能夠以多種不同的方式分割實驗結果並獨立驗證 A/B 測試的結果。
首先,請按照本指南中的說明完成以下操作:
在 Firebase 控制台中為 Google Analytics 啟用 BigQuery 匯出
如果您使用 Spark 套餐,則可以使用BigQuery 沙盒免費存取 BigQuery,但須遵守沙盒限制。有關更多信息,請參閱定價和 BigQuery 沙盒。
首先,確保您將 Analytics 資料匯出至 BigQuery:
- 開啟「整合」標籤,您可以使用Firebase 控制台中的 > 「專案設定」來存取該標籤。
- 如果您已將 BigQuery 與其他 Firebase 服務結合使用,請點選管理。否則,請按一下“連結” 。
- 查看關於將 Firebase 連結到 BigQuery ,然後按一下下一步。
- 在設定整合部分中,啟用Google Analytics開關。
選擇一個區域並選擇匯出設定。
點擊連結到 BigQuery 。
根據您選擇匯出資料的方式,表格可能最多需要一天的時間才能可用。有關將項目資料匯出到 BigQuery 的更多信息,請參閱將項目資料匯出到 BigQuery 。
在 BigQuery 中存取 A/B 測試數據
在查詢特定實驗的資料之前,您需要取得以下部分或全部資訊以在查詢中使用:
- 實驗 ID:您可以從實驗概述頁面的 URL 取得該 ID。例如,如果您的 URL 類似
https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25
,則實驗 ID 為25 。 - Google Analytics 媒體資源 ID :這是您的 9 位數 Google Analytics 媒體資源 ID。您可以在 Google Analytics 中找到此資訊;當您展開專案名稱以顯示 Google Analytics 事件表的名稱 (
project_name.analytics_000000000.events
) 時,它也會出現在 BigQuery 中。 - 實驗日期:要編寫更快、更有效率的查詢,最好將查詢限制為包含實驗資料的 Google Analytics(分析)每日事件表分區(以
YYYYMMDD
後綴標識的表)。因此,如果您的實驗從 2024 年 2 月 2 日運行到 2024 年 5 月 2 日,您需要_TABLE_SUFFIX between '20240202' AND '20240502'
。有關範例,請參閱選擇特定實驗的值。 - 事件名稱:通常,這些名稱與您在實驗中配置的目標指標相對應。例如,
in_app_purchase
事件、ad_impression
或user_retention
事件。
收集產生查詢所需的資訊後:
使用 Firebase 控制台自動產生的查詢查詢實驗數據
如果您使用的是 Blaze 計劃,實驗概述頁面將提供一個範例查詢,該查詢會傳回您正在查看的實驗的實驗名稱、變體、事件名稱和事件數。
要取得並執行自動產生的查詢:
- 在 Firebase 控制台中,開啟A/B 測試並選擇要查詢的 A/B 測試實驗以開啟實驗概述。
- 從「選項」功能表中的「BigQuery 整合」下方,選擇「查詢實驗資料」 。這將在 Google Cloud 控制台中的 BigQuery 中開啟您的項目,並提供可用於查詢實驗資料的基本查詢。
以下範例顯示了針對名為「Winterwelcomeexperiment」的具有三個變體(包括基準)的實驗所產生的查詢。它會傳回活動實驗名稱、變體名稱、唯一事件以及每個事件的事件計數。請注意,查詢產生器不會在表格名稱中指定您的專案名稱,因為它直接在您的專案中開啟。
/*
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 測試實驗資料的查詢範例。
從所有實驗中提取購買和實驗標準差值
您可以使用實驗結果資料來獨立驗證 Firebase A/B 測試結果。以下 BigQuery SQL 語句提取實驗變體、每個變體中的唯一使用者數、 in_app_purchase
和ecommerce_purchase
事件的總收入以及_TABLE_SUFFIX
開始日期和結束日期指定的時間範圍內所有實驗的標準差。您可以將從該查詢中獲得的資料與統計顯著性產生器結合使用進行單尾 t 檢驗,以驗證 Firebase 提供的結果是否與您自己的分析相符。
有關 A/B 測試如何計算推理的更多信息,請參閱解釋測試結果。
/*
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