Google BigQuery标准SQL中WINDOW定义session_hits窗口的含义咨询
BigQuery WINDOW子句
session_hits含义说明 WINDOW是BigQuery支持的标准SQL语法,作用是预定义可复用的窗口逻辑别名,避免同一份窗口分区、排序规则在多个窗口函数中重复编写,简化代码、降低出错概率。
窗口session_hits逐段解析
PARTITION BY fullvisitorId, visitId:对数据集做分组,分组规则为「同一用户的同一会话」:fullvisitorId是Google Analytics(GA)导出至BigQuery数据集中的用户唯一标识,对应单个独立访问用户visitId是GA分配给用户单次访问会话的标识,同一个用户多次访问会生成不同的visitId
ORDER BY hits.hitNumber:对每个分组内的行做排序,排序规则为会话内行为的发生先后:hits是GA数据集里的重复嵌套字段,每一个hit对应会话内用户的一次行为(页面浏览、点击事件、表单提交等)hitNumber是行为在会话内的顺序编号,数值越小代表行为发生时间越早
实际使用示例
预定义该窗口后,后续调用窗口函数时不需要再重复写分区和排序逻辑,直接引用别名即可,非常适配网站漏斗追踪的高频计算场景:
-- 给同一会话内的每个行为标注先后序号,漏斗路径排序会频繁用到该逻辑 SELECT fullvisitorId, visitId, hits.page.pagePath, ROW_NUMBER() OVER session_hits AS session_hit_order FROM `your_project.your_dataset.ga_sessions_*`, UNNEST(hits) AS hits WINDOW session_hits AS (PARTITION BY fullvisitorId, visitId ORDER BY hits.hitNumber)
如果没有预定义WINDOW,上面的OVER后面就要完整写一遍(PARTITION BY fullvisitorId, visitId ORDER BY hits.hitNumber),多个窗口函数用同一份规则时代码会非常冗余。
内容的提问来源于stack exchange,提问作者MatmataHi
相关产品推荐
相关产品推荐

