建立 Firebase 遠端設定實驗並進行 A/B 測試

使用 Firebase Remote Config 部署 以有效使用者數量為依據 把這件事做好您可以使用 A/B Testing 實驗,找出最適合您的實驗 會決定以下項目:

  • 實作功能來最佳化使用者體驗的最佳方式。太厲害了 應用程式開發人員 不瞭解使用者不喜歡新功能或更新的使用者 ,直到應用程式在應用程式商店的評分下降為止。A/B testing - Traditional Chinese 可協助您評估 像是新的功能變化版本 優先選擇應用程式此外,這樣您就能將大部分使用者 能確保大部分的使用者都能繼續使用 應用程式的行為或外觀,直到應用程式 實驗已結束。
  • 根據業務目標改善使用者體驗的最佳做法。 有時候,您會為了提高 收益或留存率A/B 測試可讓您設定業務目標 Firebase 會執行統計分析,判斷是否有變化版本 是否達到所選目標的基準成效
,瞭解如何調查及移除這項存取權。

如要針對基準測試 A/B 版本測試功能變化版本,請按照下列步驟操作:

  1. 建立實驗。
  2. 在測試裝置上驗證實驗。
  3. 管理實驗。
,瞭解如何調查及移除這項存取權。

建立實驗

Remote Config 實驗可讓您針對單一或 其他 Remote Config 參數

  1. 登入 Firebase 控制台 並確認專案已啟用 Google Analytics 這項實驗可存取 Analytics 資料。

    如果在建立專案時未啟用 Google Analytics, 即可在 GCP 控制台 整合項目 分頁,你可以透過 存取 > 專案設定中的Firebase控制台

  2. Firebase 控制台導覽選單的「互動」部分,按一下 A/B Testing

  3. 按一下「建立實驗」,然後選取「Remote Config。 。

  4. 輸入實驗的名稱和選填說明,然後按一下 按一下「下一步」

  5. 填寫「指定目標」欄位,請先選擇使用 進行實驗。您也可以指定一部分的使用者參與測試 按一下「和」,然後在實驗面板中選擇選項 下列名單:

    • 版本:應用程式的一或多個版本
    • 版本號碼:應用程式的版本代碼
    • 語言:選取使用者所用的一或多個語言和語言代碼 哪些使用者所屬的實驗
    • 國家/地區:選取使用者的一或多個國家/地區 應納入實驗的使用者
    • 使用者目標對象: Analytics 目標對象,用於指定符合以下條件的使用者 可能會納入實驗
    • 使用者屬性:一或多個 Analytics 使用者屬性 選取要納入實驗的使用者
    • 初次開啟:根據初次開啟的使用者指定使用者 您的應用程式

      當您選取 Android 或 iOS 應用程式。受到 下列 Remote Config 個 SDK 版本:Apple 平台 SDK 9.0.0 以上版本 和 Android SDK v21.1.1 以上版本 (Firebase BoM 30.3.0 以上版本)。

      設定前,用戶端也必須在用戶端上啟用 Analytics 開啟活動。

    ,瞭解如何調查及移除這項存取權。
  6. 設定「目標使用者百分比」:輸入應用程式的百分比 使用者數量,符合您要「目標使用者」下的條件 將基準和一或多個變化版本平均分配至 進行實驗。這可以是 0.01% 到 100% 之間的任何百分比。使用者 隨機指派給各實驗,包括複製的實驗。

  7. 您可以視情況設定啟用事件,確保只收集使用者資料 初次觸發 Analytics 事件的使用者都會計入 進行實驗。請注意,符合指定目標參數的「所有」使用者都會 只會收到 Remote Config 個實驗值,但只有觸發 啟用事件將納入實驗結果。

    為確保實驗有效,請確認您選擇的事件發生在 應用程式啟動擷取的設定值之後。此外, 下列事件一律發生在擷取前,因此無法使用 是否已啟用:

    • app_install
    • app_remove
    • app_update
    • dynamic_link_first_open
  8. 至於實驗的 目標,選取主要指標 並加入您想追蹤的其他指標 請參考閱讀清單,進一步瞭解 如何選擇 Kubeflow Pipelines SDK 或 TFX包括內建目標 (購買、收益、回訪率、 未遇到當機情形的使用者等)Analytics 轉換事件和其他 Analytics 事件。完成後,請點選「下一步」。

  9. 在「變化版本」部分中,選擇一個基準和至少一個 不同的實驗變化版本使用「選擇或新建」清單來新增清單 以及更多要進行實驗的參數您可以建立包含 先前未在 Firebase 控制台中使用,但必須存在於 才能生效。如要新增多個 為實驗新增多個參數

  10. (選用) 如要在實驗中加入多個變化版本,請按一下「新增」 其他變化版本

  11. 變更特定變化版本的一或多個參數。沒有變更 對於未納入實驗的使用者,則會使用相同的參數。

  12. 展開「變化版本權重」,即可查看或變更 進行實驗。根據預設,每個版本的權重均等。請注意,不均勻 權重可能會增加資料收集時間,而且權重無法變更

  13. 按一下「查看」儲存實驗。

,瞭解如何調查及移除這項存取權。

每個專案最多可加入 300 個實驗。 最多可包含 24 個執行中的實驗,其餘實驗則以草稿或已完成的形式顯示。

在測試裝置上驗證實驗

您可以擷取每項 Firebase 安裝的安裝驗證權杖 相關聯的資源您可以使用這個權杖測試特定實驗變化版本 。若要驗證您在 請執行下列操作:

  1. 取得安裝驗證權杖,如下所示:

    Swift

    do {
      let result = try await Installations.installations()
        .authTokenForcingRefresh(true)
      print("Installation auth token: \(result.authToken)")
    } catch {
      print("Error fetching token: \(error)")
    }
    

    Objective-C

    [[FIRInstallations installations] authTokenForcingRefresh:true
                                                   completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
      if (error != nil) {
        NSLog(@"Error fetching Installation token %@", error);
        return;
      }
      NSLog(@"Installation auth token: %@", [result authToken]);
    }];
    

    Java

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
            .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
        @Override
        public void onComplete(@NonNull Task<InstallationTokenResult> task) {
            if (task.isSuccessful() && task.getResult() != null) {
                Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
            } else {
                Log.e("Installations", "Unable to get Installation auth token");
            }
        }
    });

    Kotlin+KTX

    val forceRefresh = true
    FirebaseInstallations.getInstance().getToken(forceRefresh)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d("Installations", "Installation auth token: " + task.result?.token)
            } else {
                Log.e("Installations", "Unable to get Installation auth token")
            }
        }

    C++

    firebase::InitResult init_result;
    auto* installations_object = firebase::installations::Installations::GetInstance(
        firebase::App::GetInstance(), &init_result);
    installations_object->GetToken().OnCompletion(
        [](const firebase::Future& future) {
          if (future.status() == kFutureStatusComplete &&
              future.error() == firebase::installations::kErrorNone) {
            printf("Installations Auth Token %s\n", future.result()->c_str());
          }
        });
    

    Unity

    Firebase.Installations.FirebaseInstallations.DefaultInstance.GetTokenAsync(forceRefresh: true).ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("Installations token {0}", task.Result));
        }
      });
    
  2. Firebase 控制台的導覽列中,按一下 A/B 測試
  3. 按一下「草稿」,和/或遠端點選「執行」。 設定實驗),請將滑鼠遊標懸停在實驗上,然後按一下內容選單 (),然後按一下 管理測試裝置
  4. 輸入測試裝置的安裝驗證權杖,然後選擇 要傳送到該測試裝置的變化版本
  5. 執行應用程式,並確認系統是透過 測試裝置。

如要進一步瞭解 Firebase 安裝作業,請參閱 管理 Firebase 安裝項目

管理實驗

您是否使用「Remote Config」、「通知編輯器」或 Firebase In-App Messaging,您就可以驗證並開始實驗 讓參與測試的人數 以及執行中的實驗

實驗完成後,您可以記下 勝出版本,然後將這些設定發布給所有使用者。或者,您也可以 然後執行其他實驗

開始實驗

  1. Firebase 控制台導覽選單的「互動」部分,按一下 A/B Testing
  2. 按一下「草稿」,然後點選實驗標題。
  3. 驗證應用程式是否有使用者將 實驗,展開草稿詳細資料並查看數字 「指定目標與分配」部分中的「指定目標」大於「0%」 (例如:1% 符合條件的使用者)。
  4. 如要變更實驗,請按一下「編輯」
  5. 如要開始實驗,請按一下「開始實驗」。最多可執行 24 個 一次執行每項專案

監控實驗

實驗執行一段時間後,您可以查看 看看你的成果會如何吸引已參與的使用者 實驗人數

  1. Firebase 控制台導覽選單的「互動」部分,按一下 A/B Testing
  2. 按一下「執行中」,然後點選或搜尋 進行實驗。這個頁面會顯示已觀察到和模擬的各種資訊 有關執行中實驗的統計資料,包括:

    • 與基準相比的差異百分比:衡量指標的改善幅度 特定變化版本與基準相比的結果計算方式是比較 變化版本的值範圍和基準的值範圍。
    • 超過基準的機率:特定指定字詞的預估機率 變化版本的成效高於所選指標的基準。
    • 每位使用者 observed_metric:根據實驗結果, 這個預測範圍就是指標值 讓應用程式從可以最快做出回應的位置 回應使用者要求
    • observed_metric總數:觀察到的累計值 基準或變化版本這個值可用來評估各項 實驗變化版本的成效,並用於計算「改善」數值範圍超越基準的機率可能性 是最佳子類。視要評估的指標而定 標題為「每位使用者的持續時間」「每位使用者的收益」 「回訪率」或「轉換率」
  3. 實驗執行一段時間後 (針對「FCM」執行至少 7 天) 和 In-App Messaging 或 14 天 (Remote Config),本頁面中的資料 會指出哪個變化版本 (如有) 為「勝出版本」。有些測量值是 並附上長條圖,以視覺化方式呈現資料。

,瞭解如何調查及移除這項存取權。

對所有使用者推出實驗

如果實驗執行時間夠長,並能產生一個「領先者」或勝出 您可針對目標指標,向所有使用者發布實驗。 方便您選取要向日後所有使用者發布的變化版本。平均 如果實驗沒有產生明確的勝出組合,您仍然可以 您可以選擇對所有使用者發布變化版本

  1. Firebase 控制台導覽選單的「互動」部分,按一下 A/B Testing
  2. 按一下「已完成」或「執行中」,點選所需實驗 請按一下內容選單 ()。 推出變化版本
  3. 採取下列任一做法,向所有使用者推出實驗:

    • 如果是使用通知編輯器的實驗,請使用 「推出訊息」對話方塊,用於將訊息傳送至其餘目標 未參與實驗的使用者。
    • 在「Remote Config實驗中,選取變化版本以決定 要更新的 Remote Config 參數值。定義的指定條件 這些實驗馬上成為 範本,確保推出作業只會影響 進行實驗。點選「查看遠端設定」後,即可查看 變更時,請按一下 [發布變更] 完成推出作業。
    • In-App Messaging 實驗中,請使用對話方塊決定 變化版本必須以獨立 In-App Messaging 廣告活動的形式推出。 選取後,系統會將您重新導向至 FIAM 撰寫畫面,藉此建立 變更進行發布。

展開實驗

如果您發現實驗無法為「A/B Testing」帶來足夠的使用者 您可以擴大實驗的分配範圍, 將更多比例的應用程式使用者

  1. Firebase 控制台導覽選單的「互動」部分,按一下 A/B Testing
  2. 選取要編輯的進行中實驗。
  3. 在「實驗總覽」中,按一下 內容選單 (),然後 按一下「編輯執行中的實驗」
  4. 「指定目標」對話方塊會顯示選項,讓您提高 參與實驗的使用者。請選取較大的數字 然後按一下「發布」實驗將會是 就會向指定百分比的使用者發布

複製或停止實驗

  1. Firebase 控制台導覽選單的「互動」部分,按一下 A/B Testing
  2. 按一下「已完成」或「執行中」,將指標懸停在實驗上。 按一下內容選單 () 和 然後按一下「複製實驗」或「停止實驗」

指定使用者

您可以指定要納入 使用下列使用者指定條件來進行實驗。

指定條件 運算子 注意事項
版本 包含
不包含
完全符合,
包含規則運算式
輸入您要加入一或多個應用程式版本的值 進行實驗。

使用任一「包含」、「不包含」或「不適用」時, 「完全符合」運算子,您可以提供以半形逗號分隔的清單 輕鬆分配獎金

使用「包含規則運算式」運算子時,您可以建立一般 RE2 中的運算式 格式。規則運算式可與目標版本的所有或部分目標版本相符 字串。您也可以使用 ^$ 錨點,與 目標字串的開頭、結尾或完整內容。

使用者目標對象 包括所有
包含至少一個
不包含所有
不包含至少一個
選取一或多個Analytics目標對象來指定可能的使用者 已納入實驗範圍 有些指定 Google Analytics 目標對象的實驗可能需要執行 系統需要幾天的時間才會累積資料,因為資料受Analytics約束 資料處理延遲時間。 新使用者很有可能遇到這個延遲 通常會在建立目標對象後 24 到 48 小時,加入符合資格的目標對象。 的 最近建立的目標對象

對於 Remote Config,這表示即使使用者技術上符合 目標對象 (如果「Analytics」尚未在目標對像中加入使用者) 已執行 `fetchAndActivate()`,則系統不會將使用者納入 進行實驗。

使用者屬性 文字:
包含
不包含
完全符合
包含規則運算式

電話號碼:
<、≤、=、≥、>
Analytics 使用者屬性用於選取可納入的使用者 在你的實驗中,透過多種選項選取使用者屬性 輕鬆分配獎金

在用戶端中,您只能為使用者設定字串值 資源。如果是使用數字運算子的條件, Remote Config 服務會將對應的值 將使用者屬性轉換為整數/浮點值
使用「包含規則運算式」運算子時,您可以建立一般 RE2 中的運算式 格式。規則運算式可與目標版本的所有或部分目標版本相符 字串。您也可以使用 ^$ 錨點,與 目標字串的開頭、結尾或完整內容。
國家/地區 不適用 使用一或多個國家/地區,由系統挑選並納入特定使用者  
語言 不適用 由系統挑選的使用者,他們會使用一或多個語言和語言代碼  
初次開啟
之前
之後

根據首次開啟應用程式的使用者指定使用者:

  • 選取「新使用者」,指定初次開啟的使用者 您的應用程式。
  • 選取「時間範圍」,指定初次開啟你網站的使用者 應用程式。合併 指定的「之前」和「之後」條件 特定時間範圍內的使用者

您選取 Android 或 iOS 後,才能使用按首次開啟指定使用者的功能 應用程式。這項功能目前由下列 Remote Config SDK 支援 版本:Apple 平台 SDK v9.0.0 以上版本和 Android SDK v21.1.1 以上版本 (Firebase BoM v30.3.0 以上版本)。

Analytics」也須有 會在用戶端初次開啟事件時啟用。

A/B Testing 項指標

建立實驗時,您必須選擇主要或「目標」指標,也就是 以便決定勝出的變化版本你應該追蹤其他指標 可協助您進一步瞭解每個實驗變化版本的成效並追蹤 各變化版本的重要趨勢可能不同,例如使用者留存率、應用程式 穩定性和應用程式內購收益您最多可以追蹤 5 個非目標 實驗指標

舉例來說,假設您使用 Remote Config 啟動兩款不同的遊戲 且希望盡量提升應用程式內購和廣告收益 還想追蹤各個變化版本的穩定性和使用者留存率。 此時,建議您選擇「預估總收益」做為 目標指標,因為它包含應用程式內購收益和廣告收益 然後,針對「要追蹤的其他指標」,您可以加入下列指標:

  • 如要追蹤每日和每週使用者留存率,請加入 保留 (2 到 3 天)回訪率 (4 到 7 天)
  • 如要比較兩種遊戲流程的穩定性,請新增「不受當機影響的使用者」
  • 如要查看每種收益類型的詳細觀看次數,請在 購買收益預估廣告收益
,瞭解如何調查及移除這項存取權。

下表詳細列出目標指標和其他指標的運作方式

「目標」指標

指標 說明
未遇到當機情形的使用者比例 您應用程式未遇到錯誤的使用者百分比 Firebase Crashlytics SDK 在實驗期間偵測到。
預估廣告收益 預估廣告收益。
預估總收益 總購買價值和預估廣告收益的加總值。
購買收益 所有 purchasein_app_purchase 事件。
回訪率 (1 天) 每日回訪您應用程式的使用者人數。
回訪率 (2 至 3 天) 在 2 到 3 天內回訪應用程式的使用者人數。
回訪率 (4 至 7 天) 在 4 到 7 天內回訪應用程式的使用者人數。
回訪率 (8 至 14 天) 在 8 到 14 天內回訪應用程式的使用者人數。
回訪率 (15 天以上) 使用者在超過 15 天後回訪應用程式的使用者人數 上次使用時間
first_open Analytics 事件,會在使用者於使用者之後首次開啟應用程式時觸發 安裝或重新安裝用於轉換漏斗。

其他指標

指標 說明
通知關閉 在以下情況傳送通知時觸發的 Analytics 事件: 通知編輯器已關閉 (僅限 Android)。
通知「receive_receive」 在以下情況傳送通知時觸發的 Analytics 事件: 在應用程式於背景運作時接收通知編輯器 (僅限 Android)。
os_update 追蹤裝置作業系統的 Analytics 事件 更新為新版本。詳情請參閱 收集的事件
screen_view Analytics 事件,用於追蹤使用者在應用程式中瀏覽的畫面。學習 詳細資訊,請參閱追蹤 畫面瀏覽
session_start 用於計算應用程式內使用者工作階段的 Analytics 事件。如要瞭解詳情 查看「自動 收集的事件

BigQuery 資料匯出

除了在下列管道中查看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 中為「Google Analytics」啟用BigQuery匯出功能 控制台
  2. 使用 BigQuery 存取「A/B Testing」資料
  3. 探索查詢範例

在 Firebase 控制台中為 Google Analytics 啟用 BigQuery匯出功能

如果您使用的是 Spark 方案,則可以使用 BigQuery 沙箱, 免付費使用「BigQuery」,須遵守 沙箱限制。 詳情請見 定價和 BigQuery 沙箱 瞭解詳情

首先,請確認您已將「Analytics」資料匯出至 BigQuery

  1. 開啟 「Integrations」分頁 您可以透過 存取 > Firebase 控制台中的「專案設定」
  2. 已使用其他 Firebase 服務使用 BigQuery: 按一下「管理」。如果尚未建立,請按一下「連結」。
  3. 請參閱「關於將 Firebase 連結至 BigQuery」一文,然後點選「下一步」
  4. 在「設定整合」部分中,啟用 Google Analytics 切換鈕。
  5. 選取區域並選擇匯出設定。

  6. 按一下「連結至 BigQuery

視您選擇匯出資料的方式而定, 才能使用如要進一步瞭解如何將專案資料匯出至 BigQuery,請參閱 將專案資料匯出至 BigQuery

存取「BigQuery」中的「A/B Testing」資料

查詢特定實驗的資料前,你需要先取得 下列條件全都可以在查詢中使用:

  • 實驗 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;展開時也會出現在「BigQuery」中 輸入專案名稱,以顯示 Google Analytics 事件的名稱 表格 (project_name.analytics_000000000.events)。
  • 實驗日期:如要撰寫更快、更有效率的查詢, 建議將查詢次數限制在每天 Google Analytics 包含實驗資料的事件資料表分區,也就是表格 有 YYYYMMDD 後置字串因此,如果您的實驗從 30 天開始 2024 年 2 月 2 日至 2024 年 5 月 2 日期間,請指定 _TABLE_SUFFIX between '20240202' AND '20240502'。如需範例,請參閱 選取特定實驗的值
  • 活動名稱:這個欄位通常會與 目標指標 您在實驗中設定的項目例如:in_app_purchase 事件、ad_impressionuser_retention 事件。
,瞭解如何調查及移除這項存取權。

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

  1. 開啟 BigQuery (在 Google Cloud 控制台中)。
  2. 請選取專案,然後選取「建立 SQL 查詢」
  3. 新增查詢。如需要執行的查詢範例,請參閱: 探索查詢範例
  4. 按一下「執行」
,瞭解如何調查及移除這項存取權。

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

如果您使用的是 Blaze 方案,「實驗總覽」頁面會提供 這個查詢範例會傳回實驗名稱、變化版本、事件名稱 您所查看實驗的事件數目。

如何取得並執行自動產生的查詢:

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

以下範例顯示為具有下列條件的實驗產生的查詢: 分別是名為「冬季歡迎實驗」的三個變化版本 (包括基準)。 它會傳回有效實驗名稱、變化版本名稱、不重複事件和 事件計數。請注意,查詢產生器並未指定 新增至表格名稱中,因為此名稱會直接在專案中開啟。

  /*
    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