google-bigquery - 在 BigQuery 中使用流缓冲区更新或删除表?

标签 google-bigquery google-cloud-platform

尝试从通过 GCP Console 创建并使用 GCP BigQuery Node.js 表插入功能更新的表中删除记录时,出现以下错误。

带有流缓冲区的表 stackdriver-360-150317:my_dataset.users 不支持 UPDATE 或 DELETE DML 语句

该表是在没有流式传输功能的情况下创建的。从我在文档 Tables that have been written to recently via BigQuery Streaming (tabledata.insertall) cannot be modified using UPDATE or DELETE statements 中读到的内容来看.

这是否意味着一旦使用此函数将记录插入到表中,就无法删除记录?到底有没有?如果是这样的话,是否意味着需要删除该表并从头开始重新创建?如果不是这样的话。您能否建议一个解决方法来避免此问题?

谢谢!

<小时/>

包括新的 SEO 错误消息:“表上的 UPDATE 或 DELETE 语句...将影响流缓冲区中的行,这是不受支持的” -- Fh

最佳答案

要检查表是否有流缓冲区,请检查 tables.get 响应中名为 streamingBuffer 的部分,或者当流式传输到分区表时,检查流缓冲区的 _PARTITIONTIME 伪列具有 NULL 值,因此即使使用简单的 WHERE 查询也可以进行检查。

Streamed data首次流式插入表后的几秒钟内即可用于实时分析,但最多可能需要 90 分钟才能用于复制/导出和其他操作。您可能需要等待最多 90 分钟,以便所有缓冲区都保留在集群上。您可以使用查询来查看流缓冲区是否为空或不像您提到的那样。

如果您使用加载作业来创建表,您将不会有流缓冲区,但可能您向其中传输了一些值。

<小时/>

请注意下面的答案,以处理具有持续流缓冲区的表。只需使用 WHERE 过滤出最新分钟的数据,您的查询就会起作用。 -- Fh

关于google-bigquery - 在 BigQuery 中使用流缓冲区更新或删除表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43085896/

相关文章:

google-bigquery - Google BigQuery 使用估计设置查询大小限制

sql - BigQuery - 是否可以在 à FROM 中使用 IF 语句?

java - 使用 java 下载 Blob 会产生一个巨大的文件

google-bigquery - 如何根据 BigQuery 查询触发电子邮件或其他通知?

python - Cloud Run/Docker 加载大文件以进行 ML 预测

docker - kubernetes-GCP-无法连接到https://collector.newrelic.com

apache-spark - 如何将 PySpark 中的数据帧/RDD 以 CSV/Parquet 文件的形式快速保存到磁盘?

sql - 如何对不平等进行左外连接?

javascript - 将富消息集成到 Dialogflow 实现中

docker - 如何为 Kubernetes 创建本地开发环境?