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