【问题标题】:When will the data streamed to BigQuery table be available for Query operations?流式传输到 BigQuery 表的数据何时可用于 Query 操作?
【发布时间】:2017-03-01 10:17:06
【问题描述】:

我有一个用例,我在其中执行以下操作:

  1. 将一些行插入到按日期分区的 BigQuery 表 (t1) 中。
  2. 在 t1 上运行一些查询以聚合数据并将它们存储在另一个表中。

在上述用例中,我今天遇到了一个问题,即我运行的查询在聚合数据中存在一些差异。当我稍后从 BigQuery 的 Web UI 执行相同的查询时,聚合很好。我怀疑某些插入的行不可用于查询。

我阅读了有关 BigQuery 数据可用性的 this 文档。对此我有以下疑惑:

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

有人可以澄清一下吗?

【问题讨论】:

    标签: java google-app-engine google-bigquery


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多