Pēc Firebase datu eksportēšanas rīkā BigQuery, varēsiet izmantot šos datus, veidojot vaicājumus par konkrētām auditorijām.
Šajā rakstā ir sniegtas vairākas veidnes, ko varat izmantot vaicājumu veidošanai. Veiciet izmaiņas vaicājumu paraugos atbilstoši saviem datiem, piemēram, mainiet tabulu nosaukumus un datumu diapazonus.
Šie vaicājumi izgūst auditorijas lietotāju skaitu. Gadījumā, ja vēlaties iegūt auditorijas lietotāju ID, noņemiet ārējo funkciju COUNT(), piemēram, COUNT(DISTINCT user_id) --> DISTINCT user_id.
Šiem vaicājumiem tiek izmantotas standarta SQL funkcijas, tādēļ noteikti atlasiet šo opciju pirms vaicājuma izpildes. (Sadaļā BigQuery > SQL Workplace (SQL darbvieta) noklikšķiniet uz More > Query Options (Vēl > Vaicājumu iespējas). Sadaļā Additional Settings > SQL dialect (Papildu iestatījumi > SQL dialekts) atlasiet Standard (Standarta).)
Pašlaik šie auditoriju dati ir tikai informatīvi, nevis praktiski izmantojami.
Mēs labprāt uzzinātu, vai šie vaicājumu piemēri jums šķiet noderīgi un vai jūs vēlētos veidot vaicājumus arī par citu veidu auditorijām. Varat nosūtīt funkciju pieprasījumu Firebase atbalsta komandai.
Šajā rakstā ietvertās tēmas
Pircēji
/**
* Aprēķina pircēju auditoriju.
*
* Pircēji — lietotāji, kuriem reģistrēts notikums “in_app_purchase” vai
* 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';
Aktīvie lietotāji N dienu laikā
/**
* Tādu lietotāju auditorijas izveide, kuri bija aktīvi N dienu laikā.
*
* Aktīvie lietotāji N dienu laikā — lietotāji, kuriem pēdējās N dienās ir reģistrēts vismaz viens notikums ar notikuma parametru
* engage_time_msec > 0.
*/
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';
Neaktīvie lietotāji N dienu laikā
/**
* Tādu lietotāju auditorijas izveide, kuri nebija aktīvi N dienu laikā.
*
* Neaktīvie lietotāji N dienu laikā — lietotāji pēdējās M dienās, kuriem nav reģistrēts neviens notikums
* ar notikuma parametru engagement_time_msec > 0 pēdējo N dienu laikā
*, ņemot vērā, ka 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;
Bieži aktīvie lietotāji
/**
* Bieži aktīvo lietotāju auditorijas izveide.
*
* Bieži aktīvie lietotāji — lietotāji, kuriem reģistrēts vismaz viens
* notikums ar notikuma parametru engagement_time_msec > 0 N. no
* pēdējām M dienām, ņemot vērā, ka 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
);
Ļoti aktīvie lietotāji
/**
* Ļoti aktīvu lietotāju auditorijas izveide.
*
* Ļoti aktīvie lietotāji — lietotāji, kuri pēdējo N dienu laikā bijuši aktīvi vairāk nekā N min.
* pēdējo M dienu laikā, ņemot vērā, ka 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
);
Iegūtie lietotāji
/**
* Iegūto lietotāju auditorijas izveide.
*
* Iegūtie lietotāji — lietotāji, kuri iegūti, izmantojot kādu avotu/vidi/kampaņu.
*/
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';
Personu grupas ar filtriem
/**
* Tādu lietotāju auditorijas izveide, kuri iegūti iepriekšējā nedēļā
* ar Google kampaņu starpniecību, t.i., personu grupas ar filtriem.
*
* Personu grupa ir definēta kā lietotāji, kuri iegūti iepriekšējā nedēļā, t.i., pirms 7–14
* dienām. Personu grupas filtru izmanto lietotājiem, kuri iegūti tiešā
* kampaņā.
*/
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';