Google bigquery 在BigQuery中使用流缓冲区更新或删除表?
在尝试从通过GCP控制台创建并使用GCP BigQuery Node.js table insert函数更新的表中删除记录时,出现以下错误Google bigquery 在BigQuery中使用流缓冲区更新或删除表?,google-bigquery,google-cloud-platform,Google Bigquery,Google Cloud Platform,在尝试从通过GCP控制台创建并使用GCP BigQuery Node.js table insert函数更新的表中删除记录时,出现以下错误 表stackdriver-360-150317:my_dataset.users上不支持更新或删除DML语句 该表是在没有流媒体功能的情况下创建的。从我在文档中读到的 这是否意味着一旦使用此函数将记录插入表中,就无法删除记录?完全如果是这样,是否意味着需要从头开始删除并重新创建表?如果不是这样的话。你能建议一个解决方法来避免这个问题吗 谢谢 包括SEO的新
表stackdriver-360-150317:my_dataset.users上不支持更新或删除DML语句
该表是在没有流媒体功能的情况下创建的。从我在文档中读到的
这是否意味着一旦使用此函数将记录插入表中,就无法删除记录?完全如果是这样,是否意味着需要从头开始删除并重新创建表?如果不是这样的话。你能建议一个解决方法来避免这个问题吗
谢谢
包括SEO的新错误消息:“表上的UPDATE或DELETE语句…将影响流式缓冲区中的行,这是不受支持的”-Fh要检查表是否有流式缓冲区,请检查表。获取名为streamingBuffer
的节的响应,或者,当流式处理到分区表时,流式缓冲区中的数据在\u PARTITIONTIME
伪列中有一个空值,因此即使使用简单的WHERE查询也可以检查
可在首次流式插入表后几秒钟内进行实时分析,但最多需要90分钟才能用于复制/导出和其他操作。您可能需要等待90分钟,以便在集群上保留所有缓冲区。您可以使用查询查看流式缓冲区是否为空或与您提到的不同
如果使用load job创建表,则不会有流式缓冲区,但可能会向其中流式传输一些值
请注意下面的答案,以便使用具有正在进行的流缓冲区的表。只要使用WHERE
过滤掉最近几分钟的数据,你的查询就可以了Fh确保更改过滤器,使其不包含可能在当前流媒体缓冲区中的数据
例如,当我流式传输到此表时,此查询失败:
DELETE FROM `project.dataset.table`
WHERE id LIKE '%-%'
Error: UPDATE or DELETE statement over table project.dataset.table would affect rows in the streaming buffer, which is not supported
您只能通过删除旧记录来修复它:
DELETE FROM `project.dataset.table`
WHERE id LIKE '%-%'
AND ts < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 40 MINUTE)
4282 rows affected.
从'project.dataset.table'中删除
其中id为“%-%”
和ts
谢谢你的回答。这很有帮助。在streamingBuffer不再包含在表中后的第二天,我就可以删除记录了。get API response。我意识到streamingBuffer只是一个瞬态。您只需等待它不再显示即可更新或删除记录。正如你上面解释的。谢谢迭戈的提问,我也有同样的困惑,谢谢@Pentium10的回答。有没有办法从GCP Web UI检查流缓冲区?i、 不是通过Node.js API和table.get吗?只是仔细看了一下-当流缓冲区中有元素时,这是非常清楚的。查看表元数据时只需点击“刷新”。谢谢大家!是否可以刷新流式缓冲区?若要检查是否有流式缓冲区,请按表格上的>详细信息>底部的检查是否有标题“流式缓冲区统计”。如果是,那么缓冲区中有一些内容。对我来说,它与
一起工作,比如@Pentium10。谢谢我知道这个问题有点晚了,但是ts
是什么意思?这是bigquery上的一个列名吗?是的,我猜这将是一个他跟踪插入的列timestamp@FelipeHoffa,related:一旦记录被成功删除,它们是否会在有限的时间内继续显示在SELECT查询中?