我有以下查询:
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时,我遇到同样的问题。
我想知道是否有人可以提供帮助。是大查询错误还是记录在案的行为?
非常感谢!
答案 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'