如何在BigQuery中Unnest多参数并分别展示page_location与page_title
BigQuery 拆分事件参数并分开展示page_location与page_title
你当前的SQL通过UNNEST(event_params)拆分参数后,仅筛选出page_title和page_location但未标注参数类型,导致无法区分每行对应的值是页面标题还是地址,看起来像是“随机显示”。要让这两个参数分开展示在单独行中且清晰区分,可按以下方式修改:
方案1:分开展示为单独行(带参数类型标识)
SELECT event_date, user_pseudo_id, key AS param_type, value.string_value AS param_value FROM `mydata.events20220909*`, UNNEST(event_params) WHERE key IN ("page_title", "page_location")
- 新增
param_type字段,明确每行对应的是页面标题还是地址,解决“无法区分值类型”的问题 - 使用
IN替代OR,条件写法更简洁 - 执行后,每个事件中的
page_title和page_location会各自生成一行,同时保留关联的event_date和user_pseudo_id
方案2:分开展示为单独列(同一事件同一行)
如果你的实际需求是将两个参数放在同一行的不同列中(而非单独行),可以用条件聚合实现:
SELECT event_date, user_pseudo_id, MAX(IF(key = "page_title", value.string_value, NULL)) AS page_title, MAX(IF(key = "page_location", value.string_value, NULL)) AS page_location FROM `mydata.events20220909*`, UNNEST(event_params) WHERE key IN ("page_title", "page_location") GROUP BY event_date, user_pseudo_id
- 利用
MAX(IF(...))的聚合逻辑,将同一事件的两个参数分别提取到独立列中 - 按
event_date和user_pseudo_id分组,确保同一事件的信息聚合在一行
内容的提问来源于stack exchange,提问作者wh4tif
相关产品推荐
相关产品推荐

