[GA4] Eksempler på søk etter målgrupper basert på BigQuery-data

Etter at du har eksportert Firebase-dataene dine til BigQuery, kan du søke etter bestemte målgrupper i disse dataene.

I denne artikkelen finner du en rekke maler du kan bruke som grunnlag for søk. Husk at du må endre eksempelsøkene i tråd med det som er spesifikt for dataene dine. Du må for eksempel endre tabellnavnene og datoperiodene.

Med disse søkene returneres antallet brukere som inngår i den aktuelle målgruppen. Hvis du vil ha listen med User-ID-er i målgruppen i stedet, kan du fjerne den ytterste COUNT()-funksjonen, for eksempel COUNT(DISTINCT user_id) --> DISTINCT user_id.

Standard SQL brukes i disse søkene, så du må sørge for at du velger dette alternativet før du kjører søk. (Følg menybanen BigQuery > SQL Workspace, og klikk på More > Query Options. Følg menybanen Additional Settings > SQL dialect, og velg Standard.)

Disse målgruppedataene er foreløpig bare informative – ikke anvendbare.

Vi er interessert i å vite om du synes disse eksempelsøkene er nyttige, og om det finnes andre typer målgrupper du ønsker å søke etter. Du kan svare via en funksjonsforespørsel til brukerstøtten for Firebase.

 

Du finner følgende informasjon i denne artikkelen:

Kjøpere

/**
 * Beregner målgruppen til kjøpere.
 *
 * Kjøpere = brukere som har loggført enten en in_app_purchase- eller
 * purchase-hendelse.
 */
 
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';
  
  

Brukere som er aktive i n dager

/**
 * oppretter en målgruppe med brukere som har vært aktive i N dager
 *
 * brukere som har vært aktive i n dager = brukere som har loggført minst én hendelse med hendelsesparameteren 
 * engagement_time_msec > 0 i løpet av de siste N dagene
*/

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

Brukere som er inaktive i n dager

/**
 * oppretter en målgruppe med brukere som har vært inaktive i N dager
 *
 * brukere som har vært inaktive i N dager = brukere du har skaffet deg i løpet av de siste M dagene, som ikke har loggført noen
 * hendelse med hendelsesparameteren engagement_time_msec > 0 i løpet av de siste N dagene 
 * der 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;
  
  

Brukere som ofte er aktive

/**
 * oppretter en målgruppe med brukere som ofte er aktive
 * 
 * brukere som ofte er aktive = brukere som har loggført minst én 
 * hendelse med hendelsesparameteren engagement_time_msec > 0 på N av 
 * de siste M dagene der 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
  );

  

Brukere som er svært aktive

/**
 * Oppretter en målgruppe med brukere som er svært aktive.
 *
 * Brukere som er svært aktive = brukere som har vært aktive i over N minutter
 * i løpet av de siste M dagene, der 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
  );

  

Kjøpte brukere

/**
 * Lager en målgruppe med kjøpte brukere.
 *
 * Kjøpte brukere = brukere som er kjøpt via en kilde, et medium eller en kampanje.
 */
 
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';
  
  

Kohorter med filtre

/**
 * Oppretter en målgruppe bestående av brukere du i løpet av den forrige uken
 * kjøpte via Google-kampanjer, altså kohorter med filtre.
 *
 * Kohort defineres som brukere som er kjøpt i forrige uke, altså for
 * mellom 7 og 14 dager siden. Kohortfilteret er for brukere som er kjøpt gjennom
 * direktekampanjer.
 */
 
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';
  
  

Var dette nyttig for deg?

Hvordan kan vi forbedre den?
Søk
Slett søket
Lukk søkefunksjonen
Hovedmeny
10493831538980003242
true
Søk i brukerstøtte
true
true
true
true
true
69256
false
false