本頁中的查詢範例適用於以下位置的 BigQuery 事件匯出資料: Google Analytics
查詢資料集,而非範例資料集
除非另有說明,否則這裡列出的所有查詢都會使用範例資料集,而且應該
會產生有效的結果使用自己的 Google Analytics 資源的 BigQuery
事件匯出資料,請在個別查詢中尋找「-- Replace table」註解,
請替換範例資料表。如何複製資料集中的資料表名稱:
- 前往 BigQuery UI,然後選取 並附上資料集
- 在「Explorer」Explorer中找到該資料表。
- 按一下表格右側的三個垂直圓點,然後按一下 複製 ID:
- 貼上資料表名稱,以取代查詢中的範例資料表。
- 將表格中的日期部分替換成 *。
舉例來說,如果「Copy ID」(複製 ID) 已複製 BigQuery 資料表名稱,
my-first-gcp-project:analytics_28239234.events_20240718,然後取代:
  -- Replace table
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
取代為:
  -- Replace table
  `my-first-gcp-project.analytics_28239234.events_*`
查詢特定日期範圍
如要從 BigQuery 事件匯出資料集查詢特定日期範圍,請使用 _TABLE_SUFFIX 虛擬資料欄。如需更多資訊, 查看使用 _TABLE_SUFFIX 篩選所選資料表。
舉例來說,以下查詢會計算不重複事件數量, 特定期間和所選事件的日期和依據事件名稱:
-- 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;
使用者人數和新使用者
- 如要取得使用者總數,請計算不重複的 user_id數量。 不過,如果您的 Google Analytics 用戶端不會將user_id傳回 或不確定每次命中時,請計算不重複的user_pseudo_id數量。
- 對於新使用者,您可以採取上述的計數方法,但
下列 event_name值:
-- Example: Get 'Total User' count and 'New User' count.
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 user_count,
  SUM(is_new_user) AS new_user_count
FROM UserInfo;
每位購買者的平均交易次數
下列查詢顯示每位購買者的平均交易次數。
-- 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';
特定事件名稱的值
以下查詢會顯示所有時段的 event_timestamp
purchase 事件和相關聯的事件參數
值:
-- 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';
您可以修改上一個查詢,顯示事件參數總數 而不是清單值:
-- 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';
加入購物車的前 10 項商品
以下查詢依使用者人數顯示加入購物車的前 10 項商品。
-- 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_web_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;
按購買者類型劃分的平均瀏覽量 (購買者與無購買意願的使用者)
下列查詢會顯示平均網頁瀏覽購買者類型 (購買者與無購買意願的使用者):
-- 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;
網頁瀏覽順序
這項查詢會顯示每位使用者的網頁瀏覽次數順序。查詢順序 使用下列欄位的結果,使事件依序列出 就算事件是在同一批次中傳送也是如此:
- user_pseudo_id
- user_id
- batch_page_id
- batch_ordering_id
- batch_event_index
雖然範例將結果限制為僅限 page_view 事件,但您也可以使用
同一個 ORDER BY 子句,藉由移除
event_name 的 WHERE 子句條件。
查詢也顯示如何使用使用者定義
函式
GetParamString 和 GetParamInt,用於減少重複情形及建立查詢
更容易理解及維護
-- 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;
事件參數清單
以下查詢會列出資料集中顯示的所有事件參數:
-- 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;
使用 Google Ads 加入
如要擷取 Google Analytics 事件的其他 Google Ads 資料,請設定
Google 適用的 BigQuery 資料移轉服務
廣告,則代表
將 Google Analytics 事件資料的collected_traffic_source.gclid加入gclid
擷取自 Google Ads 移轉作業起的 ads_ClickStats_customer_id 欄位。
請注意,Google Analytics 事件資料匯出作業會為每天建立一份表格,
會在 Google Ads 移轉作業中
ads_ClickStats_每位客戶可使用 customer_id 個表格。