GBQ如何按page_location分组计算add_basket与view的count比率
BigQuery 转化率计算实现方案
你的需求属于分组聚合计算加购转化率场景,不需要用到OVER窗口函数,以下是两种稳定的实现方式:
方案1:条件聚合(最推荐,逻辑简单易维护)
直接通过CASE语句按事件类型分别求和后计算比率:
SELECT page_location, -- 用SAFE_DIVIDE避免浏览量为0时触发除以0报错 SAFE_DIVIDE( SUM(CASE WHEN event_name = 'add_basket' THEN count ELSE 0 END), SUM(CASE WHEN event_name = 'view' THEN count ELSE 0 END) ) AS add_basket_rate FROM `你的项目ID.你的数据集名.你的表名` GROUP BY page_location -- 可选:过滤掉没有浏览记录的页面,避免返回null -- HAVING SUM(CASE WHEN event_name = 'view' THEN count ELSE 0 END) > 0
针对你给出的示例数据,上述语句会先按page_location分组,计算A页面的view总计数为300,add_basket总计数为30,最终得到比率0.1,和预期结果一致。
方案2:PIVOT 语法实现
如果你需要用PIVOT完成,正确写法如下:
SELECT page_location, SAFE_DIVIDE(add_basket, view) AS add_basket_rate FROM `你的项目ID.你的数据集名.你的表名` PIVOT( SUM(count) FOR event_name IN ( 'view' AS view, 'add_basket' AS add_basket ) ) -- 可选:过滤无浏览记录的页面 -- WHERE view > 0
内容的提问来源于stack exchange,提问作者Leonid Chernyadyev
相关产品推荐
相关产品推荐

