BigQuery 返回完全相同的 SELECT Query 的不一致(= 不同)结果,但执行时间除外
Posted
技术标签:
【中文标题】BigQuery 返回完全相同的 SELECT Query 的不一致(= 不同)结果,但执行时间除外【英文标题】:BigQuery returned inconsistent (= different) results of exactly same SELECT Query except for executing time 【发布时间】:2015-03-25 02:19:03 【问题描述】:查询是SELECT COUNT(*) FROM [table.click] WHERE time >= DATE_ADD('2015-03-25 06:00:00', -9, 'HOUR') AND time < DATE_ADD('2015-03-25 07:00:00', -9, 'HOUR')
我想获取时间在 6 到 7 之间的记录。
[07:25:57] $ bq query "SELECT COUNT(*) FROM [table.click] WHERE time >= DATE_ADD('2015-03-25 06:00:00', -9, 'HOUR') AND time < DATE_ADD('2015-03-25 07:00:00', -9, 'HOUR')"
Waiting on bqjob_r5e92dc9eca9622ed_0000014c4de50d59_1 ... (0s) Current status: DONE
+-----+
| f0_ |
+-----+
| 0 |
+-----+`
但是我导入数据的过程已经运行了很长时间,并且我确认这个过程没有问题(= 6 到 7 之间的流式导入运行良好)。
10 分钟后,我执行了完全相同的查询。
[07:35:15]$ bq query "SELECT COUNT(*) FROM [table.click] WHERE time >= DATE_ADD('2015-03-25 06:00:00', -9, 'HOUR') AND time < DATE_ADD('2015-03-25 07:00:00', -9, 'HOUR')"
Waiting on bqjob_r338acff11f068b44_0000014c4ded45c5_1 ... (2s) Current status: DONE
+------+
| f0_ |
+------+
| 1954 |
+------+`
这次效果不错!之后,BigQuery 不断返回 1954 条记录,如下所示。
[10:49:59]$ bq query "SELECT COUNT(*) FROM [table.click] WHERE time >= DATE_ADD('2015-03-25 06:00:00', -9, 'HOUR') AND time < DATE_ADD('2015-03-25 07:00:00', -9, 'HOUR')"
Waiting on bqjob_r5693edc7523c1ca2_0000014c4e9f4f52_1 ... (0s) Current status: DONE
+------+
| f0_ |
+------+
| 1954 |
+------+`
Google BigQuery same queries give different results是一个类似的问题帖,但是the BigQuery team
回复说问题已经解决,所以我决定发出这个问题帖。
这个问题发生了两次。第一次是2015-03-24 22:00:00 JST ~ 2015-03-24 23:00:00 JST
,第二次是2015-03-25 06:00:00 JST ~ 2015-03-25 07:00:00 JST
。
我附上了Google Cloud Status at the time that happened
的捕获,显示全局 BigQuery 没有系统问题。
【问题讨论】:
流式插入的数据有一小段延迟可供查询。在报告流式插入完成并开始运行查询后经过了多少分钟? 谢谢。 > 有一个小的延迟流式插入数据可供查询。是的,我理解这样的延迟。 > 在您的流式插入报告完成并开始运行查询之后经过了多少分钟?至少过去了 10 分钟,最多过去了 90 分钟。我确认在查询运行良好之前大约 10 分钟报告了所有流式插入完成(刷新)。而我上面示例中的click
表明这些数据记录非常稀疏,同时,更多的卷记录(如impression
)运行良好。考虑到这个数据量,关于click
数据的流式插入很快就完成了,所以最多过去了90分钟。
我现在在 2020 年面临这个问题,我没有流式数据,只是使用视图查询 BigQuery 中的其他表,有时结果中有行,有时没有..
【参考方案1】:
正如 Pentium10 所指出的,您似乎受到流数据延迟的事实的打击。
似乎您的第一个查询在流式插入传播到各处之前命中了您的数据。这是正常的。似乎不是陈旧数据的问题,更多的是,正如奔腾指出的那样,等待流数据后的延迟。 10 分钟似乎有点长,但我看不出真正的问题在哪里。
【讨论】:
以上是关于BigQuery 返回完全相同的 SELECT Query 的不一致(= 不同)结果,但执行时间除外的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery SQL Select 返回键值对而不是两个单独的列
SQL SELECT 名称 LIKE $name 但不完全相同的名称两次