[GA4] Зразки запитів для аудиторій на основі даних BigQuery

Експортувавши дані Firebase у BigQuery, ви можете надсилати запити на отримання таких даних для певних аудиторій.

У цій статті наведено кілька шаблонів, які можна взяти за основу під час створення запитів. Додайте в зразки запитів власні дані, наприклад, замініть назви та змініть діапазони дат.

Ці запити повертають кількість користувачів в аудиторії. Якщо ви хочете натомість отримати список ідентифікаторів користувачів в аудиторії, тоді вилучіть зовнішню функцію 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 днів = користувачі, для яких зареєстровано принаймні одну подію 
 * з параметром engagement_time_msec > 0 за останні N днів.
*/

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 днів, для яких не зареєстровано подію 
 * з параметром engagement_time_msec > 0 протягом останніх N днів, 
 * де 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;
  
  

Часто активні користувачі

/**
 * Створює аудиторію часто активних користувачів.
 *
 * Часто активні користувачі = користувачі, для яких зареєстровано принаймні одну
 * подію з параметром engagement_time_msec > 0 за N з 
 * останніх M днів, де 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
  );

  

Високоактивні користувачі

/**
 * Створює аудиторію високоактивних користувачів.
 *
 * Високоактивні користувачі = користувачі, які були активні понад N хвилин
 * протягом останніх M днів, де 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';
  
  

Чи корисна ця інформація?

Як можна її покращити?
Пошук
Очистити пошук
Закрити пошук
Головне меню
17349536739826467474
true
Пошук у довідковому центрі
true
true
true
true
true
69256
false
false