[GA4] Eksempler på forespørgsler for målgrupper baseret på BigQuery-data

Når du har eksporteret dine Firebase-data til BigQuery, kan du sende forespørgsler vedrørende disse data for specifikke målgrupper.

I denne artikel er der angivet en række skabeloner, du kan bruge som udgangspunkt for dine forespørgsler. Du skal huske at ændre forespørgselseksemplerne i henhold til dine egne data, f.eks. ved at ændre tabelnavne og datointervaller.

Disse forespørgsler returnerer antallet af brugere i målgruppen. Hvis du i stedet vil have listen over User-ID'er i målgruppen, skal du fjerne den yderste COUNT()-funktion, f.eks. COUNT(DISTINCT user_id) --> DISTINCT user_id.

Der bruges standard-SQL til disse forespørgsler, så sørg for at vælge denne mulighed, før du kører en forespørgsel. Klik på Mere > Forespørgselsindstillinger under BigQuery > SQL-arbejdsområde. Vælg Standard under Yderligere indstillinger > SQL-dialekt.

Disse målgruppedata er i øjeblikket ikke handlingsrettede, men udelukkende beregnet til information.

Vi vil meget gerne høre, om du synes, at disse forespørgselseksempler er nyttige, og om der er andre typer målgrupper, du gerne vil kunne sende forespørgsler om. Du kan svare via en funktionsanmodning til Firebase-supportteamet.

 

I denne artikel kan du læse om følgende:

Købere

/**
 * Beregner målgruppen af købere.
 *
 * Købere = brugere, som hændelsen in_app_purchase eller
 * purchase er blevet logført for.
 */
 
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';
  
  

Aktive brugere (N dage)

/**
 * Opretter en målgruppe af brugere, der er aktive i N dage.
 *
 * Aktive brugere (N dage) = de brugere, der er logført mindst én hændelse med hændelsesparameteren
 * engagement_time_msec > 0 inden for de seneste N dage.
*/

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

Inaktive brugere (N dage)

/**
 * Opretter en målgruppe af brugere, der er inaktive i N dage.
 *
 * Inaktive brugere (N dage) = brugere inden for de seneste M dage, der ikke er blevet logført mindst én hændelse med hændelsesparameteren
 * engagement_time_msec > 0 for inden for de seneste N dage, 
 * hvor 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;
  
  

Brugere, som ofte er aktive

/**
 * Opretter en målgruppe af brugere, som ofte er aktive.
 *
 * Brugere, som ofte er aktive = de brugere, der er logført mindst én
 * hændelse med hændelsesparameteren engagement_time_msec > 0 for på N af 
 * de sidste M dage, hvor 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
  );

  

Meget aktive brugere

/**
 * Opretter en målgruppe af meget aktive brugere.
 *
 * Meget aktive brugere = de brugere, der har været aktive i mere end N minutter
 * inden for de sidste M dage, hvor 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
  );

  

Anskaffede brugere

/**
 * Opretter en målgruppe af anskaffede brugere.
 *
 * Anskaffede brugere = de brugere, som er anskaffet via en kilde, et medium eller en kampagne.
 */
 
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

/**
 * Opretter en målgruppe, som består af de brugere, der blev anskaffet sidste uge
 * gennem Google-kampagner, dvs. kohorter med filtre.
 *
 * En kohorte defineres som de brugere, der blev anskaffet i sidste uge, dvs. for 7-14
 * dage siden. Kohortefilteret er for de brugere, der er blevet anskaffet gennem en direkte
 * kampagne.
 */
 
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 disse oplysninger nyttige?

Hvordan kan vi forbedre siden?
Søgning
Ryd søgning
Luk søgning
Hovedmenu
7703970103729933958
true
Søg i Hjælp
true
true
true
true
true
69256
false
false