BigQuery로 A/B 테스팅 데이터 검사

Firebase Console에서 A/B 테스팅 실험 데이터를 보는 것 외에도 BigQuery에서 실험 데이터를 검사하고 분석할 수 있습니다. A/B 테스팅에는 별도의 BigQuery 테이블이 없지만 실험 및 대안 멤버십은 애널리틱스 이벤트 테이블 내의 모든 Google 애널리틱스 이벤트에 저장됩니다.

실험 정보가 포함된 사용자 속성은 userProperty.key like "firebase_exp_%" 또는 userProperty.key = "firebase_exp_01" 형식이며, 여기서 01은 실험 ID이고 userProperty.value.string_value에는 실험 대안의 색인(0부터 시작)이 포함됩니다.

이러한 실험 사용자 속성을 사용하여 실험 데이터를 추출할 수 있습니다. 이를 통해 실험 결과를 다양한 방법으로 분할하고 A/B 테스팅의 결과를 독립적으로 검증할 수 있습니다.

시작하려면 이 가이드에 설명된 대로 다음을 완료하세요.

  1. Firebase Console에서 Google 애널리틱스에 BigQuery Export 사용 설정
  2. BigQuery를 사용하여 A/B 테스팅 데이터에 액세스
  3. 예시 쿼리 살펴보기

Firebase Console에서 Google 애널리틱스에 BigQuery Export 사용 설정

Spark 요금제를 사용 중인 경우 BigQuery 한도에 따라 BigQuery 샌드박스를 사용해 BigQuery에 무료로 액세스할 수 있습니다. 자세한 내용은 가격 책정 및 BigQuery 샌드박스를 참조하세요.

먼저 애널리틱스 데이터를 BigQuery로 내보내는지 확인합니다.

  1. 통합 탭(Firebase Console > 프로젝트 설정을 사용해 액세스 가능)을 엽니다.
  2. 이미 다른 Firebase 서비스와 함께 BigQuery를 사용하고 있는 경우 관리를 클릭합니다. 그렇지 않으면 연결을 클릭합니다.
  3. Firebase와 BigQuery 연결 정보를 검토한 후 다음을 클릭합니다.
  4. 통합 구성 섹션에서 Google 애널리틱스 전환 버튼을 사용 설정합니다.
  5. 지역을 선택하고 내보내기 설정을 선택합니다.

  6. BigQuery에 연결을 클릭합니다.

선택한 데이터 내보내기 방식에 따라 테이블을 사용할 수 있을 때까지 최대 하루가 걸릴 수 있습니다. 프로젝트 데이터를 BigQuery로 내보내는 방법에 대한 자세한 내용은 BigQuery에 프로젝트 데이터 내보내기를 참조하세요.

BigQuery에서 A/B 테스팅 데이터에 액세스

특정 실험 데이터를 쿼리하기 전에 쿼리에 사용할 다음의 일부 또는 전체를 얻는 것이 좋습니다.

  • 실험 ID: 실험 개요 페이지의 URL에서 이 값을 가져올 수 있습니다. 예를 들어 URL이 https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25와 같은 형식이면 실험 ID는 25입니다.
  • Google 애널리틱스 속성 ID: 9자리의 Google 애널리틱스 속성 ID입니다. Google 애널리틱스 내에서 이를 찾을 수 있습니다. 프로젝트 이름을 확장하여 Google 애널리틱스 이벤트 테이블 이름(project_name.analytics_000000000.events)을 표시할 때도 BigQuery에 표시됩니다.
  • 실험일: 더 빠르고 효율적인 쿼리를 작성하려면 실험 데이터(YYYYMMDD 접미사로 식별되는 테이블)가 포함된 Google 애널리틱스 일일 이벤트 테이블 파티션(테이블)으로 쿼리를 제한하는 것이 좋습니다. 따라서 실험이 2024년 2월 2일부터 2024년 5월 2일까지 진행되었다면 _TABLE_SUFFIX between '20240202' AND '20240502'를 지정합니다. 예를 보려면 특정 실험의 값 선택을 참조하세요.
  • 이벤트 이름: 일반적으로 실험에서 구성한 목표 측정항목과 일치합니다. 예를 들어 in_app_purchase 이벤트, ad_impression 또는 user_retention 이벤트입니다.
를 참조하세요.

쿼리를 생성하는 데 필요한 정보를 수집한 후에는 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 BigQuery를 엽니다.
  2. 프로젝트를 선택한 다음 SQL 쿼리 만들기를 선택합니다.
  3. 쿼리를 추가합니다. 실행할 쿼리 예시는 예시 쿼리 살펴보기를 참조하세요.
  4. 실행을 클릭합니다.

Firebase Console의 자동 생성된 쿼리를 사용하여 실험 데이터 쿼리

Blaze 요금제를 사용하는 경우 실험 개요 페이지에 보고 있는 실험의 실험 이름, 대안, 이벤트 이름, 실험의 이벤트 수를 반환하는 샘플 쿼리가 제공됩니다.

자동 생성된 쿼리를 가져와서 실행하는 방법은 다음과 같습니다.

  1. Firebase Console에서 A/B 테스팅을 열고 쿼리할 A/B 테스팅 실험을 선택하여 실험 개요를 엽니다.
  2. BigQuery 통합 아래의 옵션 메뉴에서 실험 데이터 쿼리를 선택합니다. 그러면 Google Cloud 콘솔 내의 BigQuery에서 프로젝트가 열리고 실험 데이터를 쿼리하는 데 사용할 수 있는 기본 쿼리가 제공됩니다.

다음 예시는 'Winter welcome experiment'이라는 이름의 3가지 대안(기준 포함)이 있는 실험에 대해 생성된 쿼리를 보여줍니다. 각 이벤트의 활성 실험 이름, 대안 이름, 순 이벤트, 이벤트 수를 반환합니다. 쿼리 빌더는 프로젝트 내에서 직접 열리므로 테이블 이름에 프로젝트 이름을 지정하지 않습니다.

  /*
    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 애널리틱스 이벤트 테이블에서 A/B 테스팅 실험 데이터를 추출하는 데 사용할 수 있는 쿼리의 예시를 보여줍니다.

모든 실험에서 구매 및 실험 표준 편차 값 추출

실험 결과 데이터를 사용하여 Firebase A/B 테스팅 결과를 독립적으로 확인할 수 있습니다. 다음 BigQuery SQL 문은 실험 대안 및 각 대안의 순 사용자 수를 추출하고 in_app_purchaseecommerce_purchase 이벤트에서 발생한 총수익과 _TABLE_SUFFIX 시작일과 종료일로 지정된 기간 내의 모든 실험의 표준 편차를 합산합니다. 이 쿼리에서 얻은 데이터를 단측 t-검정의 통계적 유의성 생성기와 함께 사용하여 Firebase가 제공하는 결과가 자체 분석과 일치하는지 확인할 수 있습니다.

A/B 테스팅에서 추론을 계산하는 방법에 관한 자세한 내용은 테스트 결과 해석을 참조하세요.

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