【发布时间】:2017-11-13 13:52:49
【问题描述】:
与 BigQuery 文档相比,我们看到它确实在从流式数据分区表(标准 SQL)中选择数据时缓存结果。
示例: 当我们使用以下方法对流式数据分区表执行确定性日期扫描时:
where (_PARTITIONTIME > '2017-11-12' or _PARTITIONTIME is null)
...如果我们在该时间范围内触发相同的确切查询,BigQuery 会将数据缓存 5 到 20 分钟。
在我对documentation 的解释中,它声明它不应该缓存数据:
'当查询引用的任何表最近收到流式插入(流式缓冲区附加到表)时,即使没有新行到达'
重要提示:
- 我们的测试查询查询真正连续不断到达我们的心跳事件
- 我们实际上想要这种缓存行为,因为我们并不总是需要让数据到最后一秒都是真实的。我们只是想知道我们是否真的可以依赖这种行为。
我们的问题:
这里发生了什么/为什么会发生 BQ 缓存?
此数据在 BQ 缓存中停留的时间是“随机的”(5-20 分钟之间)。这是什么意思?
【问题讨论】:
-
由于您在问题中交替使用流表和分区表,我不确定您指的是哪一个。或者,您正在流式传输到分区表并认为缓存不应该工作,但它正在工作?
-
我更正了它。它也是一个日期分区的流表。是的,根据文档缓存不应该工作。但显然确实如此。虽然不是 24 小时,但在 5-20 分钟之间......