使用 Firebase Remote Config 為有活躍使用者的應用程式部署設定時,請務必確保設定正確無誤。您可以透過 A/B Testing 實驗,判斷下列事項:
- 實作功能以改善使用者體驗的最佳方式。應用程式開發人員通常要等到應用程式商店的評分下降,才會發現使用者不喜歡新功能或更新後的使用者體驗。A/B Testing,有助於評估使用者是否喜歡新版功能,或是否偏好現有應用程式。此外,將大多數使用者保留在基準群組中,可確保大多數使用者在實驗結束前,都能繼續使用應用程式,且不會遇到任何行為或外觀變化。
- 針對業務目標最佳化使用者體驗的最佳方式。 有時您會實作產品變更,盡可能提高收益或留存率等指標。使用 A/B Testing 設定業務目標後,Firebase 會執行統計分析,判斷變化版本是否在所選目標的成效上優於基準組。
如要使用基準進行功能變體 A/B 測試,請按照下列步驟操作:
- 建立實驗。
- 管理實驗。
建立實驗
Remote Config 實驗可讓您評估一或多個Remote Config參數的多個變體。
確認專案已啟用 Google Analytics,實驗才能存取 Analytics 資料。
如果在建立專案時未啟用 Google Analytics,您可以在 Firebase 控制台的「
設定 」>「整合分頁標籤」中啟用。在 Firebase 控制台中,依序前往「DevOps & Engagement」(DevOps 與參與度) > A/B Testing
按一下「建立實驗」,然後在系統提示時選取要實驗的服務 Remote Config。
在「變體」部分,為實驗選擇基準和至少一個變體。您可以新增一或多個參數進行實驗。您可以重複這個步驟,在實驗中加入多個參數。
(選用) 如要為實驗新增多個變化版本,請按一下「新增其他版本」。
變更特定變體的其中一或多個參數。未納入實驗的使用者,其未變更的參數皆相同。
展開「變化版本權重」,即可查看或變更實驗的變化版本權重。根據預設,每個版本的權重均等。請注意,如果權重不均等,可能會導致資料收集時間加長。此外,實驗開始之後即不可再變更權重。
使用Remote Config條件,為實驗定義指定目標條件:
重複使用現有條件:如果Remote Config範本中的現有條件已符合目標對象,請從清單中選取該條件。
確認條件評估順序:請確認「條件」頁面上的條件已依正確的優先順序排列。因為 Remote Config 會依序從上到下評估條件,其他優先順序較高的條件可能會導致足夠的使用者無法達到與實驗相關聯的條件。
建立新條件:如果現有條件都不符合指定目標需求,或是您想複製現有條件 (例如不想使用其他參數已使用的條件),請先選擇使用實驗的應用程式,然後建立新條件。如果您為實驗建立個別或重複的條件,請確保新條件的優先順序高於現有條件;否則,使用者會先符合現有條件,而不會進入實驗。
然後按一下「和」,從下列清單中選取一或多個選項,指定特定使用者子集:
- 版本:您應用程式的一或多個版本
- 版本號碼:應用程式的版本號碼 (Apple) 或版本代碼 (Android)
- 平台:要指定的一或多個平台 (iOS、Android 或網站)
- 作業系統:根據網頁應用程式使用者的作業系統和版本指定目標
- 瀏覽器:根據網路瀏覽器和瀏覽器版本,指定網頁應用程式使用者
- 裝置類別:根據使用者裝置是否為行動裝置,指定網頁應用程式使用者
- 語言:一或多種語言和地區,用於選取可能納入實驗的使用者
- 國家/地區:一或多個國家/地區,用於選取應納入實驗的使用者
- 使用者目標對象:用於指定可能納入實驗的使用者Analytics目標對象
- 使用者屬性:一或多個Analytics使用者屬性,用於選取可能納入實驗的使用者
- 隨機百分比中的使用者:在定義的百分位數範圍內,隨機選取特定比例的使用者
- 已匯入區隔:指定屬於上傳至專案的自訂匯入區隔的使用者
- 日期/時間:根據指定日期和時間範圍指定使用者
- 初次開啟:根據使用者第一次開啟應用程式的時間指定目標使用者
- 安裝 ID:使用 Firebase 安裝 ID (FID),指定特定測試裝置或用戶端執行個體
- 使用者存在:指定專案中所有應用程式的所有使用者
- 自訂信號:根據執行階段傳遞的自訂用戶端鍵/值信號,指定目標使用者
設定「曝光」:輸入應用程式使用者族群中,符合「目標使用者」下方所設條件的人數百分比,並平均分配給實驗中的基準和一或多個變化版本。這個值可以是介於 0% 到 100% 之間的任何百分比。系統會隨機將使用者指派至每個實驗,包括重複的實驗。
您也可以設定啟用事件,確保實驗只會計入已觸發特定 Analytics 事件的使用者資料。請注意,所有符合指定目標參數的使用者都會收到Remote Config實驗值,但只有觸發啟用事件的使用者才會納入實驗結果。
為確保實驗有效,請確認所選事件發生在應用程式啟用擷取的設定值「之後」。此外,下列事件一律會在擷取值啟用前發生,因此無法使用:
app_installapp_removeapp_update
您選取的Analytics事件做為啟用事件時,不得在同一項實驗中做為主要指標 (或額外指標)。這麼做會在 Firebase 控制台中觸發驗證錯誤,導致實驗無法啟動。
在實驗的「目標」中,選取要追蹤的主要指標,然後從清單中新增要追蹤的其他指標。包括內建目標 (購買、收益、留存率、無當機使用者等)、Analytics轉換事件和其他Analytics事件。完成後,點選「下一步」。
按一下「儲存」即可儲存實驗。您必須發布範本,才能開始執行實驗。
每個專案最多可進行 300 個實驗 (包括推出),其中最多可有 24 個實驗和推出作業正在進行,其餘則為已完成的實驗。
管理實驗
使用 Remote Config 建立實驗後,您可以開始實驗、在實驗執行期間監控實驗,以及增加實驗涵蓋的使用者人數。
實驗完成後,您可以記下勝出變化版本使用的設定,然後向所有使用者套用這些設定。或者,您也可以執行其他實驗。
編輯實驗
- 在 Firebase 控制台導覽選單的「DevOps & Engagement」(DevOps 與參與度) 部分,按一下 Remote Config。
- 按一下「A/B 測試」分頁標籤。
- 按一下「執行中」,然後點選要編輯的實驗。
- 按一下內容選單 (),然後按一下「編輯進行中的實驗」。
- 如要驗證應用程式是否有符合實驗資格的使用者,請展開詳細資料,並在「目標對象和發布」部分中,確認是否有大於 0% 的數字 (例如「符合條件的使用者有 1%」)。
監控實驗
實驗執行一段時間後,您可以查看進度,以及參與實驗的使用者目前的結果。
- 在 Firebase 控制台導覽選單的「DevOps & Engagement」(DevOps 與參與度) 部分,按一下 Remote Config。
- 按一下「A/B 測試」分頁標籤。
按一下「執行中」,然後點選或搜尋實驗標題。您可以在這個頁面查看進行中實驗的各種觀察和模擬統計資料,包括:
- 與基準的落差百分比:用來衡量特定變體與基準相比,指標的改善幅度。計算方式是比較變體的價值範圍與基準的價值範圍。
- 超越基準的機率:預估特定變化版本在所選指標方面超越基準的機率。
- 每位使用者observed_metric:根據實驗結果,這是指標值在一段時間內的預測範圍。
- 總計 observed_metric:基準或變體的累積觀察值。這個值可用於評估各個實驗變化版本的成效,並計算「改善幅度」、「值範圍」、「超越基準的機率」和「成為最佳變化版本的機率」。視評估的指標而定,這個資料欄可能會標示為「每位使用者的時間長度」、「每位使用者的收益」、「留存率」或「轉換率」。
實驗執行一段時間後 (Remote Config為 14 天),這個頁面的資料會指出哪個版本是「領先者」。部分指標會附上長條圖,以視覺化格式呈現資料。
向所有使用者推出實驗
實驗執行一段時間後,如果目標指標有「領先者」(即勝出版本),即可向所有使用者發布實驗。您可以選取此後要向所有人發布的變化版本。即使實驗結果沒有明顯的勝出版本,您仍可向所有使用者發布特定變化版本。
- 在 Firebase 控制台導覽選單的「DevOps & Engagement」(DevOps 與參與度) 部分,按一下 Remote Config。
- 按一下「A/B 測試」分頁標籤。
- 按一下「已完成」或「執行中」,然後按一下要向所有使用者發布的實驗,點選內容選單 () 中的「導入變化版本」。
- 如要向所有使用者推出實驗,請按照下列步驟操作:
- 如果是 Remote Config 實驗,請選取變化版本,確認要更新的 Remote Config 參數值。建立實驗時定義的指定條件,在範本中會顯示為新條件,確保該版本推出後只會影響實驗所指定的使用者。點選「在遠端設定中查看」並檢查變更,然後按一下「發布變更」完成導入。
展開實驗
如果實驗無法吸引足夠的使用者,以致於無法判斷勝出組合,您可以提高實驗的發布比例,觸及更多應用程式使用者。A/B Testing
- 在 Firebase 控制台導覽選單的「DevOps & Engagement」(DevOps 與參與度) 部分,按一下 Remote Config。
- 按一下「A/B 測試」分頁標籤。
- 選取要編輯的執行中實驗。
- 在「實驗總覽」中,按一下內容選單 (),然後點選「編輯執行中的實驗」。
- 「指定目標」對話方塊會顯示選項,可增加參與實驗的使用者百分比。選取大於目前百分比的數字,然後按一下「發布」。系統會向您指定百分比的使用者推出實驗。
複製實驗
- 在 Firebase 控制台導覽選單的「DevOps & Engagement」(DevOps 與參與度) 部分,按一下 Remote Config。
- 按一下「A/B 測試」分頁標籤。
- 選取要停止的執行中或已完成實驗。
- 按一下「已完成」或「執行中」,將指標懸停在實驗上,按一下內容選單 (),然後按一下「複製實驗」或「停止實驗」。
停止實驗
- 在 Firebase 控制台導覽選單的「DevOps & Engagement」(DevOps 與參與度) 部分,按一下 Remote Config。
- 按一下「A/B 測試」分頁標籤。
- 選取要停止的執行中或已完成實驗。
- 依序點選「已完成」或「執行中」,將指標懸停在實驗上,點選內容選單 (),然後點選「停止實驗」。
識別網頁用戶端並保留實驗
使用者首次在瀏覽器中使用 Firebase A/B Testing 啟動網頁應用程式時,系統會產生專屬的 Firebase 安裝 ID (FID)。這個 FID 會永久儲存在瀏覽器的 IndexedDB 中,用於識別工作階段中的應用程式例項。
Firebase A/B Testing 會使用 FID 將使用者指派給實驗變體,而 Google Analytics 則會使用 FID 彙整事件,以便評估及分析每個變體中的使用者行為。
由於 FID 儲存在 IndexedDB 中,因此如果使用者從其他瀏覽器或無痕視窗存取應用程式,或是清除瀏覽器的 IndexedDB,Firebase A/B Testing 就會將使用者視為新使用者。也就是說,使用者在不同瀏覽器或瀏覽工作階段中,可能會被納入不同的實驗變體。
指定使用者
您可以使用下列使用者指定條件,指定要納入實驗的使用者。
Firebase 控制台支援下列規則類型。Remote Config REST API 提供同等功能,詳情請參閱條件運算式參考資料。
| 規則類型 | 運算子 | 值 | 注意事項 |
| 應用程式 | == | 從與 Firebase 專案相關聯的應用程式 ID 清單中選取。 | 將應用程式新增至 Firebase 時,您輸入的軟體包 ID 或 Android 套件名稱會定義屬性,並在 Remote Config 規則中顯示為「應用程式 ID」。 請按照下列方式使用這項屬性:
|
| 應用程式版本 |
字串值: 完全相符、 包含、 不包含、 包含規則運算式 數值: <、<=、=、!=、>、>= |
指定要指定目標的應用程式版本。 使用這項規則前,請先使用「應用程式 ID」規則,選取與 Firebase 專案相關聯的 Android/Apple 應用程式。 |
Apple 平台:使用應用程式的 CFBundleShortVersionString。 注意:請確認您的 Apple 應用程式使用的是 Firebase Apple 平台 SDK 6.24.0 以上版本,因為舊版不會傳送 CFBundleShortVersionString (請參閱版本資訊)。 Android:使用應用程式的 versionName。 這項規則的字串比較會區分大小寫。使用「完全相符」、「包含」、「不包含」或「包含規則運算式」運算子時,可以選取多個值。 使用「包含規則運算式」運算子時,您可以建立 RE2 格式的規則運算式。規則運算式可以比對目標版本字串的全部或部分內容。您也可以使用 ^ 和 $ 錨點,比對目標字串的開頭、結尾或完整內容。 |
| 版本編號 |
字串值: 完全相符、 包含、 不包含、 規則運算式 數值: =、≠、>、≥、<、≤ |
指定要鎖定的應用程式版本。 使用這項規則前,請先使用「應用程式 ID」規則,選取與 Firebase 專案相關聯的 Apple 或 Android 應用程式。 |
這個運算子僅適用於 Apple 和 Android 應用程式。這對應於 Apple 的應用程式 CFBundleVersion 和 Android 的 versionCode。這項規則的字串比較會區分大小寫。 使用「完全相符」、「包含」、「不包含」或「包含規則運算式」運算子時,可以選取多個值。 使用「包含規則運算式」運算子時,您可以建立 RE2 格式的規則運算式。規則運算式可以比對目標版本字串的全部或部分內容。您也可以使用 ^ 和 $ 錨點,比對目標字串的開頭、結尾或全部內容。 |
| 平台 | == | iOS Android 網頁 |
|
| 作業系統 | == |
指定要鎖定的作業系統。 使用這項規則前,請先使用「應用程式 ID」規則,選取與 Firebase 專案相關聯的網頁應用程式。 |
如果作業系統及其版本符合指定清單中的目標值,這項規則會針對特定網頁應用程式執行個體評估為 true。 |
| 瀏覽器 | == |
指定要鎖定的瀏覽器。 使用這項規則前,請先使用「應用程式 ID」規則,選取與 Firebase 專案相關聯的網頁應用程式。 |
如果瀏覽器及其版本符合指定清單中的目標值,這項規則會針對特定網頁應用程式執行個體評估為 true。 |
| 裝置類別 | 是、不是 | 行動裝置 | 這項規則會評估存取網頁應用程式的裝置是否為行動裝置,或非行動裝置 (電腦或遊戲機)。這項規則類型僅適用於網路應用程式。 |
| 語言 | 位於 | 選取一或多種語言。 | 如果特定應用程式執行個體安裝在採用所列語言的裝置上,這項規則就會評估為 true。 |
| 國家/地區 | 位於 | 選取一或多個區域或國家/地區。 | 如果應用程式例項位於所列的任何區域或國家/地區,這項規則會評估為 true。系統會根據要求中的裝置 IP 位址,或 Firebase Analytics 判斷的國家/地區代碼 (如果 Analytics 資料已與 Firebase 共用),決定裝置國家/地區代碼。 |
| 使用者目標對象 | 包括至少一個 | 從專案設定的目標對象清單中,選取一或多個目標對象。Google Analytics | 這項規則需要應用程式 ID 規則,才能選取與 Firebase 專案相關聯的應用程式。
注意:由於許多Analytics目標對象是根據事件或使用者屬性定義,而這些屬性可能取決於應用程式使用者的動作,因此目標對象中的使用者規則可能需要一段時間,才會對特定應用程式例項生效。也就是說,即使使用者在技術上符合目標對象的資格,但如果 Analytics 在執行 |
| 使用者屬性 |
字串值:
包含、 不包含、 完全相符、 包含規則運算式 數值: =、≠、>、≥、<、≤ 注意:在用戶端,您只能為使用者屬性設定字串值。對於使用數值運算子的條件,Remote Config 會將對應使用者屬性的值轉換為整數/浮點數。 |
從可用Google Analytics使用者 屬性清單中選取。 | 如要瞭解如何使用使用者屬性,針對特定使用者群體自訂應用程式,請參閱
Remote Config 和使用者屬性。
如要進一步瞭解使用者屬性,請參閱下列指南: 使用「完全相符」、「包含」、「不包含」或「包含規則運算式」運算子時,可以選取多個值。 使用「包含規則運算式」運算子時,您可以建立 RE2 格式的規則運算式。規則運算式可以比對目標版本字串的全部或部分內容。您也可以使用 ^ 和 $ 錨點,比對目標字串的開頭、結尾或全部內容。 注意:建立 Remote Config 條件時,無法使用自動收集的使用者屬性。 |
| 隨機百分比中的使用者 | 滑桿 (位於 Firebase 控制台。REST API 使用 <=、> 和 between 運算子。 |
0-100 TB |
使用這個欄位,即可對應用程式執行個體的隨機樣本套用變更 (樣本大小可小至 0.0001%),並使用滑桿小工具將隨機洗牌的使用者 (應用程式執行個體) 分成不同群組。 每個應用程式執行個體都會根據該專案中定義的種子,持續對應至隨機整數或分數。 除非修改種子值,否則規則會使用預設金鑰 (在 Firebase 控制台中顯示為「編輯種子」)。如要將規則還原為使用預設鍵,請清除「Seed」欄位。 如要在指定百分比範圍內持續處理相同的應用程式例項,請在各項條件中使用相同的種子值。或者,指定新的種子,為特定百分比範圍選取隨機指派的新應用程式執行個體群組。 舉例來說,如要建立兩個相關條件,分別套用至應用程式 5% 的不重疊使用者,您可以將一個條件設定為符合 0% 到 5% 的百分比,另一個條件則設定為符合 5% 到 10% 的範圍。如要讓部分使用者隨機出現在兩個群組中,請為每個條件中的規則使用不同的種子值。 |
| 匯入的區隔 | 位於 | 選取一或多個匯入的區隔。 | 這項規則需要設定自訂匯入區隔。 |
| 日期/時間 | Before、After | 指定日期和時間,可使用裝置時區或指定時區,例如「(GMT+11) 悉尼時間」。 | 比較目前時間與裝置擷取時間。 |
| 初次開啟 | Before、After | 根據使用者首次開啟應用程式的時間指定目標使用者:
|
選取 Android、iOS 或網頁應用程式後,即可根據初次開啟時間指定使用者。 需要下列 SDK:
在初次開啟事件期間,用戶端也必須啟用 Analytics。 |
| 安裝 ID | 位於 | 指定一或多個 (最多 50 個) 要指定的安裝 ID。 | 如果指定安裝的 ID 位於以半形逗號分隔的值清單中,這項規則會評估為 true。如要瞭解如何取得安裝 ID,請參閱「 擷取用戶端 ID」。 |
| 使用者確實存在 | (沒有運算子) | 指定目前專案中所有應用程式的所有使用者。 |
使用這項條件規則,即可比對專案中的所有使用者,無論應用程式或平台為何。 |
| 自訂信號 |
字串值:
包含、 不包含、 完全相符、 包含規則運算式 數值: =、≠、>、≥、<、≤ 版本值: =、≠、>、≥、<、≤ |
這項規則的字串比較會區分大小寫。使用完全相符、包含、不包含或包含規則運算式運算子時,您可以選取多個值。使用「包含規則運算式」運算子時,您可以建立 RE2 格式的規則運算式。規則運算式可以比對目標版本字串的全部或部分內容。您也可以使用 ^ 和 $ 錨點,比對目標字串的開頭、結尾或整個字串。 用戶端環境支援下列資料類型:
代表要比對的版本號碼 (例如 2.1.0) 的數字。 |
如要進一步瞭解自訂信號條件和可使用的條件運算式,請參閱「自訂信號條件」和「用於建立條件的元素」。 |
A/B Testing 項指標
建立實驗時,您會選擇主要或目標指標,用來判斷勝出版本。您也應追蹤其他指標,進一步瞭解各實驗變體的成效,並追蹤各變體可能不同的重要趨勢,例如使用者留存率、應用程式穩定性和應用程式內購收益。您最多可以在實驗中追蹤五個非目標指標。
舉例來說,假設您使用 Remote Config 在應用程式中啟動兩種不同的遊戲流程,並想盡量提高應用程式內購和廣告收益,但同時也想追蹤各個變體的穩定性和使用者留存率。在這種情況下,您可能會考慮選擇「預估總收益」做為目標指標,因為這項指標包含應用程式內購收益和廣告收益,然後在「要追蹤的其他指標」中新增下列指標:
- 如要追蹤每日和每週使用者留存率,請新增「留存率 (2-3 天)」和「留存率 (4-7 天)」。
- 如要比較這兩個遊戲流程的穩定性,請新增「不受當機影響的使用者」。
- 如要查看各收益類型的詳細資料,請新增「購買收益」和「預估廣告收益」。
下表詳細說明目標指標和其他指標的計算方式。
「目標」指標
| 指標 | 說明 |
|---|---|
| 未遇到當機情形的使用者 | 在實驗期間,Firebase Crashlytics SDK 偵測到應用程式發生錯誤,而未遇到這類錯誤的使用者百分比。 注意:網頁應用程式不支援 Firebase Crashlytics。 |
| 預估廣告收益 | 預估廣告收益。 |
| 預估總收益 | 購買價值和預估廣告收益的總和。 |
| 購買收益 | 所有 purchase 和 in_app_purchase 事件的加總值。 |
| 回訪率 (1 天) | 每日回訪應用程式的使用者人數。 |
| 留存率 (2 至 3 天) | 在 2 到 3 天內回訪應用程式的使用者人數。 |
| 留存率 (4 到 7 天) | 在 4 到 7 天內返回應用程式的使用者人數。 |
| 保留 (8 到 14 天) | 在 8 到 14 天內回訪應用程式的使用者人數。 |
| 留存率 (15 天以上) | 上次使用應用程式後,在 15 天以上回訪的使用者人數。 |
| first_open | 使用者安裝或重新安裝應用程式後,初次開啟應用程式時觸發的 Analytics 事件。做為轉換漏斗的一部分。 |
其他指標
| 指標 | 說明 |
|---|---|
| notification_dismiss | Analytics 事件:在使用者關閉通知撰寫器傳送的通知時觸發 (僅適用於 Android)。 |
| notification_receive | Analytics 事件:在應用程式於背景運作期間收到通知撰寫器傳送的通知時觸發 (僅適用於 Android)。 |
| os_update | Analytics 事件,用於追蹤裝置作業系統更新為新版本的時間。詳情請參閱「自動收集的事件」。 網頁應用程式不支援這個指標。 |
| screen_view | Analytics 事件,用於追蹤應用程式內瀏覽的畫面。如要瞭解詳情,請參閱「追蹤畫面瀏覽次數」。 |
| session_start | Analytics 事件,用於計算應用程式中的使用者工作階段。如要瞭解詳情,請參閱「自動收集的事件」。 |
BigQuery 資料匯出
除了在 A/B Testing 管理中心查看實驗資料,您也可以在 FirebaseBigQuery 中檢查及分析實驗資料。雖然 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 的結果。
如要開始使用,請按照本指南所述完成下列步驟:
在 Firebase 控制台中啟用 Google Analytics 的 BigQuery 匯出功能
如果採用 Spark 方案,可以使用BigQuery沙箱免費存取 BigQuery,但須遵守沙箱限制。詳情請參閱「定價和 BigQuery 沙箱」。
首先,請確認您要將 Analytics 資料匯出至BigQuery:
在 Firebase 控制台中,依序前往「
設定 」>「整合」分頁。在「BigQuery」資訊卡中,按一下「管理」,並確認專案正在將 Analytics 資料匯出至 BigQuery。
如果卡片顯示「連結」,請設定匯出作業 (繼續執行下一個步驟)。
如需設定匯出功能,請按照下列步驟操作:
查看「關於將 Firebase 連結至 BigQuery」 ,然後按一下「下一步」。
在「設定整合」部分,啟用 Google Analytics。
選取區域並選擇匯出設定。
按一下「連結至『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每日事件資料表分區 (以
YYYYMMDD後置字元識別的資料表)。因此,如果實驗期間為 2024 年 2 月 2 日至 2024 年 5 月 2 日,您應指定_TABLE_SUFFIX between '20240202' AND '20240502'。如需範例,請參閱「選取特定實驗的值」。 - 事件名稱:通常會對應您在實驗中設定的目標指標。例如
in_app_purchase活動、ad_impression或user_retention活動。
收集產生查詢所需的資訊後,請按照下列步驟操作:
使用 Firebase 控制台自動產生的查詢,查詢實驗資料
如果您使用 Blaze 方案,實驗總覽頁面會提供範例查詢,傳回您正在查看的實驗名稱、變化版本、事件名稱和事件數量。
如要取得並執行自動產生的查詢,請按照下列步驟操作:
- 在 Firebase 控制台中,依序前往「DevOps & Engagement」(DevOps 與參與度) >「A/B Testing」(A/B 測試)。
- 選取要查詢的A/B Testing實驗,開啟「實驗總覽」。
- 在「選項」選單中,選取「BigQuery 整合」下方的「查詢實驗資料」。這會在 BigQueryGoogle 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_purchase 和 ecommerce_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