Google BigQuery:即使在 SUM 别名更改时,SUM 也会返回不同的结果
Posted
技术标签:
【中文标题】Google BigQuery:即使在 SUM 别名更改时,SUM 也会返回不同的结果【英文标题】:Google BigQuery: SUM returns different results even on SUM alias changes 【发布时间】:2016-03-21 13:57:17 【问题描述】:我有以下疑问:
SELECT
p_id,
r_date,
SUM(CASE WHEN p_type='h' AND post_p='c' THEN 1 ELSE 0 END) as test1
FROM (
SELECT 152234223 AS p_id,
date AS r_date,
sequence as p_type,
LEAD(p_type, 1) OVER
(PARTITION BY u_id ORDER BY visit_id) AS post_p
FROM (Table_date_range([152234223.ses_],Timestamp('25022016'),Timestamp('29022016')))
GROUP BY 1,2
此查询将返回 SUM 的结果,例如 145。 但是,如果我将 sum 的别名更改为“testing”或“test1234567890”,它将返回一个不同的值,高于或低于 145。
我想知道是否有人可以解释一下。需要解决方案!
非常感谢
【问题讨论】:
【参考方案1】:如果您可以共享您的数据集,则验证这一点会更容易... 但只是通过阅读您的代码:
您的问题似乎在这里:
LEAD(p_type, 1) OVER
(PARTITION BY u_id ORDER BY u_id) AS post_p
当您按相同属性进行分区和排序时,每个分区内的记录顺序可能会不一致。所以每次运行查询时, LEAD() 可能会返回不同的结果。
别名更改的原因可能与缓存结果的返回有关。
【讨论】:
以上是关于Google BigQuery:即使在 SUM 别名更改时,SUM 也会返回不同的结果的主要内容,如果未能解决你的问题,请参考以下文章
使用 SUM 过滤结果时,Google BigQuery 相关子查询错误
Google BigQuery - 根据另一列中的值减去一列的 SUM