我在BigQuery上有一个日分区表.当我尝试使用如下查询从表中删除一些行时:
DELETE FROM `MY_DATASET.partitioned_table` WHERE id = 2374180我得到以下错误:
错误:在分区表上还不支持DML语句。
Google的快速搜索引导我到:https://cloud.google.com/bigquery/docs/loading-data-sql-dml,它还说:“修改分区表的DML语句还不支持”。
现在,我们是否可以在从分区表中删除行时使用这个解决方案?
发布于 2017-03-02 18:35:41
在这个阶段,DML有一些已知问题/limitation。
例如:
也要注意配额限额
您可以做的是将整个分区复制到一个非分区表中,并在那里执行DML语句。而不是将临时表写回分区。另外,如果您每天都会遇到DML更新限制语句,则需要创建表的副本,并在新表上运行DML以避免限制。
发布于 2018-02-21 17:40:31
可以使用命令行bq rm删除分区表中的分区,如下所示:
bq rm 'mydataset.mytable$20160301'发布于 2017-12-08 12:40:15
我已经完成了,没有临时表,步骤:
1)准备查询,从特定分区中选择应保留的所有行:
SELECT * FROM `your_data_set.tablename` WHERE
_PARTITIONTIME = timestamp('2017-12-07')
AND condition_to_keep_rows_which_shouldn't_be_deleted = 'condition' 如果有必要,对其他分区运行此命令。
2)选择目标表作为查询结果,将指向特定分区,需要提供如下表名:
tablename$201712073)选中“覆盖表”选项-> it 只覆盖特定的分区
4)运行查询,结果从点分区冗余行将被删除!
//请记住,您可能需要为其他分区运行此命令,其中要删除的行分布在多个分区上
https://stackoverflow.com/questions/42561860
复制相似问题