[GA4] Contoh kueri untuk audiens berdasarkan data BigQuery

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';
  
  

Apakah ini membantu?

Bagaimana cara meningkatkannya?
Telusuri
Hapus penelusuran
Tutup penelusuran
Menu utama
8639272011268296752
true
Pusat Bantuan Penelusuran
true
true
true
true
true
69256
false
false