Google BigQuery会为同一查询返回不同的结果

时间:2015-11-26 17:08:28

标签: google-bigquery

我有以下查询:

SELECT FIRST(userId) userId, phone
FROM [Streaming_Union.client_card] c
    JOIN [FunnelReport.0050_client_cards_to_users] u 
    ON c.client_card_id = u.client_card_id GROUP BY phone
HAVING userId = "c.297500" 

在BigQuery UI的选项中,我禁用了查询缓存。然后我单击“运行查询”,等待结果,然后再次单击,再次等待,然后单击,依此类推。从一次到另一次,我随机得到三种不同结果中的一种:

第一:

 Row    userId  phone
 1    c.297500  (XXX) XXX-XXXX   
 2    c.297500  (YYY) YYY-YYYY   
 3    c.297500  (ZZZ) ZZZ-ZZZZ  

第二:

 Row    userId  phone
 1    c.297500  (XXX) XXX-XXXX   
 2    c.297500  (YYY) YYY-YYYY   

第三

Row userId  phone
Query returned zero records.

我确信在此测试期间,JOIN两侧的表格不会更改。当我使用JOIN EACH而不是JOIN时,我遇到同样的问题。

我想知道是否有人可以提供帮助。是大查询错误还是记录在案的行为?

非常感谢!

1 个答案:

答案 0 :(得分:1)

请尝试以下确认"行为"你看:

SELECT FIRST(first) AS first, second
FROM [publicdata:samples.trigrams]
GROUP BY second
HAVING first = 'merry'

如果禁用缓存 - 每次运行时都会返回不同的结果 我认为这是因为FIRST()函数的性质。

您需要重写您的查询以保证每个手机始终获得相同的第一个用户,因此最终结果是确定性的。像下面的查询使用MAX()而不是FIRST()

SELECT MAX(first) AS first, second
FROM [publicdata:samples.trigrams]
GROUP BY second
HAVING first = 'merry'