След като експортирате данните си от Firebase в BigQuery, можете да изпращате заявки за тях за конкретни аудитории.
В тази статия ще намерите няколко шаблона, които можете да използвате като основа за заявките си. Не забравяйте да промените примерните заявки, за да вземете предвид подробностите за данните си, например трябва да промените имената на таблиците и периодите от време.
Тези заявки извеждат броя на потребителите в аудиторията. Ако вместо това искате да получите списък с идентификаторите на потребителите, премахнете най-външната функция COUNT(), например COUNT(DISTINCT user_id) --> DISTINCT user_id.
Тези заявки използват стандартен SQL, така че не забравяйте да изберете тази опция, преди да пуснете заявка. (В BigQuery > SQL Workspace кликнете върху Още > Настройки на заявката. Под Допълнителни настройки > SQL диалект изберете Стандартен.)
Понастоящем тези данни за аудиториите са само за информация, а не за предприемане на действия.
Ще се радваме да разберем дали примерните заявки са Ви били полезни и дали има други типове аудитории, за които бихте искали да изпращате заявки. Можете да отговорите чрез заявка за функция към екипа за поддръжка на Firebase.
В тази статия:
Купувачи
/**
* Изчисляване на аудиторията от купувачи.
*
* Купувачи = потребители, които са регистрирали in_app_purchase или
* 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 дни
/**
* Създаване на аудитория от активни потребители от N дни.
*
* Активни потребители от N дни = потребители, които са регистрирали поне едно събитие с параметър
* engagement_time_msec > 0 през последните N дни.
*/
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 дни
/**
* Създаване на аудитория от неактивни потребители от N дни.
*
* Неактивни потребители от N дни = потребители през последните M дни, които не са регистрирали нито едно
* събитие с параметър engagement_time_msec > 0 през последните N дни,
* където 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;
Често активни потребители
/**
* Създаване на аудитория от често активни потребители.
*
* Често активни потребители = потребители, които са регистрирали поне едно
* събитие с параметър engagement_time_msec > 0 през N от
* последните M дни, където 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
);
Силно активни потребители
/**
* Създаване на аудитория от силно активни потребители.
*
* Силно активни потребители = потребители, които са били активни за повече от N минути
* през последните M дни, където 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
);
Придобити потребители
/**
* Създаване на аудитория от придобити потребители.
*
* Придобити потребители = потребители, които са били придобити чрез източник/носител/кампания.
*/
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';
Кохорти с филтри
/**
* Създаване на аудитория, съставена от придобити потребители през последната седмица
* от кампании в Google, т.е. кохорти с филтри.
*
* Кохортата се определя като придобити потребители през последната седмица, т.е. преди 7 – 14
* дни. Филтърът за кохортата е за придобити потребители чрез директна
* кампания.
*/
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';