是否可以在保留缓存的同时流式传输到BigQuery分区表?

时间:2018-07-10 08:55:25

标签: google-bigquery

我在BigQuery中有一个按天划分的表格。数据流作业使用流式API连续插入新记录,但只能插入到最新的分区(在极少数情况下为两个,当数据在几天之内略有混乱时)。

另一方面,我查询了很多表,汇总了历史月份,也没有涉及最近的日子,即流缓冲。

我想利用此类查询结果的缓存。不幸的是,即使从理论上讲,缓存到表的流不受流化的行的影响,流传输到表也会禁用缓存。

如何在历史分区上使用缓存,同时仍然能够流式传输到最新的分区?

如果开箱即用是不可能的,那么以下最佳设计是

  • 管理两个表:“ recent”和“ historical”。
  • 流式传输发生在“最近”。
  • 定期将“最近”合并为“历史”,然后清除“最近”。
  • 查询是基于对“历史”和“最近”的某种看法发生的?

如果是的话,如果仅查询“历史”数据,我将如何定义将使用缓存的视图?还是我需要拥有自己的查询重写工具?

也许您还有其他想法?

1 个答案:

答案 0 :(得分:1)

您不能use caching and streaming contemporaneously。您已经有一个feature request asking for the same

作为一种解决方法,如您所说,您需要两个不同的表并使用数据冗余。我同意您发布的方法:

  1. 管理两个表:“最近”(流)和“历史”(查询)。
  2. 定期将“最近”合并为“历史”,然后清除“最近”。

检查here如何“管理分区表”。有一个基于bq cp命令的用例列表,可以帮助您将“最近”表合并到“历史”表中。