[GA4] Beispielabfragen für Zielgruppen anhand von BigQuery-Daten

Nachdem Sie die Firebase-Daten nach BigQuery exportiert haben, können Sie sie für bestimmte Zielgruppen abfragen.

In diesem Artikel sind einige Vorlagen enthalten, die Sie für Ihre Abfragen verwenden können. Die Beispielabfragen müssen allerdings noch speziell an Ihre Daten angepasst werden. Sie müssen z. B. die Tabellennamen und die Zeiträume ändern.

Mit diesen Abfragen erhalten Sie die Anzahl von Nutzern in einer Zielgruppe. Wenn Sie stattdessen eine Liste der User-IDs innerhalb der Zielgruppe abrufen möchten, entfernen Sie die äußerste Funktion „COUNT()“. „COUNT(DISTINCT user_id)“ lautet dann beispielsweise „DISTINCT user_id“.

In diesen Abfragen wird Standard-SQL verwendet. Wählen Sie diese Option also aus, bevor Sie eine Abfrage starten. Klicken Sie dazu unter BigQuery > SQL-Arbeitsbereich auf Mehr > Abfrageeinstellungen. Wählen Sie unter Zusätzliche Einstellungen > SQL-Dialekt die Option Standard aus.

Derzeit sind diese Zielgruppendaten rein informativ und lassen sich nicht weiter verwerten.

Wir würden gern erfahren, ob die Abfragebeispiele für Sie nützlich sind und ob Sie auch für andere Zielgruppentypen Abfragen durchführen möchten. Sie können uns Ihre Antwort über eine Funktionsanfrage im Firebase-Support mitteilen.

 

Themen in diesem Artikel

Käufer

/**
 * Zielgruppe der Käufer berechnen.
 *
 * Käufer = Nutzer, bei denen entweder das Ereignis „in_app_purchase“ oder
 * „purchase“ erfasst wurde.
 */
 
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 Nutzer innerhalb von n Tagen

/**
 * Zielgruppe mit Nutzern erstellen, die innerhalb von n Tagen aktiv waren.
 *
 * Aktive Nutzer pro Tag = Nutzer, für die in den letzten n Tagen mindestens ein 
 * Ereignis mit dem Ereignisparameter engagement_time_msec > 0 erfasst wurde.
*/

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 Nutzer innerhalb von n Tagen

/**
 * Zielgruppe mit Nutzern erstellen, die innerhalb von n Tagen inaktiv waren.
 *
 * Inaktive Nutzer innerhalb von n Tagen = Nutzer in den letzten m Tagen, für die in den letzten n Tagen 
 * kein Ereignis mit dem Ereignisparameter engagement_time_msec > 0 erfasst wurde, 
 * wobei m > n ist.
 */

 
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;
  
  

Häufig aktive Nutzer

/**
 * Zielgruppe mit häufig aktiven Nutzern erstellen.
 *
 * Häufig aktive Nutzer = Nutzer, für die an n der letzten m Tage mindestens
 * ein Ereignis mit dem Ereignisparameter engagement_time_msec > 0 
 * erfasst wurde, wobei m > n ist.
 */

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

  

Besonders aktive Nutzer

/**
 * Zielgruppe mit besonders aktiven Nutzern erstellen.
 *
 * Besonders aktive Nutzer = Nutzer, die in den letzten m Tagen länger als n Minuten aktiv waren,
 * wobei m > n ist.
*/

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

  

Gewonnene Nutzer

/**
 * Zielgruppe mit gewonnenen Nutzern erstellen.
 *
 * Gewonnene Nutzer = Nutzer, die über ein/eine Quelle/Medium/Kampagne gewonnen wurden.
 */
 
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';
  
  

Kohorten mit Filter

/**
 * Eine Zielgruppe mit Nutzern erstellen, die in der letzten Woche
 * durch Kampagnen auf Google gewonnen wurden, also Kohorten mit Filter.
 *
 * Eine Kohorte ist definiert als Nutzer, die letzte Woche gewonnen wurden,
 * also vor 7–14 Tagen. Der Kohorte-Filter gilt für Nutzer, die durch eine direkte
 * Kampagne gewonnen wurden.
 */
 
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';
  
  

War das hilfreich?

Wie können wir die Seite verbessern?
Suche
Suche löschen
Suche schließen
Hauptmenü
3941695857022586266
true
Suchen in der Hilfe
true
true
true
true
true
69256
false
false