[GA4] BigQuery 데이터를 기준으로 한, 잠재고객에 대한 샘플 쿼리

Firebase 데이터를 BigQuery로 내보내면 특정 잠재고객에 대한 데이터를 쿼리할 수 있습니다.

이번 도움말에서는 쿼리할 때 기본으로 사용할 수 있는 여러 템플릿에 대해 설명합니다. 예제 쿼리를 수정하면 테이블 이름을 변경하거나 기간을 수정하는 등 자세한 데이터 정보를 처리할 수 있습니다.

이 쿼리는 잠재고객의 사용자 수를 반환합니다. 그렇지 않고 잠재고객의 User ID 목록을 가져오려면 가장 바깥쪽에 있는 COUNT() 함수를 삭제해야 합니다(예: COUNT(DISTINCT user_id) --> DISTINCT user_id).

이 쿼리는 표준 SQL을 사용하므로 쿼리를 실행하기 전에 해당 옵션을 선택해야 합니다. BigQuery > SQL 작업공간에서 더보기 > 쿼리 설정을 클릭합니다. 추가 설정 > SQL 언어에서 표준을 선택합니다.

현재 이 잠재고객 데이터는 참고용일 뿐, 실제로 사용할 수는 없습니다.

이번 쿼리가 유용한지, 그리고 쿼리를 실행하고 싶은 다른 유형의 잠재고객이 있는지 알려주시면 감사하겠습니다. 의견은 Firebase 지원에서 기능 요청을 통해 제공하실 수 있습니다.

 

이 도움말에서는 다음 내용을 다룹니다.

구매자

/**
 * 구매자의 잠재고객을 계산합니다.
 *
 * 구매자 = in_app_purchase 또는 purchase를 기록한 사용자.
 */
 
SELECT
  COUNT(DISTINCT user_id) AS purchasers_count
FROM
  -- PLEASE REPLACE WITH YOUR TABLE NAME.
  `YOUR_TABLE.events_*`
WHERE
  event_name IN ('in_app_purchase', 'purchase')
  -- PLEASE REPLACE WITH YOUR DESIRED DATE RANGE
  AND _TABLE_SUFFIX BETWEEN '20180501' AND '20240131';
  
  

N일 활성 사용자

/**
 * N일 활성 사용자의 잠재고객을 구축합니다.
 *
 * N일 활성 사용자 = 지난 N일 동안 이벤트 매개변수가 
 * engagement_time_msec > 0인 이벤트를 하나 이상 기록한 사용자.
*/

SELECT
  COUNT(DISTINCT user_id) AS n_day_active_users_count
FROM
  -- PLEASE REPLACE WITH YOUR TABLE NAME.
  `YOUR_TABLE.events_*` AS T
    CROSS JOIN
      T.event_params
WHERE
  event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
  -- Pick events in the last N = 20 days.
  AND event_timestamp >
      UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 20 DAY))
  -- PLEASE REPLACE WITH YOUR DESIRED DATE RANGE.
  AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131';
  
  

N일 비활성 사용자

/**
 * N일 비활성 사용자의 잠재고객을 구축합니다.
 *
 * N일 비활성 사용자 = 지난 M일 중에서 N일 동안
 * 이벤트 매개변수가 engagement_time_msec > 0인 이벤트를 기록하지 않은 사용자, 
 * 여기에서 M > N.
 */

 
SELECT
  COUNT(DISTINCT MDaysUsers.user_id) AS n_day_inactive_users_count
FROM
  (
    SELECT
      user_id
    FROM
      /* PLEASE REPLACE WITH YOUR TABLE NAME */
      `YOUR_TABLE.events_*` AS T
    CROSS JOIN
      T.event_params
    WHERE
      event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
      /* Has engaged in last M = 7 days */
      AND event_timestamp >
          UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY))
      /* PLEASE REPLACE WITH YOUR DESIRED DATE RANGE */
      AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
  ) AS MDaysUsers
-- EXCEPT ALL is not yet implemented in BigQuery. Use LEFT JOIN in the interim.
LEFT JOIN
  (
    SELECT
      user_id
    FROM
      /* PLEASE REPLACE WITH YOUR TABLE NAME */
      `YOUR_TABLE.events_*`AS T
    CROSS JOIN
      T.event_params
    WHERE
      event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
      /* Has engaged in last N = 2 days */
      AND event_timestamp >
          UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY))
      /* PLEASE REPLACE WITH YOUR DESIRED DATE RANGE */
      AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
  ) AS NDaysUsers
  ON MDaysUsers.user_id = NDaysUsers.user_id
WHERE
  NDaysUsers.user_id IS NULL;
  
  

높은 빈도의 활성 사용자

/**
 * 높은 빈도의 활성 사용자의 잠재고객을 구축합니다.
 *
 * 높은 빈도의 활성 사용자 = 지난 M일 중에서 N일 동안
 * 이벤트 매개변수가 engagement_time_msec > 0인 이벤트를 하나 이상 기록한 사용자, 
 * 여기에서 M > N.
 */

 
SELECT
  COUNT(DISTINCT user_id) AS frequent_active_users_count
FROM
  (
    SELECT
      user_id,
      COUNT(DISTINCT event_date)
    FROM
      -- PLEASE REPLACE WITH YOUR TABLE NAME.
      `YOUR_TABLE.events_*` AS T
    CROSS JOIN
      T.event_params
    WHERE
      event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
      -- User engagement in the last M = 10 days.
      AND event_timestamp >
          UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 10 DAY))
      -- PLEASE REPLACE YOUR DESIRED DATE RANGE.  For optimal performance
      -- the _TABLE_SUFFIX range should match the INTERVAL value above.
      AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
    GROUP BY 1
    -- Having engaged in at least N = 4 days.
    HAVING COUNT(event_date) >= 4
  );

  

적극적인 활성 사용자

/**
 * 적극적인 활성 사용자의 잠재고객을 구축합니다.
 *
 * 적극적인 활성 사용자 = 지난 M일 동안 N분 이상 활동한 사용자, 여기에서 M > N.
*/

SELECT
  COUNT(DISTINCT user_id) AS high_active_users_count
FROM
  (
    SELECT
      user_id,
      event_params.key,
      SUM(event_params.value.int_value)
    FROM
      -- PLEASE REPLACE WITH YOUR TABLE NAME.
      `YOUR_TABLE.events_*` AS T
    CROSS JOIN
      T.event_params
    WHERE
      -- User engagement in the last M = 10 days.
      event_timestamp >
          UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 10 DAY))
      AND event_params.key = 'engagement_time_msec'
      -- PLEASE REPLACE YOUR DESIRED DATE RANGE.
      AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
    GROUP BY 1, 2
    HAVING
      -- Having engaged for more than N = 0.1 minutes.
      SUM(event_params.value.int_value) > 0.1 * 60 * 1000000
  );

  

획득된 사용자

/**
 * 획득된 사용자의 잠재고객을 구축합니다.
 *
 * 획득된 사용자 = 소스/매체/캠페인을 통해 획득된 사용자.
 */
 
SELECT
  COUNT(DISTINCT user_id) AS acquired_users_count
FROM
  -- PLEASE REPLACE WITH YOUR TABLE NAME.
  `YOUR_TABLE.events_*`
WHERE
  traffic_source.source = 'google'
  AND traffic_source.medium = 'cpc'
  AND traffic_source.name = 'VTA-Test-Android'
  -- PLEASE REPLACE YOUR DESIRED DATE RANGE.
  AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131';
  
  

필터가 있는 사용자 집단

/**
 * Google 캠페인을 통해 지난 주에 획득된 사용자, 즉, 필터가 있는 사용자 집단으로 구성된 잠재고객을 구축합니다.
 *
 * 사용자 집단은 지난 주, 즉 7~14일 전에 획득된 사용자로 정의됩니다. 사용자 집단 필터는 직접 캠페인을 통해 획득된 사용자를 위한 필터입니다.
 */
 
SELECT
  COUNT(DISTINCT user_id) AS users_acquired_through_google_count
FROM
  -- PLEASE REPLACE WITH YOUR TABLE NAME.
  `YOUR_TABLE.events_*`
WHERE
  event_name = 'first_open'
  -- Cohort: opened app 1-2 weeks ago. One week of cohort, aka. weekly.
  AND event_timestamp >
      UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 14 DAY))
  AND event_timestamp <
      UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY))
  -- Cohort filter: users acquired through 'google' source.
  AND traffic_source.source = 'google'
  -- PLEASE REPLACE YOUR DESIRED DATE RANGE.
  AND _TABLE_SUFFIX BETWEEN '20180501' AND '20240131';
  
  

도움이 되었나요?

어떻게 하면 개선할 수 있을까요?
검색
검색어 지우기
검색 닫기
기본 메뉴
11511035394316242178
true
도움말 센터 검색
true
true
true
true
true
69256
false
false