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

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

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

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

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

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

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

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

  2. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).

  3. Нажмите Create experiment (Создать эксперимент) и выберите Notifications (Уведомления), когда вам будет предложено указать сервис, с которым вы хотите провести эксперимент.

  4. Укажите название и, если нужно, описание эксперимента, а затем нажмите Далее.

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

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

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

  8. Если вы хотите добавить в эксперимент несколько вариантов, нажмите Добавить вариант. По умолчанию в эксперименте есть один базовый элемент и один вариант.

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

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

  11. Выберите параметры сообщения:

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

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

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

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

  1. Получите токен регистрации FCM, выполнив следующие действия:

    Swift

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

    Unity

    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 выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).
  3. Нажмите Проект, наведите указатель на эксперимент, откройте контекстное меню () и выберите Управление тестовыми устройствами.
  4. Введите токен FCM для тестового устройства и выберите вариант эксперимента, который нужно отправить на это устройство.
  5. Запустите приложение и убедитесь, что выбранный вариант получен на тестовом устройстве.

Как управлять экспериментом

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

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

Запуск эксперимента

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

Как отслеживать эксперимент

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

  1. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).
  2. Нажмите Выполняется, а затем выберите или найдите название эксперимента. На этой странице вы можете посмотреть различные наблюдаемые и смоделированные статистические данные о текущем эксперименте, в том числе:

    • % разницы с базовым вариантом. Мера улучшения показателя для определенного варианта по сравнению с базовым. Рассчитывается путем сравнения диапазона значений для варианта с диапазоном значений для базового значения.
    • Вероятность опережения базовой модели. Расчетная вероятность того, что определенный вариант превзойдет базовую модель по выбранному показателю.
    • observed_metric на пользователя. Прогнозируемый диапазон значений показателя, рассчитанный на основе результатов эксперимента.
    • Итоговое значение observed_metric. Наблюдаемое совокупное значение для контрольной или экспериментальной группы. Это значение используется для оценки эффективности каждого варианта эксперимента, а также для расчета улучшения, диапазона значений, вероятности опережения базовой модели и вероятности того, что вариант окажется лучшим. В зависимости от отслеживаемого показателя этот столбец может называться "Продолжительность на пользователя", "Доход на пользователя", "Показатель удержания" или "Коэффициент конверсии".
  3. После того как эксперимент продлится некоторое время (не менее 7 дней для FCM и In-App Messaging или 14 дней для Remote Config), на этой странице появятся данные о том, какой вариант является лидером. Некоторые показатели сопровождаются линейчатой диаграммой, которая представляет данные в визуальном формате.

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

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

  1. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).
  2. Нажмите Завершено или Выполняется, выберите эксперимент, который хотите применить ко всем пользователям, откройте контекстное меню и нажмите Применить вариант.
  3. Чтобы запустить эксперимент для всех пользователей, выполните одно из следующих действий:

    • Если вы проводили эксперимент с помощью Компоновщика уведомлений, используйте диалоговое окно Развернуть сообщение, чтобы отправить сообщение остальным целевым пользователям, которые не участвовали в эксперименте.
    • Для эксперимента Remote Config выберите вариант, чтобы определить, какие значения параметров Remote Config нужно обновить. Критерии таргетинга, заданные при создании эксперимента, будут добавлены в шаблон в качестве нового условия, чтобы развертывание затронуло только пользователей, на которых был нацелен эксперимент. Нажмите Проверить в Remote Config, чтобы посмотреть изменения, а затем – Опубликовать изменения, чтобы завершить развертывание.
    • Для эксперимента In-App Messaging используйте диалоговое окно, чтобы определить, какой вариант нужно запустить как отдельную кампанию In-App Messaging. После этого вы будете перенаправлены на экран создания сообщения, где сможете внести изменения перед публикацией.

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

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

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

Как скопировать или остановить эксперимент

  1. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).
  2. Нажмите Завершено или Выполняется, наведите указатель на эксперимент, откройте контекстное меню и выберите Дублировать эксперимент или Остановить эксперимент.

Таргетинг на пользователей

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

Критерий таргетинга Операторы Значения Примечание
Версия содержит;
не содержит;
точное соответствие;
содержит регулярное выражение.
Укажите одну или несколько версий приложения, которые вы хотите включить в эксперимент.

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

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

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

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

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

A/B Testing показателя

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

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

  • Расчетный общий доход. Позволяет сравнить общий доход от покупок в приложении и рекламы для двух вариантов.
  • Удержание (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 или более дней после последнего использования.
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, данные об участии в экспериментах и вариантах хранятся в каждом событии 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 перейдите в раздел Settings (Настройки) > Integrations (Интеграции).

  2. На карточке BigQuery нажмите Управление и убедитесь, что данные Analytics экспортируются в BigQuery.

    Если на карточке написано Связать, вам нужно настроить экспорт (перейдите к следующему шагу).

  3. Если вам нужно настроить экспорт:

    1. Ознакомьтесь с информацией в разделе О связывании Firebase с BigQuery и нажмите Далее.

    2. В разделе Configure integration (Настройка интеграции) включите Google Analytics.

    3. Выберите регион и настройки экспорта.

    4. Нажмите Связать с 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. Это девятизначный идентификатор ресурса Google Analytics. Его можно найти в Google Analytics. Он также появляется в BigQuery, когда вы разворачиваете название проекта, чтобы посмотреть название таблицы событий Google Analytics (project_name.analytics_000000000.events).
  • Дата эксперимента. Чтобы запрос выполнялся быстрее и эффективнее, рекомендуем ограничить его Google Analytics разделами таблицы ежедневных событий, которые содержат данные эксперимента. Такие таблицы имеют суффикс YYYYMMDD. Например, если эксперимент проводился со 2 февраля по 2 мая 2026 года, укажите _TABLE_SUFFIX between '20260202' AND '20260502'. Пример приведен в разделе Как выбрать значения для определенного эксперимента.
  • Названия событий. Обычно они соответствуют целевым показателям, которые вы настроили в эксперименте. Например, события in_app_purchase, ad_impression или user_retention.
…

После того как вы соберете информацию, необходимую для создания запроса:

  1. В консоли Google Cloud перейдите в раздел BigQuery.
  2. Выберите проект, затем выберите Создать SQL-запрос.
  3. Введите запрос. Примеры запросов приведены в разделе Примеры запросов.
  4. Нажмите Выполнить.

Как запрашивать данные эксперимента с помощью автоматически созданного запроса в консоли Firebase

Если вы используете тарифный план Blaze, на странице Обзор эксперимента будет доступен пример запроса, который возвращает название эксперимента, варианты, названия событий и количество событий для просматриваемого эксперимента.

Чтобы получить и выполнить автоматически созданный запрос, сделайте следующее:

  1. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).
  2. Выберите эксперимент A/B Testing, чтобы открыть обзор эксперимента.
  3. В меню параметров в разделе Интеграция с BigQuery выберите Запросить данные эксперимента. В консоли Google Cloud откроется ваш проект в BigQuery и появится базовый запрос, который можно использовать для получения данных об эксперименте.

Ниже приведен пример запроса, созданного для эксперимента с тремя вариантами (включая контрольный), который называется "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 '20260202' AND '20260502')
    AND userProperty.key = 'firebase_exp_25'
  GROUP BY
    experimentVariant, eventName

Дополнительные примеры запросов можно найти в статье Примеры запросов.

Примеры запросов

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

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

Вы можете использовать данные результатов эксперимента, чтобы самостоятельно проверить результаты Firebase A/B Testing. Следующая инструкция SQL BigQuery извлекает варианты эксперимента, количество уникальных пользователей в каждом варианте, а также суммирует общий доход от событий 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