Setelah mengekspor data Firebase ke BigQuery, Anda dapat melakukan kueri terhadap data tersebut untuk audiens tertentu.
Artikel ini menyediakan sejumlah template yang dapat digunakan sebagai dasar untuk kueri Anda. Jangan lupa untuk memodifikasi kueri contoh agar sesuai dengan spesifikasi data Anda; misalnya, mengubah nama tabel dan mengubah rentang tanggal.
Kueri ini menampilkan jumlah pengguna di audiens. Jika Anda ingin mendapatkan daftar ID pengguna dalam audiens, hapus fungsi COUNT() terluar, misalnya, COUNT(DISTINCT user_id) --> DISTINCT user_id.
Kueri ini menggunakan SQL Standar, jadi pastikan Anda memilih opsi tersebut sebelum menjalankan kueri. (Di BigQuery > Ruang Kerja SQL, klik Lainnya > Setelan Kueri. Di bagian Setelan Tambahan > Dialek SQL, pilih Standar.)
Saat ini, data audiens ini hanya sebagai informasi dan tidak dapat ditindaklanjuti.
Kami ingin mengetahui apakah menurut Anda contoh kueri ini bermanfaat, dan apakah ada jenis audiens lain yang ingin Anda minta kuerinya. Anda dapat membalas melalui permintaan fitur dengan dukungan Firebase.
Dalam artikel ini:
Pembeli
/**
* Menghitung audiens pembeli.
*
* Pembeli = pengguna yang mencatat in_app_purchase atau
* 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';
Pengguna aktif N-hari
/**
* Membuat audiens Pengguna Aktif N-Hari.
*
* Pengguna aktif N-hari = pengguna yang mencatat setidaknya satu peristiwa dengan parameter peristiwa
* engagement_time_msec > 0 dalam N hari terakhir.
*/
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';
Pengguna tidak aktif N-hari
/**
* Membuat audiens Pengguna Tidak Aktif N-Hari.
*
* Pengguna tidak aktif N-Hari = pengguna dalam M hari terakhir yang belum mencatat satu
* peristiwa dengan parameter peristiwa engagement_time_msec > 0 dalam N hari terakhir
* dengan 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;
Pengguna aktif rutin
/**
* Membuat audiens Pengguna Aktif Rutin.
*
* Pengguna Aktif Sering = pengguna yang mencatat setidaknya satu
* peristiwa dengan parameter peristiwa engagement_time_msec > 0 pada N dari
* M hari terakhir dengan 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
);
Pengguna sangat aktif
/**
* Membuat audiens Pengguna Sangat Aktif.
*
* Pengguna yang Sangat Aktif = pengguna yang aktif selama lebih dari N menit
* dalam M hari terakhir dengan 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
);
Pengguna yang diperoleh
/**
* Membuat audiens Pengguna yang Diperoleh.
*
* Pengguna yang Diperoleh = pengguna yang diperoleh melalui Sumber/Media/Kampanye tertentu.
*/
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';
Kelompok dengan filter
/**
* Membuat audiens yang terdiri dari pengguna yang diperoleh minggu lalu
* melalui kampanye Google, yaitu kelompok dengan filter.
*
* Kelompok didefinisikan sebagai pengguna yang diperoleh minggu lalu, yaitu antara 7 - 14
* hari yang lalu. Filter kelompok ditujukan untuk pengguna yang diperoleh melalui kampanye
* langsung.
*/
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';