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

如何在BigQuery中匹配GA4流量获取报告数据?

关于GA4流量获取报告在BigQuery中复现的问题求助

问题1:为何部分事件(如session_start)不带source/medium/campaign参数?

已知GA4/BQ中source/medium/campaign字段基于事件而非会话,但发现并非每个事件都携带这些参数,比如session_start事件也没有,不符合预期。

问题2:复现报告的三种尝试及结果偏差

2.1 基于会话首个medium的查询

使用以下SQL查询会话首个medium:

with cte as ( select
    PARSE_DATE("%Y%m%d", event_date) AS Date,
    user_pseudo_id,
    concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')) as session_id,
    FIRST_VALUE((select value.string_value from unnest(event_params) where key = 'medium')) OVER (PARTITION BY concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')) ORDER BY event_timestamp) as first_medium

FROM `project`)

select Date, first_medium, count(distinct user_pseudo_id) as Users, count (distinct session_id) as Sessions
from cte
group by 1,2;

结果:返回44k medium为null的用户、1.8k有机用户,但GA4视图中对应为17k medium为none的用户、8k有机用户,数据差距明显。

2.2 改为基于会话最后一个medium的查询

将上述SQL中的first_medium替换为以下逻辑获取最后一个medium:

FIRST_VALUE((select value.string_value from unnest(event_params) where key = 'medium')) OVER (PARTITION BY concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')) ORDER BY event_timestamp desc) as last_medium

结果:有机用户增至9k,但仍与GA4视图数据不匹配。

2.3 使用第三方教程中的会话级source/medium代码

尝试了第三方教程中的会话级source/medium查询代码,结果仍与GA4视图完全不一致。

更新

找到一篇详细讲解流量源查询的优质文章,标题翻译为:《在BigQuery中查询GA4会话的最后非直接流量来源》

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:20:23