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

如何在查询中同时获取event_params的page_referrer和traffic_type字段?

解决方案

针对你需要同时获取两个event_params.key对应值的需求,不用自连接也能实现,分两种常见场景给出具体SQL:

场景1:event_params是数组类型(比如GA4/BigQuery的事件表结构)

如果你的表中event_params是键值对数组,直接用子查询提取对应key的值即可:

SELECT
  event_name,
  user_id,
  -- 提取page_referrer的字符串值(如果是数值类型就换value.int_value)
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_referrer') AS page_referrer,
  -- 提取traffic_type的对应值
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'traffic_type') AS traffic_type
FROM
  your_table
WHERE
  -- 筛选存在page_referrer参数的记录
  EXISTS (SELECT 1 FROM UNNEST(event_params) WHERE key = 'page_referrer')

场景2:event_params是扁平化键值表(每行一条key-value记录)

如果表结构是每行对应一个key(比如包含event_id、key、value字段),用条件聚合的方式把同事件的不同key转成列:

SELECT
  event_id,
  MAX(CASE WHEN key = 'page_referrer' THEN value END) AS page_referrer,
  MAX(CASE WHEN key = 'traffic_type' THEN value END) AS traffic_type
FROM
  your_table
WHERE
  key IN ('page_referrer', 'traffic_type')
GROUP BY
  event_id
HAVING
  page_referrer IS NOT NULL -- 只保留包含page_referrer的事件记录

为什么自连接容易失败?

自连接如果没做好关联条件(比如没绑定event_id这类唯一标识,或者没处理重复key的情况),很容易出现重复数据或者匹配错误,上面两种方法更直接高效,也避免了自连接的复杂逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:25:32