我在BigQuery上有一个Day-Partitioned Table.当我尝试使用如下查询从表中删除一些行时:
DELETE FROM `MY_DATASET.partitioned_table` WHERE id = 2374180
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误:分区表尚不支持DML语句.
通过Google快速搜索,我可以访问:https://cloud.google.com/bigquery/docs/loading-data-sql-dml,其中还说:"尚不支持修改分区表的DML语句."
那么现在,我们可以使用一种解决方法来删除分区表中的行吗?
SQL上有很多很棒的帖子可以选择唯一的行并写入(截断)表格,以便删除dus.例如
WITH ev AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY loadTime DESC) AS rowNum
FROM `duplicates`
)
SELECT
* EXCEPT(rowNum)
FROM
ev
WHERE rowNum = 1
Run Code Online (Sandbox Code Playgroud)
我试图使用DML和DELETE稍微改变一下(例如,如果你不想使用BQ savedQuery,只需执行SQL).我想做的大致是:
WITH dup_events AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY loadTime DESC) AS rowNum
FROM `duplicates`
)
DELETE FROM
dup_events
WHERE rowNum > 1
Run Code Online (Sandbox Code Playgroud)
但在控制台中出现此错误:
Syntax error: Expected "(" or keyword SELECT but got keyword DELETE at [10:1]
Run Code Online (Sandbox Code Playgroud)
可以使用DELETE实现(standardSQL)吗?
谢谢!