[GA4] Primjeri upita za publiku na temelju BigQuery podataka

Kad izvezete svoje Firebase podatke u BigQuery, možete slati upite za te podatke za određenu publiku.

Ovaj članak sadrži brojne predloške pomoću kojih možete izrađivati upite. Ne zaboravite izmijeniti one dijelove primjera upita koji se odnose na specifičnosti vaših podataka, npr. izmijenite nazive tablica i datumske raspone.

Ti upiti vraćaju broj korisnika u publici. Ako umjesto toga želite doći do popisa ID-jeva korisnika u publici, uklonite krajnju vanjsku funkciju COUNT(), npr. COUNT(DISTINCT user_id) --> DISTINCT user_id.

Ti upiti upotrebljavaju standardni SQL, pa svakako odaberite tu opciju prije pokretanja upita. (U odjeljku BigQuery > SQL radni prostor kliknite Više > Postavke upita. U odjeljku Dodatne postavke > SQL dijalekt odaberite Standardni.)

Ovi podaci o publici trenutačno ne omogućuju radnje, već služe samo za informativne svrhe.

Zanima nas jesu li vam ti primjeri upita korisni i postoje li druge vrste publike za koje želite slati upite. Možete odgovoriti putem zahtjeva za značajku Firebaseovoj podršci.

 

U ovom članku:

Kupci

/**
 * Računa broj publike ili kupaca.
 *
 * Kupci = korisnici koji su zabilježili događaj in_app_purchase ili
 * 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';
  
  

Korisnici aktivni N dana

/**
 * Izrađuje publiku koju čine korisnici aktivni N dan/a.
 *
 * N dan/a aktivni korisnici = korisnici koji su zabilježili barem jedan događaj s parametrom događaja 
 *engage_time_msec > 0 u posljednjih N dan/a.
*/

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';
  
  

Korisnici neaktivni N dana

/**
 * Izrađuje publiku korisnika neaktivnih N dan/a.
 *
 * Korisnici neaktivni N dan/a = korisnici u posljednjih M dana koji nisu zabilježili jedan događaj 
 * događaj s parametrom događaja engagement_time_msec > 0 u posljednjih N dana 
 * pri čemu je 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;
  
  

Često aktivni korisnici

/**
 * Izrađuje publiku koju čine često aktivni korisnici.
 *
 * Često aktivni korisnici = korisnici koji su zabilježili najmanje jedan
 * događaj s parametrom događaja engagement_time_msec > 0 N. od 
 * * posljednjih M dan/a, pri čemu je 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
  );

  

Vrlo aktivni korisnici

/**
 * Izrada publike vrlo aktivnih korisnika.
 *
 * Vrlo aktivni korisnici = korisnici koji su bili aktivni više od N minuta
 * u posljednjih M dana, gdje je 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
  );

  

Stečeni korisnici

/**
 * Izrada publike stečenih korisnika.
 *
 * Stečeni korisnici = korisnici koji su stečeni putem određenog izvora/medija/kampanje.
 */
 
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';
  
  

Skupine s filtrima

/**
 * Izrađuje publiku sastavljenu od korisnika stečenih prošlog tjedna
 * putem Google kampanja, tj. skupine s filtrima.
 *
 * Skupina se definira kao korisnici stečeni prošlog tjedna, tj. prije 7 – 14
 * dana. Filtar skupine za korisnike stečene putem izravne
 * kampanje.
 */
 
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';
  
  

Je li to bilo korisno?

Kako to možemo poboljšati?
Pretraživanje
Izbriši pretraživanje
Zatvaranje pretraživanja
Glavni izbornik
11327735998506974039
true
Pretraži Centar za pomoć
true
true
true
true
true
69256
false
false