[GA4] Примерни заявки за аудитории въз основа на данни в BigQuery

След като експортирате данните си от Firebase в BigQuery, можете да изпращате заявки за тях за конкретни аудитории.

В тази статия ще намерите няколко шаблона, които можете да използвате като основа за заявките си. Не забравяйте да промените примерните заявки, за да вземете предвид подробностите за данните си, например трябва да промените имената на таблиците и периодите от време.

Тези заявки извеждат броя на потребителите в аудиторията. Ако вместо това искате да получите списък с идентификаторите на потребителите, премахнете най-външната функция COUNT(), например COUNT(DISTINCT user_id) --> DISTINCT user_id.

Тези заявки използват стандартен SQL, така че не забравяйте да изберете тази опция, преди да пуснете заявка. (В BigQuery > SQL Workspace кликнете върху Още > Настройки на заявката. Под Допълнителни настройки > 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';
  
  

Това полезно ли бе?

Как можем да направим подобрения?
Търсене
Изчистване на търсенето
Затваряне на търсенето
Главно меню
8981422782528158675
true
Търсене в Помощния център
true
true
true
true
true
69256
false
false