Google bigquery BigQuery的结果不一致:相同的查询,不同的行数

Google bigquery BigQuery的结果不一致:相同的查询,不同的行数,google-bigquery,Google Bigquery,今天我注意到我的一个查询的结果不一致:每次运行它时,返回的行数都不同(缓存已停用)。 查询基本上如下所示: SELECT * FROM mydataset.table1 AS t1 LEFT JOIN EACH mydataset.table2 AS t2 ON t1.deviceId=t2.deviceId LEFT JOIN EACH mydataset.table3 AS t3 ON t2.email=t3.email WHERE t3.email IS NOT NULL A

今天我注意到我的一个查询的结果不一致:每次运行它时,返回的行数都不同(缓存已停用)。 查询基本上如下所示:

SELECT  * 
FROM mydataset.table1 AS t1
LEFT JOIN EACH mydataset.table2 AS t2
  ON t1.deviceId=t2.deviceId
LEFT JOIN EACH mydataset.table3 AS t3
  ON t2.email=t3.email
WHERE  t3.email IS NOT NULL
AND (t3.date IS NULL OR DATE_ADD(t3.date, 5000, 'MINUTE')<TIMESTAMP('2016-07-27 15:20:11') )
选择*
从mydataset.table1中选择t1
左键将每个mydataset.table2连接为t2
在t1.deviceId=t2.deviceId上
左键将每个mydataset.table3连接为t3
在t2.email=t3.email上
其中t3.email不为空

(t3.date为NULL或date_ADD(t3.date,5000,'MINUTE')除非我遗漏了什么,否则您提供的查询是完全确定的,因此每次执行时都应该给出相同的结果。但是您说它“基本上”与实际查询相同,所以这可能是由于您更改了某些内容

为了找到原因,你可以做以下几件事:

  • select*
    替换为从表中显式选择字段(唯一确定每行的字段组合)
  • 按这些字段对表进行排序,以便每次执行查询时顺序都相同
  • 简化查询。在上面的查询中,您可以删除第一个条件,并将两个左侧外部联接转换为内部联接,得到相同的结果。然后,您可以开始逐个删除表和条件

在每一步之后,检查你是否仍然得到不同的结果集。然后当你找到关键步骤时,试着理解它为什么会导致你的问题。(或者在这里提问。)

你能提供一两个例子来说明你的
t3.date
和我的查询中这个字段的数据类型,t3.date是TIMESTAMP,是null,试着在没有它们的情况下运行-你会看到相同的行为吗?我怀疑每个相关的bug都有一些-很抱歉胡乱猜测不幸,没有eachhone我也有同样的问题-很高兴听到这个消息一种感觉,它不是每一个错误:o)