Eksportavę „Firebase“ duomenis į „BigQuery“, galite teikti šių konkrečių auditorijų duomenų užklausas.
Šiame straipsnyje pateikiami įvairūs šablonai, pagal kuriuos galite kurti užklausas. Nepamirškite pakeisti pavyzdinių užklausų pagal savo konkrečius duomenis, pvz., pakeiskite lentelių pavadinimus ir dienų sekas.
Vykdant šias užklausas pateikiamas auditorijos naudotojų skaičius. Jei norite gauti auditorijos naudotojų ID sąrašą, pašalinkite tolimiausią parametrą COUNT(), pvz., COUNT(DISTINCT user_id) --> DISTINCT user_id.
Šioms užklausoms naudojamas standartinis SQL, todėl būtinai nurodykite šią parinktį prieš vykdydami užklausą. (Skiltyje BigQuery > SQL Workspace („BigQuery“ > „SQL darbo sritis“) spustelėkite More > Query Settings („Daugiau“ > „Užklausų nustatymai“). Skiltyje Additional Settings > SQL dialect („Papildomi nustatymai“ > „SQL dialektas“) pasirinkite Standard („Standartinis“).)
Šiuo metu šie auditorijos duomenys teikiami tik informaciniais tikslais, jų negalima naudoti auditorijų analizei.
Norėtume sužinoti, ar šie užklausų pavyzdžiai jums naudingi ir ar norėtumėte teikti kokių nors kitų tipų auditorijų užklausas. Galite atsakyti pateikdami funkcijos užklausą „Firebase“ palaikymo komandai.
Šiame straipsnyje pateiktos toliau nurodytos skiltys.
Pirkėjai
/**
* Skaičiuojama pirkėjų auditorija.
*
* Pirkėjai = naudotojai, kurie užregistravo įvykį „in_app_purchase“ arba
* „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 d. aktyvūs naudotojai
/**
* Sukuriama N d. aktyvių naudotojų auditorija.
*
* N d. aktyvūs naudotojai = naudotojai, kurie užregistravo bent vieną įvykį naudodami įvykio parametrą
* „engagement_time_msec“ > 0 per pastar. N d.
*/
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 d. neaktyvūs naudotojai
/**
* Sukuriama N d. neaktyvių naudotojų auditorija.
*
* N d. neaktyvūs naudotojai = naudotojai per pastarąsias M d., kurie neužregistravo nė vieno
* įvykio su įvykio parametru „engagement_time_msec“ > 0 per pastarąsias N d.,
* kai 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;
Dažnai aktyvūs naudotojai
/**
* Sukuriama dažnai aktyvių naudotojų auditorija.
*
* Dažnai aktyvūs naudotojai = naudotojai, kurie užregistravo bent vieną
* įvykį su įvykio parametru „engagement_time_msec“ > 0 per N iš
* pastarųjų M d., kai 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
);
Labai aktyvūs naudotojai
/**
* Sukuriama labai aktyvių naudotojų auditorija.
*
* Labai aktyvūs naudotojai = naudotojai, kurie buvo aktyvūs ilgiau nei N min.
* per pastar. M d., kai 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
);
Įgyti naudotojai
/**
* Sukuriama įgytų naudotojų auditorija.
*
* Įgyti naudotojai = naudotojai, kuriuos pritraukėte naudodami tam tikrą šaltinį, terpę ar kampaniją.
*/
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';
Grupės su filtrais
/**
* Sukuriama auditorija iš naudotojų, įgytų praėjusią savaitę
* per „Google“ kampanijas (pvz., grupių su filtrais).
*
* Grupė apibrėžiama kaip naudotojai, įgyti praėjusią savaitę, t. y. prieš
* 7–14 d. Grupės filtras taikomas naudotojams, įgytiems per tiesioginę
* kampaniją.
*/
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';