BigQuery实现累积乘法:复用上一行计算结果
BigQuery 实现累计转化率计算
你的需求是新增total_conversion列,值为当前行及之前所有行conversion的乘积,可通过对数与指数的转换实现(BigQuery无直接的累计乘积窗口函数),以下是完整实现代码:
WITH ExampleData AS ( SELECT 'Step 1' as step, '0.6' as conversion UNION ALL SELECT 'Step 2' as step, '0.8' as conversion UNION ALL SELECT 'Step 3' as step, '0.4' as conversion ) SELECT step, conversion, -- 计算累计转化率:转数值→取对数→累计求和→转指数还原乘积 EXP(SUM(LOG(SAFE_CAST(conversion AS FLOAT64))) OVER (ORDER BY step)) AS total_conversion FROM ExampleData
关键逻辑说明
- 类型转换:用
SAFE_CAST将字符串类型的conversion转为FLOAT64数值,避免转换失败报错 - 对数转译:利用
LOG()将乘法运算转为加法运算,适配窗口函数的累计求和能力 - 顺序保证:
ORDER BY step确保按步骤顺序计算累计值,避免结果混乱 - 指数还原:用
EXP()将累计对数和转回原始乘积结果
执行结果
| step | conversion | total_conversion |
|---|---|---|
| Step 1 | 0.6 | 0.6 |
| Step 2 | 0.8 | 0.48 |
| Step 3 | 0.4 | 0.192 |
内容的提问来源于stack exchange,提问作者Wouter
相关产品推荐
相关产品推荐

