[GA4] Exemple de interogări pentru segmentele de public pe baza datelor BigQuery

După ce exportați datele Firebase în BigQuery, puteți interoga aceste date pentru anumite segmente de public.

Acest articol oferă o serie de șabloane pe care le puteți folosi ca bază pentru interogările dvs. Nu uitați să modificați exemplele de interogări în funcție de specificul datelor dvs., de exemplu, să modificați numele tabelelor și intervalele de date.

Aceste interogări returnează numărul de utilizatori din public. Dacă doriți să obțineți lista de coduri de utilizator din public, eliminați ultima funcție COUNT(), de exemplu, COUNT(DISTINCT user_id) --> DISTINCT user_id.

Aceste interogări folosesc SQL standard, deci selectați această opțiune înainte de a rula o interogare. (În BigQuery > Spațiul de lucru SQL, dați clic pe Mai multe > Setări pentru interogări. În Setări suplimentare > Dialect SQL, selectați Standard.)

Aceste date despre public sunt doar informative, nu se pot folosi.

Ne-ar plăcea să aflăm dacă găsiți utile aceste exemple de interogări și dacă există și alte tipuri de segmente de public pentru care doriți să faceți interogări. Puteți răspunde prin intermediul unei solicitări de funcții către asistența Firebase.

 

În acest articol:

Cumpărători

/**
 * Calculează publicul alcătuit din cumpărători.
 *
 * Cumpărători = utilizatorii care au înregistrat fie in_app_purchase, fie
 * 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';
  
  

Utilizatori activi pe o perioadă de N zile

/**
 * Creează un segment de public alcătuit din utilizatori activi pe o perioadă de N zile.
 *
 * Utilizatori activi pe o perioadă de N zile = utilizatorii care au înregistrat cel puțin un eveniment cu parametrul de eveniment 
 * engagement_time_msec > 0 în ultimele N zile.
*/

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

Utilizatori inactivi pe o perioadă de N zile

/**
 * Creează un public alcătuit din utilizatori inactivi pe o perioadă de N zile.
 *
 * Utilizatori inactivi pe o perioadă de N zile = utilizatorii din ultimele M zile care nu au înregistrat un 
 * eveniment cu parametrul de eveniment engagement_time_msec > 0 în ultimele N zile 
 * unde 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;
  
  

Utilizatori frecvent activi

/**
 * Creează un public alcătuit din utilizatori frecvent activi.
 *
 * Utilizatori frecvent activi = utilizatorii care au înregistrat cel puțin
 * eveniment cu parametrul de eveniment engagement_time_msec > 0 în N din 
 * ultimele M zile, unde 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
  );

  

Utilizatori foarte activi

/**
 * Creează un public alcătuit din utilizatori foarte activi.
 *
 * Utilizatori foarte activi = utilizatorii care au fost activi mai mult de N minute
 * din ultimele M zile, unde 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
  );

  

Utilizatori dobândiți

/**
 * Creează un public alcătuit din utilizatori dobândiți.
 *
 * Utilizatori dobândiți = utilizatorii care au fost obținuți prin intermediul unei surse/modalități/campanii.
 */
 
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';
  
  

Grupuri cu filtre

/**
 * Creează un public alcătuit din utilizatorii dobândiți săptămâna anterioară
 * prin intermediul campaniilor Google, adică grupuri cu filtre.
 *
 * Grupul reprezintă utilizatorii dobândiți săptămâna anterioară, adică în urmă cu
 * 7 – 14 zile. Filtrul pentru grupuri este destinat utilizatorilor dobândiți prin intermediul unei
 * campanii directe.
 */
 
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';
  
  

A fost util?

Cum putem să îmbunătățim această pagină?
Căutare
Șterge căutarea
Închide căutarea
Meniu principal
2224419971780636912
true
Căutaţi în Centrul de ajutor
true
true
true
true
true
69256
false
false