[GA4] Voorbeeldzoekopdrachten voor doelgroepen op basis van BigQuery-gegevens

Nadat u uw Firebase-gegevens naar BigQuery heeft geëxporteerd, kunt u op die gegevens zoekopdrachten uitvoeren voor specifieke doelgroepen.

Dit artikel biedt een aantal templates die u kunt gebruiken als basis voor uw zoekopdrachten. Vergeet niet om de voorbeeldzoekopdrachten aan te passen op basis van uw gegevens. U moet bijvoorbeeld de tabelnamen en perioden wijzigen.

Met deze zoekopdrachten vraagt u het aantal gebruikers in de doelgroep op. Als u in plaats daarvan een lijst met gebruikers-ID's in de doelgroep wilt opvragen, verwijdert u de buitenste COUNT()-functie. COUNT(DISTINCT user_id) wordt bijvoorbeeld DISTINCT user_id.

Deze zoekopdrachten maken gebruik van standaard SQL. Zorg er dus voor dat u die optie selecteert voordat u een zoekopdracht uitvoert. (Klik in BigQuery > SQL-werkruimte op Meer > Query-instellingen. Onder Aanvullende instellingen > SQL-dialect selecteert u Standaard.)

Momenteel zijn deze doelgroepgegevens alleen informatief en zijn er nog geen praktische toepassingen voor.

We horen graag of u deze zoekopdrachten nuttig vindt en of u voor andere typen doelgroepen zoekopdrachten zou willen uitvoeren. U kunt uw mening delen door een functieverzoek in te dienen bij de Firebase-ondersteuning.

 

In dit artikel:

Kopers

/**
 * Berekent de doelgroep van kopers.
 *
 * Kopers = gebruikers voor wie een in_app_purchase of
 * aankoop is geregistreerd.
 */
 
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';
  
  

Gebruikers die in de afgelopen N dagen actief waren

/**
 * Stelt een doelgroep samen van gebruikers die in de afgelopen N dagen actief waren.
 *
 * Gebruikers die de afgelopen N dagen actief waren = gebruikers die ten minste 1 gebeurtenis hebben geregistreerd met gebeurtenisparameter 
 * engagement_time_msec > 0 in de afgelopen N dagen.
*/

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

Gebruikers die in de afgelopen N dagen niet actief waren

/**
 * Stelt een doelgroep samen van gebruikers die in de afgelopen N dagen niet actief waren.
 *
 * Gebruikers die de afgelopen N dagen niet actief waren = gebruikers in de afgelopen M dagen die niet 1  
 * gebeurtenis hebben geregistreerd met gebeurtenisparameter engagement_time_msec > 0 in de afgelopen N dagen 
 * waarbij 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;
  
  

Gebruikers die regelmatig actief zijn

/**
 * Stelt een doelgroep samen van gebruikers die regelmatig actief zijn.
 *
 * Gebruikers die regelmatig actief zijn = gebruikers die ten minste 1 gebeurtenis
 * hebben geregistreerd met gebeurtenisparameter engagement_time_msec > 0 op N van 
 * de afgelopen M dagen, waarbij 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
  );

  

Gebruikers die zeer actief zijn

/**
 * Stelt een doelgroep samen van gebruikers die zeer actief zijn.
 *
 * Zeer actieve gebruikers = gebruikers die meer dan N minuten actief zijn
 * in de afgelopen M dagen, 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
  );

  

Verworven gebruikers

/**
 * Stelt een doelgroep samen van verworven gebruikers.
 *
 * Verworven gebruikers = gebruikers die zijn verworven via een bepaalde bron, bepaald medium of bepaalde campagne.
 */
 
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';
  
  

Cohorten met filters

/**
 * Stelt een doelgroep samen van gebruikers die afgelopen week zijn verworven
 * via Google-campagnes (dat wil zeggen: cohorten met filters).
 *
 * Cohort wordt gedefinieerd als gebruikers die afgelopen week zijn verworven (dat wil zeggen:
 * tussen 7 en 14 dagen geleden). Het cohortfilter is bedoeld voor gebruikers die zijn verworven via een directe
 * campagne.
 */
 
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';
  
  

Was dit nuttig?

Hoe kunnen we dit verbeteren?
Zoeken
Zoekopdracht wissen
Zoekfunctie sluiten
Hoofdmenu
16598468135992968713
true
Zoeken in het Helpcentrum
true
true
true
true
true
69256
false
false