流式传输到 BigQuery 表的数据何时可用于 Query 操作?
Posted
技术标签:
【中文标题】流式传输到 BigQuery 表的数据何时可用于 Query 操作?【英文标题】:When will the data streamed to BigQuery table be available for Query operations? 【发布时间】:2017-03-01 10:17:06 【问题描述】:我有一个用例,我在其中执行以下操作:
-
将一些行插入到按日期分区的 BigQuery 表 (t1) 中。
在 t1 上运行一些查询以聚合数据并将它们存储在另一个表中。
在上述用例中,我今天遇到了一个问题,即我运行的查询在聚合数据中存在一些差异。当我稍后从 BigQuery 的 Web UI 执行相同的查询时,聚合很好。我怀疑某些插入的行不可用于查询。
我阅读了有关 BigQuery 数据可用性的 this 文档。对此我有以下疑惑:
-
该链接显示“在第一次流式插入表格后的几秒钟内,流式数据可用于实时分析”。在可用于实时分析之前等待的秒数是否有上限?
来自同一链接:“数据最多可能需要 90 分钟才能用于复制和导出操作”。以下操作是否受此限制?
将查询结果复制到另一个表中
将查询结果导出到云存储中的 csv 文件
同样来自同一链接-“当流式传输到分区表时,流式缓冲区中的数据具有 _PARTITIONTIME 伪列的 NULL 值”。这是否意味着我不应该在查询中使用 _PARTITIONTIME,直到数据存在于流缓冲区中?
有人可以澄清一下吗?
【问题讨论】:
【参考方案1】:您可以使用_PARTITIONTIME is null
来检测缓冲区中的行。您实际上可以使用此逻辑将此缓冲区进一步 UNION 到您希望的日期(例如今天)。您可以在一些读取缓冲区的逻辑中进行连线,如果时间为空,它将为其余的查询逻辑设置时间。
这个缓冲区在设计上有点延迟,但是如果您需要立即访问数据,您需要使用 IS NULL 技巧来查询它。
【讨论】:
谢谢@Pentium10。关于第一个和第二个问题的任何信息也会有所帮助。【参考方案2】:问题:
以下操作是否受此限制?
Copy the result of a query to another table Exporting the result of a query to a csv file in cloud storage
查询的结果可立即用于任何操作(如复制和导出) - 即使该查询是针对仍在缓冲区中的流数据运行的。
【讨论】:
谢谢@Felipe以上是关于流式传输到 BigQuery 表的数据何时可用于 Query 操作?的主要内容,如果未能解决你的问题,请参考以下文章
Google BigQuery - 将数据流式传输到 BigQuery