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

使用 Firebase Remote Config 為有活躍使用者的應用程式部署設定時,請務必確保設定正確無誤。您可以透過 A/B Testing 實驗,找出下列最佳做法:

  • 實作功能以改善使用者體驗的最佳方式。應用程式開發人員通常要等到應用程式在應用程式商店的評分下滑,才會發現使用者不喜歡新功能或更新的使用者體驗。A/B 測試可協助您評估使用者是否喜歡新版功能,或是否偏好現有應用程式。此外,將大多數使用者保留在基準群組中,可確保大多數使用者在實驗結束前,都能繼續使用應用程式,且不會遇到任何行為或外觀變化。
  • 針對業務目標改善使用者體驗的最佳方式。 有時您會實作產品變更,盡可能提高收益或留存率等指標。進行 A/B 測試時,您要設定業務目標,Firebase 則會執行統計分析,判斷變化版本在所選目標的成效是否優於基準組。

如要使用基準進行功能變體 A/B 測試,請按照下列步驟操作:

  1. 建立實驗。
  2. 在測試裝置上驗證實驗。
  3. 管理實驗。
A/B Testing

建立實驗

Remote Config 實驗可讓您評估一或多個Remote Config參數的多個變體。

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

    如果您在建立專案時未啟用 Google Analytics,可以前往「整合分頁啟用。如要存取這個分頁,請在 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 21.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. 在實驗的「目標」中,選取要追蹤的主要指標,然後從清單中新增要追蹤的其他指標。包括內建目標 (購買次數、收益、留存率、無當機使用者等),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

    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<std::string>& 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. 實驗執行一段時間後 (FCMIn-App Messaging 至少 7 天,Remote Config 至少 14 天),這個頁面的資料會指出哪個變體是「領先者」(如有)。部分指標會附上長條圖,以視覺化格式呈現資料。

向所有使用者推出實驗

實驗執行一段時間後,如果目標指標有「領先者」(即勝出版本),即可向所有使用者發布實驗。您可以選取此後要向所有人發布的變化版本。即使實驗結果沒有明顯的勝出版本,您仍可向所有人發布特定變化版本。

  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 9.0.0 以上版本,以及 Android SDK 21.1.1 以上版本 (Firebase BoM 30.3.0 以上版本)。

Analytics 也必須在初次開啟事件期間,於用戶端上啟用。

A/B Testing 項指標

建立實驗時,請選擇主要或目標指標,系統會根據這項指標決定勝出版本。您也應追蹤其他指標,進一步瞭解各實驗變體的成效,並追蹤各變體可能不同的重要趨勢,例如使用者留存率、應用程式穩定性和應用程式內購收益。您最多可以在實驗中追蹤五個非目標指標。

舉例來說,假設您使用 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 事件。做為轉換漏斗的一部分。

其他指標

指標 說明
notification_dismiss Analytics 事件:在使用者關閉通知撰寫工具傳送的通知時觸發 (僅適用於 Android)。
notification_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 控制台中啟用 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每日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