Создавайте эксперименты по обмену сообщениями с помощью A/B-тестирования

When you are reaching out to your users or starting a new marketing campaign, you want to make sure that you get it right. A/B testing can help you find the optimal wording and presentation by testing message variants on selected portions of your user base. Whether your goal is better retention or conversion on an offer, A/B testing can perform statistical analysis to determine if a message variant is outperforming the baseline for your selected objective.

Для A/B-тестирования вариантов функций с использованием базового варианта выполните следующие действия:

  1. Создайте свой эксперимент.
  2. Проверьте результаты эксперимента на тестовом устройстве.
  3. Управляйте своим экспериментом.

Создайте эксперимент

Эксперимент с использованием редактора уведомлений позволяет оценить несколько вариантов одного и того же уведомления.

  1. Войдите в консоль Firebase и убедитесь, что Google Analytics включен в вашем проекте, чтобы эксперимент имел доступ к данным Analytics .

    Если вы не включили Google Analytics при создании проекта, вы можете включить его на вкладке «Интеграции» , доступ к которой можно получить через > «Настройки проекта» в консоли Firebase .

  2. В разделе Engage на панели навигации консоли Firebase нажмите A/B Testing .

  3. Нажмите «Создать эксперимент» , а затем, когда появится запрос, выберите «Уведомления» для службы, с которой вы хотите поэкспериментировать.

  4. Введите название и, при желании, описание для вашего эксперимента и нажмите «Далее» .

  5. Заполните поля «Таргетинг» , сначала выбрав приложение, в котором будет проводиться эксперимент. Вы также можете выбрать для участия в эксперименте подгруппу пользователей, выбрав следующие параметры:

    • Версия: Одна или несколько версий вашего приложения
    • Целевая аудитория пользователей: Analytics аудитории, используемые для таргетирования пользователей, которые могут быть включены в эксперимент.
    • Свойство пользователя: Одно или несколько свойств пользователя Analytics для выбора пользователей, которые могут быть включены в эксперимент.
    • Страна/Регион: Одна или несколько стран или регионов для отбора пользователей, которые могут быть включены в эксперимент.
    • Язык устройства: Один или несколько языков и региональных настроек, используемых для отбора пользователей, которые могут быть включены в эксперимент.
    • Первое открытие: Нацеливайте таргетинг на пользователей в зависимости от того, когда они впервые открыли ваше приложение.
    • Последнее взаимодействие с приложением: настраивайте таргетинг пользователей на основе времени их последнего взаимодействия с вашим приложением.
  6. Установите процент целевых пользователей: выберите процент пользователей вашего приложения, соответствующих критериям, заданным в разделе «Целевые пользователи» , который вы хотите равномерно распределить между базовой версией и одним или несколькими вариантами в вашем эксперименте. Это может быть любой процент от 0,01% до 100%. Проценты случайным образом переназначаются пользователям для каждого эксперимента, включая дублирующиеся эксперименты.

  7. В разделе «Варианты» введите сообщение, которое будет отправлено базовой группе, в поле «Введите текст сообщения» . Чтобы не отправлять сообщение базовой группе, оставьте это поле пустым.

  8. (Необязательно) Чтобы добавить в эксперимент более одного варианта, нажмите «Добавить вариант» . По умолчанию эксперименты содержат один базовый вариант и один вариант.

  9. (необязательно) Введите название для каждого варианта в вашем эксперименте, чтобы заменить названия Вариант A , Вариант B и т. д.

  10. Определите целевой показатель для вашего эксперимента, который будет использоваться при оценке вариантов эксперимента, а также любые дополнительные желаемые показатели из выпадающего списка. Эти показатели включают встроенные цели (вовлеченность, покупки, доход, удержание и т. д.), события конверсии в Analytics и другие события Analytics .

  11. Выберите параметры для вашего сообщения:

    • Дата запуска: выберите «Отправить сейчас» , чтобы запустить эксперимент сразу после сохранения, или «Запланировано» , чтобы указать время запуска эксперимента в будущем.
    • Расширенные параметры: Чтобы выбрать расширенные параметры для всех уведомлений, включенных в ваш эксперимент, разверните раздел «Расширенные параметры» , а затем измените любые из перечисленных параметров сообщений.
  12. Нажмите «Просмотреть» , чтобы сохранить эксперимент.

В рамках одного проекта допускается проведение до 300 экспериментов, из которых до 24 могут быть уже запущены, а остальные — в черновиках или завершены.

Проверьте результаты эксперимента на тестовом устройстве.

Для каждой установки Firebase вы можете получить связанный с ней регистрационный токен FCM . Вы можете использовать этот токен для тестирования определенных вариантов эксперимента на тестовом устройстве с установленным вашим приложением. Чтобы проверить эксперимент на тестовом устройстве, выполните следующие действия:

  1. Получить регистрационный токен FCM можно следующим образом:

    Быстрый

    Messaging.messaging().token { token, error in
      if let error = error {
        print("Error fetching remote FCM registration token: \(error)")
      } else if let token = token {
        print("Remote instance ID token: \(token)")
      }
    }

    Objective-C

    [[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error fetching the remote FCM registration token: %@", error);
      } else {
        NSLog(@"Remote FCM registration token: %@", token);
        NSString* message =
          [NSString stringWithFormat:@"FCM registration token: %@", token];
        // display message
        NSLog(@"%@", message);
      }
    }];

    Java

    FirebaseMessaging.getInstance().getToken()
        .addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull Task<String> task) {
              if (!task.isSuccessful()) {
                Log.w(TAG, "Fetching FCM registration token failed", task.getException());
                return;
              }
    
              // Get new FCM registration token
              String token = task.getResult();
    
              // Log and toast
              String msg = getString(R.string.msg_token_fmt, token);
              Log.d(TAG, msg);
              Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

    Kotlin

    FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
        if (!task.isSuccessful) {
            Log.w(TAG, "Fetching FCM registration token failed", task.exception)
            return@OnCompleteListener
        }
    
        // Get new FCM registration token
        val token = task.result
    
        // Log and toast
        val msg = getString(R.string.msg_token_fmt, token)
        Log.d(TAG, msg)
        Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
    })

    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());
          }
        });

    Единство

    Firebase.Messaging.FirebaseMessaging.DefaultInstance.GetTokenAsync().ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("FCM registration token {0}", task.Result));
        }
      });
  2. На панели навигации консоли Firebase нажмите «A/B-тестирование» .
  3. Нажмите «Черновик» , наведите курсор на свой эксперимент, щелкните контекстное меню ( ), а затем нажмите «Управление тестовыми устройствами».
  4. Введите токен FCM для тестового устройства и выберите вариант эксперимента, который будет отправлен на это тестовое устройство.
  5. Запустите приложение и убедитесь, что выбранный вариант принимается на тестовом устройстве.

Управляйте своим экспериментом

Независимо от того, создаете ли вы эксперимент с помощью Remote Config , Notifications Composer или Firebase In-App Messaging , вы можете проверить и запустить свой эксперимент, отслеживать его выполнение и увеличивать количество пользователей, участвующих в нем.

После завершения эксперимента вы можете зафиксировать настройки, использованные в варианте-победителе, а затем распространить эти настройки на всех пользователей. Или же вы можете провести еще один эксперимент.

Начните эксперимент

  1. В разделе Engage навигационного меню консоли Firebase нажмите A/B Testing .
  2. Нажмите «Черновик» , а затем выберите название вашего эксперимента.
  3. Чтобы убедиться, что в вашем приложении есть пользователи, которые подойдут для вашего эксперимента, разверните черновик и проверьте, не превышает ли число 0% в разделе «Таргетинг и распространение» (например, 1% пользователей, соответствующих критериям ).
  4. Чтобы изменить параметры эксперимента, нажмите «Редактировать» .
  5. Чтобы начать эксперимент, нажмите « Начать эксперимент» . В рамках одного проекта можно одновременно проводить до 24 экспериментов.

Мониторинг эксперимента

После того как эксперимент продлится некоторое время, вы можете отслеживать его ход и видеть результаты для пользователей, которые уже приняли в нем участие.

  1. В разделе Engage навигационного меню консоли Firebase нажмите A/B Testing .
  2. Нажмите «Бег» , а затем выберите или найдите название вашего эксперимента. На этой странице вы можете просмотреть различные наблюдаемые и смоделированные статистические данные о вашем эксперименте по бегу, включая следующие:

    • Процентное отклонение от базового уровня : Показатель улучшения метрики для данного варианта по сравнению с базовым уровнем. Рассчитывается путем сравнения диапазона значений для варианта с диапазоном значений для базового уровня.
    • Вероятность превзойти базовый показатель : оценочная вероятность того, что данный вариант превзойдет базовый показатель по выбранной метрике.
    • observed_metric per user : На основе результатов эксперимента это прогнозируемый диапазон, в который будет попадать значение метрики с течением времени.
    • Total observed_metric : The observed cumulative value for the baseline or variant. The value is used to measure how well each experiment variant performs, and is used to calculate Improvement , Value range , Probability to beat baseline , and Probability to be the best variant . Depending on the metric being measured, this column may be labeled "Duration per user," "Revenue per user," "Retention rate," or "Conversion rate."
  3. После того, как ваш эксперимент продлится некоторое время (не менее 7 дней для FCM и In-App Messaging или 14 дней для Remote Config ), данные на этой странице укажут, какой вариант, если таковой имеется, является «лидером». Некоторые измерения сопровождаются гистограммой, которая представляет данные в визуальном формате.

Провести эксперимент для всех пользователей.

После того, как эксперимент продлится достаточно долго и выявите «лидера», или выигрышный вариант, для целевого показателя, вы можете запустить эксперимент для 100% пользователей. Это позволит вам выбрать вариант, который будет доступен всем пользователям в дальнейшем. Даже если ваш эксперимент не выявил явного победителя, вы все равно можете выбрать вариант, доступный всем пользователям.

  1. В разделе Engage навигационного меню консоли Firebase нажмите A/B Testing .
  2. Нажмите «Завершено» или «Выполняется» , выберите эксперимент, который хотите запустить для всех пользователей, затем нажмите контекстное меню ( ) и выберите «Развернуть вариант» .
  3. Для запуска эксперимента на всех пользователях выполните одно из следующих действий:

    • Для эксперимента, использующего редактор уведомлений , воспользуйтесь диалоговым окном «Отправить сообщение» , чтобы отправить сообщение оставшимся целевым пользователям, которые не участвовали в эксперименте.
    • For a Remote Config experiment, select a variant to determine which Remote Config parameter values to update. The targeting criteria defined when creating the experiment is added as a new condition in your template, to ensure the rollout only affects users targeted by the experiment. After clicking Review in Remote Config to review the changes, click Publish changes to complete the rollout.
    • Для эксперимента In-App Messaging используйте диалоговое окно, чтобы определить, какой вариант необходимо запустить в качестве отдельной кампании In-App Messaging . После выбора вы будете перенаправлены на экран создания сообщения в FIAM, где сможете внести необходимые изменения перед публикацией.

Расширить эксперимент

Если вы обнаружите, что эксперимент не привлекает достаточно пользователей для того, чтобы A/B Testing выявило лидера, вы можете расширить распространение эксперимента, чтобы охватить большую часть пользовательской базы приложения.

  1. В разделе Engage навигационного меню консоли Firebase нажмите A/B Testing .
  2. Выберите запущенный эксперимент, который хотите отредактировать.
  3. В разделе «Обзор эксперимента» щелкните контекстное меню ( ), а затем выберите «Редактировать запущенный эксперимент» .
  4. В диалоговом окне «Таргетинг» отображается возможность увеличить процент пользователей, участвующих в текущем эксперименте. Выберите число, превышающее текущий процент, и нажмите «Опубликовать» . Эксперимент будет запущен для указанного вами процента пользователей.

Повторите или прекратите эксперимент.

  1. В разделе Engage навигационного меню консоли Firebase нажмите A/B Testing .
  2. Нажмите «Завершено» или «Выполняется» , наведите указатель мыши на свой эксперимент, щелкните контекстное меню ( ), а затем выберите «Дублировать эксперимент» или «Остановить эксперимент» .

Идентификация веб-клиента и сохранение результатов экспериментов

Когда пользователь впервые запускает веб-приложение с использованием Firebase A/B Testing в браузере, генерируется уникальный идентификатор установки Firebase (FID). Этот FID постоянно хранится в IndexedDB браузера для идентификации экземпляра приложения в разных сессиях.

Firebase A/B Testing идентификатор FID используется для распределения пользователей по вариантам эксперимента, а Google Analytics — для агрегации событий с целью измерения и анализа поведения пользователей в каждом варианте.

Поскольку идентификатор приложения (FID) хранится в IndexedDB, Firebase A/B Testing рассматривает пользователя как нового, если он заходит в ваше приложение из другого браузера, в режиме инкогнито/приватного окна или если он очищает IndexedDB своего браузера. Это означает, что пользователь может быть включен в разные варианты эксперимента при использовании разных браузеров или сеансов просмотра.

Целевой пользователь

Вы можете выбрать пользователей для участия в эксперименте, используя следующие критерии таргетирования.

Критерий целевого назначения Оператор(ы) Ценности) Примечание
Версия содержит,
не содержит
точно совпадает,
содержит регулярное выражение
Введите значение для одной или нескольких версий приложения, которые вы хотите включить в эксперимент.

При использовании любого из операторов «содержит» , «не содержит» или «точно совпадает » можно указать список значений, разделенных запятыми.

При использовании оператора `contains` можно создавать регулярные выражения в формате RE2 . Ваше регулярное выражение может соответствовать всей целевой строке версии или её части. Также можно использовать якоря `^` и `$` для сопоставления начала, конца или всей целевой строки.

Целевая аудитория пользователей включает в себя все,
включает как минимум один из следующих пунктов:
не включает все,
не включает как минимум один из
Выберите одну или несколько целевых аудиторий Analytics , чтобы нацелить их на пользователей, которые могут быть включены в ваш эксперимент. Для некоторых экспериментов, ориентированных на аудитории Google Analytics может потребоваться несколько дней для сбора данных, поскольку они подвержены задержкам обработки данных Analytics . Чаще всего эта задержка встречается у новых пользователей, которые обычно добавляются в соответствующие аудитории через 24-48 часов после создания, или у недавно созданных аудиторий .
Свойство пользователя Для текста:
содержит,
не содержит
точно совпадает,
содержит регулярное выражение

Для чисел:
<, ≤, =, ≥, >
Свойство пользователя Analytics используется для выбора пользователей, которые могут быть включены в эксперимент, при этом предлагается ряд вариантов выбора значений этого свойства.

На стороне клиента для пользовательских свойств можно задавать только строковые значения. Для условий, использующих числовые операторы, служба Remote Config преобразует значение соответствующего пользовательского свойства в целое число или число с плавающей запятой.
При использовании оператора `contains` можно создавать регулярные выражения в формате RE2 . Ваше регулярное выражение может соответствовать всей целевой строке версии или её части. Также можно использовать якоря `^` и `$` для сопоставления начала, конца или всей целевой строки.
Страна/Регион Н/Д Для отбора пользователей, которые могли бы быть включены в эксперимент, использовалась одна или несколько стран или регионов.
Языки Н/Д Для отбора пользователей, которые могут быть включены в эксперимент, использовались один или несколько языков и языковых настроек.
Первый открытый Больше, чем
Меньше, чем
Между
Настраивайте таргетинг на пользователей в зависимости от того, когда они впервые открыли ваше приложение, с указанием количества дней.
Последнее взаимодействие с приложением Больше, чем
Меньше, чем
Между
Настраивайте таргетинг на пользователей на основе времени их последнего взаимодействия с вашим приложением, указанного в днях.

Метрики A/B Testing

When you create your experiment, you choose a primary, or goal metric, that is used to determine the winning variant. You should also track other metrics to help you better understand each experiment variant's performance and track important trends that may differ for each variant, like user retention, app stability and in-app purchase revenue. You can track up to five non-goal metrics in your experiment.

For example, say you've added new in-app purchases to your app and want to compare the effectiveness of two different "nudge" messages. In this case, you might decide to choose to set Purchase revenue as your goal metric because you want the winning variant to represent the notification that resulted in the highest in-app purchase revenue. And because you also want to track which variant resulted in more future conversions and retained users, you might add the following in Other metrics to track :

  • Примерный общий доход , чтобы увидеть, как ваш совокупный доход от внутриигровых покупок и рекламы различается в двух вариантах.
  • Показатели удержания пользователей (1 день) , удержания (2-3 дня) , удержания (4-7 дней) используются для отслеживания ежедневного/еженедельного уровня удержания пользователей.

В приведенных ниже таблицах подробно описано, как рассчитываются целевые показатели и другие метрики.

Целевые показатели

Метрика Описание
Пользователи без сбоев Процент пользователей, которые не столкнулись с ошибками в вашем приложении, обнаруженными SDK Firebase Crashlytics во время эксперимента.

Примечание: Firebase Crashlytics не поддерживается для веб-приложений.

Предполагаемый доход от рекламы Предполагаемый доход от рекламы.
Предполагаемый общий доход Совокупная стоимость покупки и предполагаемые доходы от рекламы.
Доход от покупки Суммарное значение для всех событий, связанных purchase и in_app_purchase .
Срок хранения (1 день) Количество пользователей, которые ежедневно возвращаются в ваше приложение.
Сохранение эффекта (2-3 дня) Количество пользователей, которые возвращаются в ваше приложение в течение 2-3 дней.
Срок хранения (4-7 дней) Количество пользователей, которые возвращаются в ваше приложение в течение 4-7 дней.
Срок хранения (8-14 дней) Количество пользователей, которые возвращаются в ваше приложение в течение 8-14 дней.
Сохранение данных (более 15 дней) Количество пользователей, которые возвращаются в ваше приложение через 15 или более дней после последнего использования.
первый_открытый Analytics событие, которое срабатывает при первом открытии пользователем приложения после его установки или переустановки. Используется как часть воронки конверсии.

Другие показатели

Метрика Описание
уведомление_отклонить Событие 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 , информация о принадлежности к экспериментам и вариантам хранится в таблицах событий Google Analytics Analytics .

Свойства пользователя, содержащие информацию об эксперименте, имеют вид userProperty.key like "firebase_exp_%" или userProperty.key = "firebase_exp_01" где 01 — идентификатор эксперимента, а userProperty.value.string_value содержит (начиная с нуля) индекс варианта эксперимента.

Вы можете использовать эти пользовательские свойства эксперимента для извлечения данных эксперимента. Это дает вам возможность анализировать результаты эксперимента различными способами и независимо проверять результаты A/B Testing .

Для начала выполните следующие действия, как описано в этом руководстве:

  1. Включите экспорт BigQuery для Google Analytics в консоли Firebase.
  2. Получите доступ к данным A/B Testing с помощью BigQuery
  3. Изучите примеры запросов.

Включите экспорт BigQuery для Google Analytics в консоли Firebase.

Если вы используете тарифный план Spark, вы можете бесплатно использовать песочницу BigQuery для доступа к BigQuery , с учетом ограничений песочницы . Дополнительную информацию см. в разделах «Цены» и «Песочница BigQuery .

Во-первых, убедитесь, что вы экспортируете данные Analytics в BigQuery :

  1. Откройте вкладку «Интеграции» , доступ к которой можно получить через > «Настройки проекта» в консоли Firebase .
  2. Если вы уже используете BigQuery с другими сервисами Firebase, нажмите «Управление» . В противном случае нажмите «Связать» .
  3. Ознакомьтесь с информацией о подключении Firebase к BigQuery , затем нажмите «Далее» .
  4. В разделе «Настройка интеграции» включите переключатель Google Analytics .
  5. Выберите регион и укажите параметры экспорта.

  6. Перейдите по ссылке на BigQuery .

В зависимости от выбранного вами способа экспорта данных, доступность таблиц может занять до суток. Для получения дополнительной информации об экспорте проектных данных в BigQuery см. раздел «Экспорт проектных данных в BigQuery .

Доступ к данным A/B Testing в BigQuery

Перед тем как запрашивать данные для конкретного эксперимента, вам потребуется получить некоторые или все из следующих данных, которые вы сможете использовать в своем запросе:

  • Идентификатор эксперимента: его можно получить из URL-адреса страницы обзора эксперимента . Например, если ваш URL-адрес выглядит так: https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25 , то идентификатор эксперимента равен 25 .
  • Идентификатор ресурса Google Analytics : это ваш 9-значный идентификатор ресурса Google Analytics . Вы можете найти его в Google Analytics ; он также отображается в BigQuery когда вы разворачиваете название своего проекта, чтобы показать название вашей таблицы событий Google Analytics ( project_name.analytics_000000000.events ).
  • Experiment date: To compose a faster and more efficient query, it's good practice to limit your queries to the Google Analytics daily event table partitions that contain your experiment data—tables identified with a YYYYMMDD suffix. So, if your experiment ran from February 2, 2024 through May 2, 2024, you'd specify a _TABLE_SUFFIX between '20240202' AND '20240502' . For an example, see Select a specific experiment's values .
  • Названия событий: Как правило, они соответствуют целевым показателям , которые вы настроили в эксперименте. Например, события in_app_purchase , ad_impression или события user_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

Для получения дополнительных примеров запросов перейдите в раздел «Изучить примеры запросов» .

Изучите примеры запросов.

В следующих разделах приведены примеры запросов, которые можно использовать для извлечения данных экспериментов A/B Testing из таблиц событий Google Analytics .

Извлеките значения стандартного отклонения для покупок и экспериментов из всех проведенных экспериментов.

You can use experiment results data to independently verify Firebase A/B Testing results. The following BigQuery SQL statement extracts experiment variants, the number of unique users in each variant, and sums total revenue from in_app_purchase and ecommerce_purchase events, and standard deviations for all experiments within the time range specified as the _TABLE_SUFFIX begin and end dates. You can use the data you obtain from this query with a statistical significance generator for one-tailed t-tests to verify that the results Firebase provides match your own analysis.

Для получения более подробной информации о том, как 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