Google bigquery BigQuery将数据流化到表中并从这些表中进行选择

Google bigquery BigQuery将数据流化到表中并从这些表中进行选择,google-bigquery,streaming,Google Bigquery,Streaming,在将数据流传输到bigquery表之后,我需要等待多长时间才能从中选择数据 即使数据仍在流缓冲区中,我也可以选择数据,而不用担心丢失仍在缓冲区中的数据 但似乎我确实选择了流媒体之后,我丢失了一些数据 下面是按顺序排列的语句,一个接一个地执行 创建表A。将数据流到表A中 创建表B。将数据流到表B中 创建表C。将数据流到表C中 创建表D。处理表C数据并从表C中选择数据,将选择结果插入表D 删除表E(如果存在)。重新创建表E。联接查询从表A、B和D中选择,将查询结果插入表E。计数表E。例如,计数为20

在将数据流传输到bigquery表之后,我需要等待多长时间才能从中选择数据

即使数据仍在流缓冲区中,我也可以选择数据,而不用担心丢失仍在缓冲区中的数据

但似乎我确实选择了流媒体之后,我丢失了一些数据

下面是按顺序排列的语句,一个接一个地执行

  • 创建表A。将数据流到表A中
  • 创建表B。将数据流到表B中
  • 创建表C。将数据流到表C中
  • 创建表D。处理表C数据并从表C中选择数据,将选择结果插入表D
  • 删除表E(如果存在)。重新创建表E。联接查询从表A、B和D中选择,将查询结果插入表E。计数表E。例如,计数为200000
  • 现在,几分钟后。我只会重新运行步骤5

    Delete Table E if it exists. Re-Create Table E. Join query select from table A, B and D, insert the query result into Table E. Count Table E. 
    
    由于表A、B和D仍然相同,我应该得到与前一个计数相同的计数,例如200000。但这次我得到的数字超过了20万。它比以前的计数多了几百条记录,例如200200条记录

    现在我只想再次运行步骤5

    这一次,我又得到了200200张唱片

    这似乎是我第一次在流式传输数据之后选择语句。我丢了200张唱片。第二次和第三次,我等待了几分钟,然后从表中选择可能仍在从流缓冲区获取数据的数据,我获取了完整的数据集

    换句话说

  • 选择流式传输数据后,我会丢失一些记录
  • 流媒体播放后等待几分钟,然后选择。然后我将获得完整的数据集,而不会丢失任何记录
  • 请告知


    谢谢

    正如@GrahamPolley在他的评论中所说的,所有来自流插入的数据都可以在流完成几秒钟后查询。在某些情况下,例如中断,可能会阻止这种情况的发生,但是查询仍然会成功,因为它们会跳过流缓冲区中的一些数据

    这已经在Graham链接的问题中解释过了,但为了以防万一,我会让你回到关于这个主题的Google云文档中。您可以找到有关数据可用性的信息

    您还可以查看本文,以更好地了解其工作原理

    如果您希望知道流式处理后获得完整查询结果所需的更精确等待时间,这将取决于一些因素,例如流式处理缓冲区距离查询树的距离、用于存储数据的格式以及是否可以并行运行操作

    “将数据流传输到bigquery表后,我需要等待多长时间才能从中选择数据?”:可以立即进行分析(几秒钟内)。请参见此处: