You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GA4数据提取求助:BigQuery中缺失GA维度与指标

GA4 BigQuery 对应原GA维度/指标的实现方案

以下是你需要的原GA维度/指标在GA4 BigQuery中的替代实现方式:

  • Users(用户数)
    GA4 BigQuery无直接Users字段,需通过用户唯一标识user_pseudo_id去重统计:

    SELECT COUNT(DISTINCT user_pseudo_id) AS users
    FROM `你的项目ID.analytics_xxxx.events_*`
    WHERE _TABLE_SUFFIX BETWEEN '起始日期(如20240101)' AND '结束日期(如20240131)'
    

    若需统计已登录用户,可替换为user_id去重。

  • Sessions(会话数)
    GA4不使用UA的totals.visits,需通过user_pseudo_id+session_id的组合去重统计有效会话:

    SELECT COUNT(DISTINCT CONCAT(user_pseudo_id, '.', CAST(session_id AS STRING))) AS sessions
    FROM `你的项目ID.analytics_xxxx.events_*`
    WHERE _TABLE_SUFFIX BETWEEN '起始日期' AND '结束日期'
    

    如需对齐GA界面数据,可过滤仅包含有效交互事件(如page_view、purchase)的会话。

  • TransactionsPerSession(每会话交易数)
    先统计总交易数与总会话数,再做除法计算:

    WITH session_stats AS (
      SELECT COUNT(DISTINCT CONCAT(user_pseudo_id, '.', CAST(session_id AS STRING))) AS total_sessions
      FROM `你的项目ID.analytics_xxxx.events_*`
      WHERE _TABLE_SUFFIX BETWEEN '起始日期' AND '结束日期'
    ),
    transaction_stats AS (
      SELECT COUNT(DISTINCT params.value.string_value) AS total_transactions
      FROM `你的项目ID.analytics_xxxx.events_*`,
      UNNEST(event_params) AS params
      WHERE _TABLE_SUFFIX BETWEEN '起始日期' AND '结束日期'
        AND event_name = 'purchase'
        AND params.key = 'transaction_id'
    )
    SELECT total_transactions / total_sessions AS transactions_per_session
    FROM session_stats, transaction_stats
    
  • CountryIsoCode(国家ISO代码)
    GA4 BigQuery返回的geo.country是完整国名,可通过自定义映射表转换为ISO代码:

    WITH country_mapping AS (
      SELECT 'Spain' AS country_name, 'ES' AS country_code UNION ALL
      SELECT 'United States' AS country_name, 'US' AS country_code UNION ALL
      SELECT 'China' AS country_name, 'CN' AS country_code
      -- 按需补充其他国家映射
    )
    SELECT 
      cm.country_code AS country_iso_code,
      COUNT(DISTINCT user_pseudo_id) AS users
    FROM `你的项目ID.analytics_xxxx.events_*` e
    LEFT JOIN country_mapping cm ON e.geo.country = cm.country_name
    WHERE _TABLE_SUFFIX BETWEEN '起始日期' AND '结束日期'
    GROUP BY cm.country_code
    
  • avgSessionDuration(平均会话时长)
    通过会话的首尾事件时间差计算单会话时长,再取平均值:

    WITH session_durations AS (
      SELECT
        CONCAT(user_pseudo_id, '.', CAST(session_id AS STRING)) AS session_key,
        -- 毫秒转秒计算会话时长
        (MAX(event_timestamp) - MIN(event_timestamp)) / 1000000 AS session_duration_sec
      FROM `你的项目ID.analytics_xxxx.events_*`
      WHERE _TABLE_SUFFIX BETWEEN '起始日期' AND '结束日期'
      GROUP BY session_key
    )
    SELECT AVG(session_duration_sec) AS avg_session_duration_sec
    FROM session_durations
    WHERE session_duration_sec > 0 -- 过滤无效短会话
    

内容的提问来源于stack exchange,提问作者TiagoD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:21:02