我目前正在将数据从 sql server 数据库系统迁移到 bigquery,我在尝试从具有事件流缓冲区的 bigquery 表中删除记录时遇到了问题,你能确认流缓冲区在之前持续了多长时间吗?它被删除以便删除操作可以针对它运行?我发现这在开发过程中造成了不必要的不便。
非常感谢您的帮助,期待您的来信。
最好的问候,
最佳答案
根据官方文档
数据可能需要长达 90 分钟才能变为可用以进行复制和导出操作。此外,当流式传输到分区表时,流式缓冲区中的数据的 _PARTITIONTIME 伪列为 NULL 值。要查看数据是否可用于复制和导出,请检查名为 streamingBuffer
的部分的 tables.get 响应。如果该部分不存在,您的数据应该可用于复制或导出,并且 _PARTITIONTIME 伪列应该具有非空值。此外,可以利用 streamingBuffer.oldestEntryTime
字段来识别流缓冲区中记录的存在时间。
流式传输到分区表
数据流式处理时,将过去7天到 future 3天的数据放在流式缓冲区中,然后提取到相应的分区中。在此窗口之外(但在 1 年 6 个月范围内)的数据放在流式缓冲区中,然后提取到 UNPARTITIONED 分区。当有足够的未分区数据时,它被加载到相应的分区。
我们通过延迟删除请求或每 24 小时执行一次来克服您的情况。您现在可以编写删除查询的脚本,以使用 streamingBuffer.oldestEntryTime
作为参数,并尝试删除比该时间更早的任何内容。
https://cloud.google.com/bigquery/streaming-data-into-bigquery
关于google-bigquery - bigquery steaming buffer持续多久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59048726/