Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery 在BigQuery中使用流缓冲区更新或删除表?_Google Bigquery_Google Cloud Platform - Fatal编程技术网

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

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的新

在尝试从通过GCP控制台创建并使用GCP BigQuery Node.js table insert函数更新的表中删除记录时,出现以下错误

表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查询中?