Po exportovaní údajov z platformy Firebase do nástroja BigQuery môžete tieto údaje dopytovať pre konkrétne publiká.
V tomto článku je uvedených niekoľko šablón, ktoré môžete použiť ako základ pre dopyty. Nezabudnite upraviť vzorové dopyty tak, aby zodpovedali špecifikám vašich údajov. Zmeňte napríklad názvy tabuliek a upravte obdobia.
Tieto dopyty vracajú počet používateľov v publiku. Ak chcete radšej získať zoznam identifikátorov používateľov v publiku, odstráňte poslednú funkciu COUNT(), napr. COUNT(DISTINCT user_id) --> DISTINCT user_id.
Tieto dopyty používajú jazyk Standard SQL, preto nezabudnite pred spustením dopytu vybrať túto možnosť. (V sekcii BigQuery > SQL Workspace (Pracovný priestor SQL) kliknite na More (Viac) > Query Settings (Nastavenia dopytov). V sekcii Additional Settings (Ďalšie nastavenia) > SQL dialect (Dialekt jazyka SQL) vyberte možnosť Standard (Štandardný).)
V súčasnosti sú tieto údaje o publiku iba informatívne a neumožňujú vykonanie akcie.
Radi by sme sa dozvedeli, či považujete tieto príklady dopytov za užitočné a či by ste mali záujem zadávať dopyty aj pre iné typy publík. Odpovedať môžete prostredníctvom žiadosti o funkciu cez podporu platformy Firebase.
Obsah tohto článku:
Kupujúci
/**
* Počíta publikum kupujúcich.
*
* Kupujúci = používatelia, pri ktorých bol zaznamenaný atribút in_app_purchase
* alebo 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ívni používatelia za N dní
/**
* Vytvorí publikum aktívnych používateľov za N dní.
*
* Aktívni používatelia za N dní = používatelia, pri ktorých bola zaznamenaná aspoň jedna udalosť s parametrom udalosti
* engagement_time_msec > 0 za posledných N dní.
*/
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ívni používatelia za N dní
/**
* Vytvorí publikum neaktívnych používateľov za N dní.
*
* Neaktívni používatelia za N dní = používatelia za posledných M dní, pri ktorých nebola zaznamenaná jedna
* udalosť s parametrom udalosti engagement_time_msec > 0 za posledných N dní,
* kde 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;
Často aktívni používatelia
/**
* Vytvorí publikum často aktívnych používateľov.
*
* Často aktívni používatelia = používatelia, pri ktorých bola zaznamenaná aspoň jedna
* udalosť s parametrom udalosti engagement_time_msec > 0 v N z
* posledných M dní, kde 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
);
Vysoko aktívni používatelia
/**
* Vytvorí publikum vysoko aktívnych používateľov.
*
* Vysoko aktívni používatelia = používatelia, ktorí boli aktívni viac ako N minút
* (za posledných M dní, kde 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
);
Získaní používatelia
/**
* Vytvorí publikum získaných používateľov.
*
* Získaní používatelia = používatelia získaní prostredníctvom určitého zdroja, média alebo kampane.
*/
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';
Kohorty s filtrami
/**
* Vytvorí publikum z používateľov získaných minulý týždeň
* prostredníctvom kampaní Googlu, t. j. kohort s filtrami.
*
* Kohorta je definovaná ako používatelia získaní minulý týždeň,
* t. j. pred 7 až 14 dňami. Filter kohorty je určený pre používateľov získaných priamou
* kampaňou.
*/
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';