Die*_*ego 20 google-bigquery google-cloud-platform
尝试从通过GCP控制台创建的表中删除记录并使用GCP BigQuery Node.js表插入函数更新时,我收到以下错误.
UPDATE or DELETE DML statements are not supported over table stackdriver-360-150317:my_dataset.users with streaming buffer
该表创建时没有流功能.从我在文档中阅读的内容Tables that have been written to recently via BigQuery Streaming (tabledata.insertall) cannot be modified using UPDATE or DELETE statements.
这是否意味着一旦将此函数插入表中,就无法删除记录?什么?如果是这种情况,是否意味着需要删除表并从头开始重新创建?如果不是这样的话.你能否建议一个解决方法来避免这个问题?
谢谢!
Pen*_*m10 22
要检查表是否有流缓冲区,请检查tables.get名为的部分的响应,streamingBuffer或者,当流式传输到分区表时,流缓冲区中的数据具有_PARTITIONTIME伪列的NULL值,因此即使使用简单的WHERE查询也可以检查.
流式数据可在第一次流式插入表格后的几秒内进行实时分析,但最多可能需要90分钟才能进行复制/导出和其他操作.您可能需要等待90分钟,以便所有缓冲区都保留在群集上.您可以使用查询来查看流缓冲区是否为空,或者不像您提到的那样.
如果使用加载作业来创建表,则不会有流缓冲区,但可能会向其传输一些值.
确保更改过滤器,以使它们不包括当前流缓冲区中可能包含的数据。
例如,当我向该表流式传输时,此查询失败:
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
Run Code Online (Sandbox Code Playgroud)
您可以通过删除旧记录来解决此问题:
DELETE FROM `project.dataset.table`
WHERE id LIKE '%-%'
AND ts < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 40 MINUTE)
4282 rows affected.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10907 次 |
| 最近记录: |