Query di base per l'esportazione dei dati sugli eventi di Google Analytics

Le query di esempio in questa pagina si applicano ai dati di esportazione degli eventi BigQuery per Google Analytics.

Esegui una query sul tuo set di dati anziché su quello di esempio

Se non diversamente indicato, tutte le query elencate qui utilizzano set di dati di esempio e dovrebbero produrre risultati validi. Per utilizzare i dati di esportazione degli eventi BigQuery della tua proprietà Google Analytics, cerca il commento -- Replace table in ogni query e sostituisci la tabella di esempio. Per copiare il nome della tabella dal set di dati:

  1. Vai alla UI di BigQuery e seleziona il progetto che contiene il set di dati.
  2. Individua la tabella in Explorer.
  3. Fai clic sui tre puntini verticali a destra della tabella e poi su Copia ID.
  4. Incolla il nome della tabella al posto della tabella di esempio nella query.
  5. Sostituisci la parte della tabella relativa alla data con *.

Ad esempio, se Copy ID ha copiato il nome della tabella BigQuery my-first-gcp-project:analytics_28239234.events_20240718, sostituisci:

  -- Replace table
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

con:

  -- Replace table
  `my-first-gcp-project.analytics_28239234.events_*`

Eseguire una query su un intervallo di date specifico

Per eseguire query su un intervallo di date specifico da un set di dati di esportazione degli eventi BigQuery, utilizza la pseudo colonna _TABLE_SUFFIX nella clausola WHERE della query. Per ulteriori informazioni, consulta Filtrare le tabelle selezionate utilizzando _TABLE_SUFFIX.

Ad esempio, la seguente query conteggia gli eventi unici per data e per nome dell'evento per un periodo di giorni specifico e gli eventi selezionati:

-- Example: Query a specific date range for selected events.
--
-- Counts unique events by date and by event name for a specifc period of days and
-- selected events(page_view, session_start, and purchase).

SELECT
  event_date,
  event_name,
  COUNT(*) AS event_count
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name IN ('page_view', 'session_start', 'purchase')
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
GROUP BY 1, 2;

Conteggio utenti, nuovi utenti e utenti di ritorno

  • Per ottenere il conteggio totale degli utenti attivi, conta il numero di valori user_id distinti. Tuttavia, se il client Google Analytics non restituisce un user_id con ogni hit o se non ne hai la certezza, conta il numero di valori user_pseudo_id distinti.
  • Per i nuovi utenti, conta il numero di utenti distinti il cui event_name è:
  • Per gli utenti di ritorno, conta il numero di utenti che hanno avuto attività durante il periodo, ma non hanno avviato la prima sessione o lanciato l'app per la prima volta durante il periodo (utenti attivi meno nuovi utenti).
-- Example: Get 'Total User' (Active User), 'New User', and 'Returning User' counts.

WITH
  UserInfo AS (
    SELECT
      user_pseudo_id,
      MAX(IF(event_name IN ('first_visit', 'first_open'), 1, 0)) AS is_new_user
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20201130'
    GROUP BY 1
  )
SELECT
  COUNT(*) AS active_users,
  SUM(is_new_user) AS new_users,
  COUNT(*) - SUM(is_new_user) AS returning_users
FROM UserInfo;

Numero medio di transazioni per acquirente

La seguente query mostra il numero medio di transazioni per acquirente.

-- Example: Average number of transactions per purchaser.

SELECT
  COUNT(*) / COUNT(DISTINCT user_pseudo_id) AS avg_transaction_per_purchaser
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name IN ('in_app_purchase', 'purchase')
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201231';

Valori per un nome evento specifico

La seguente query mostra event_timestamp per tutti gli eventi purchase e i valori dei parametri evento associati:

-- Example: Query values for a specific event name.
--
-- Queries the individual timestamps and values for all 'purchase' events.

SELECT
  event_timestamp,
  (
    SELECT COALESCE(value.int_value, value.float_value, value.double_value)
    FROM UNNEST(event_params)
    WHERE key = 'value'
  ) AS event_value
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name = 'purchase'
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202';

La query precedente può essere modificata per mostrare il totale dei valori dei parametri evento anziché un elenco:

-- Example: Query total value for a specific event name.
--
-- Queries the total event value for all 'purchase' events.

SELECT
  SUM(
    (
      SELECT COALESCE(value.int_value, value.float_value, value.double_value)
      FROM UNNEST(event_params)
      WHERE key = 'value'
    ))
    AS event_value
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name = 'purchase'
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202';

I 10 articoli più aggiunti al carrello

La seguente query mostra i 10 articoli più aggiunti al carrello dal maggior numero di utenti.

-- Example: Top 10 items added to cart by most users.

SELECT
  item_id,
  item_name,
  COUNT(DISTINCT user_pseudo_id) AS user_count
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`, UNNEST(items)
WHERE
  -- Replace date range.
  _TABLE_SUFFIX BETWEEN '20201101' AND '20210131'
  AND event_name IN ('add_to_cart')
GROUP BY
  1, 2
ORDER BY
  user_count DESC
LIMIT 10;

Numero medio di visualizzazioni di pagine per tipo di acquirente (acquirenti e non acquirenti)

La seguente query mostra il numero medio di visualizzazioni di pagine per tipo di acquirente (acquirenti e non acquirenti) degli utenti:

-- Example: Average number of pageviews by purchaser type.

WITH
  UserInfo AS (
    SELECT
      user_pseudo_id,
      COUNTIF(event_name = 'page_view') AS page_view_count,
      COUNTIF(event_name IN ('in_app_purchase', 'purchase')) AS purchase_event_count
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
    GROUP BY 1
  )
SELECT
  (purchase_event_count > 0) AS purchaser,
  COUNT(*) AS user_count,
  SUM(page_view_count) AS total_page_views,
  SUM(page_view_count) / COUNT(*) AS avg_page_views,
FROM UserInfo
GROUP BY 1;

Sequenza di visualizzazioni di pagina

Questa query mostra la sequenza di visualizzazioni di pagina effettuate da ogni utente. La query ordina i risultati utilizzando i seguenti campi in modo che gli eventi vengano elencati nell'ordine in cui si sono verificati per l'utente, anche se gli eventi sono stati inviati nello stesso batch:

  • user_pseudo_id
  • user_id
  • batch_page_id
  • batch_ordering_id
  • batch_event_index

Sebbene il campione limiti i risultati a soli page_view eventi, puoi utilizzare la stessa clausola ORDER BY per ordinare correttamente tutti gli eventi rimuovendo la condizione della clausola WHERE per event_name.

La query mostra anche come utilizzare le funzioni definite dall'utente GetParamString e GetParamInt per ridurre la duplicazione e rendere le query più facili da comprendere e gestire.

-- Example: Sequence of pageviews.

/** Temporary function to retrieve the string_value of an event parameter by event name. */
CREATE TEMP FUNCTION GetParamString(event_params ANY TYPE, param_name STRING)
AS ((SELECT ANY_VALUE(value.string_value) FROM UNNEST(event_params) WHERE key = param_name));

/** Temporary function to retrieve the int_value of an event parameter by event name. */
CREATE TEMP FUNCTION GetParamInt(event_params ANY TYPE, param_name STRING)
AS ((SELECT ANY_VALUE(value.int_value) FROM UNNEST(event_params) WHERE key = param_name));

SELECT
  user_pseudo_id,
  user_id,
  batch_page_id,
  batch_ordering_id,
  batch_event_index,
  event_name,
  GetParamInt(event_params, 'ga_session_id') as ga_session_id,
  GetParamString(event_params, 'page_location') as page_location,
  GetParamString(event_params, 'page_title') as page_title,
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name = 'page_view'
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20240718' AND '20240731'
ORDER BY
  user_pseudo_id,
  user_id,
  batch_page_id,
  batch_ordering_id,
  batch_event_index;

Elenco dei parametri evento

La seguente query elenca tutti i parametri evento visualizzati nel tuo set di dati:

-- Example: List all available event parameters and count their occurrences.

SELECT
  EP.key AS event_param_key,
  COUNT(*) AS occurrences
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`, UNNEST(event_params) AS EP
WHERE
  -- Replace date range.
  _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
GROUP BY
  event_param_key
ORDER BY
  event_param_key ASC;

Unirsi a Google Ads

Per recuperare dati Google Ads aggiuntivi per gli eventi Google Analytics, configura il servizio Data Transfer Service di BigQuery per Google Ads, poi unisci collected_traffic_source.gclid dai dati sugli eventi Google Analytics al campo gclid di ads_ClickStats_customer_id dal trasferimento da Google Ads.

Tieni presente che l'esportazione dei dati sugli eventi Google Analytics crea una tabella per ciascun giorno, mentre il trasferimento da Google Ads compila una singola tabella ads_ClickStats_customer_id per cliente.