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

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

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

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

시작하려면 이 가이드의 설명대로 다음을 완료합니다.

  1. Firebase Console에서 Google AnalyticsBigQuery 내보내기 사용 설정
  2. BigQuery를 사용하여 A/B Testing 데이터에 액세스
  3. 쿼리 예시 살펴보기

Firebase Console에서 Google AnalyticsBigQuery 내보내기 사용 설정

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

먼저 Analytics 데이터를 BigQuery로 내보내고 있는지 확인합니다.

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

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

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

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

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

  • 실험 ID: 실험 개요 페이지의 URL에서 이 값을 가져올 수 있습니다. 예를 들어 URL이 https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25이면 실험 ID는 25입니다.
  • Google Analytics 속성 ID: 9자리 Google Analytics 속성 ID입니다. Google Analytics 내에서 찾을 수 있습니다. 프로젝트 이름을 확장하여 Google Analytics 이벤트 테이블 이름(project_name.analytics_000000000.events)을 표시하면 BigQuery에도 표시됩니다.
  • 실험일: 더 빠르고 효율적인 쿼리를 작성하려면 쿼리를 실험 데이터(YYYYMMDD 서픽스로 식별되는 테이블)가 포함된 Google Analytics 일일 이벤트 테이블 파티션으로 제한하는 것이 좋습니다. 실험이 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 Testing을 열고 쿼리하려는 A/B Testing 실험을 선택하여 실험 개요를 엽니다.
  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 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