2017-03-01 36 views
1

我有我做了以下的使用情况:何时将流式传输到BigQuery表的数据用于查询操作?

  1. 插入一些行到BigQuery资料表(T1),这是日期分区。
  2. 在t1上运行一些查询来聚合数据并将它们存储在另一个表中。

在上面的用例中,我遇到了一个问题,今天我的查询在聚合数据中有一些差异。当我在一段时间之后从BigQuery的Web UI执行相同的查询时,聚合很好。我怀疑有些插入的行不适用于查询。

我阅读了this BigQuery数据可用性文档。我在这下面的疑惑:

  1. 链接说:“流数据可用于第一流插入几秒钟内实时分析到表”。在可用于实时分析之前是否有等待秒数的上限?
  2. 来自同一链接:“数据可能需要长达90分钟才能用于复制和导出操作”。以下操作是否受此限制?
    • 复制的查询到另一个表
    • 流至分区表时导出云存储
  3. 同样来自同一链路“查询到CSV文件的结果的结果,数据流缓冲区中的数据对于_PARTITIONTIME伪列“具有NULL值”。这是否意味着我不应该在查询中使用_PARTITIONTIME,直到数据出现在streamingBuffer中?

有人能澄清这些吗?

回答

1

对于问题:

执行以下操作都在限制之列?

Copy the result of a query to another table 
Exporting the result of a query to a csv file in cloud storage 

查询的结果是立即可用于任何操作(如复制和出口) - 即使该查询已在缓冲区已跑了流数据依然。

+0

谢谢@Felipe –

2

您可以使用_PARTITIONTIME is null来检测哪些行在缓冲区中。你实际上可以使用这个逻辑来进一步将这个缓冲区联合到你想要的日期(比如今天)。你可以在一些读取缓冲区的逻辑中进行连线,在时间为空的地方,它会为查询逻辑的其余部分设置一个时间。

此缓冲区在设计上有点延迟,但如果您需要立即访问数据,则需要使用IS NULL技巧才能查询它。

+0

谢谢@ Pentium10。关于第一个和第二个问题的任何信息也会有帮助。 –

相关问题