BigQuery - 由于针对 table 的并发更新,事务中止

BigQuery - Transaction is aborted due to concurrent update against table

在 Google BigQuery 上,我在分区 table 上进行了 运行 5 个并发更新,然后出现以下错误:

Transaction is aborted due to concurrent update against table dataset_test.test1

Google DML docs之后,它说我可以进行并发更新,因为它们不修改同一个分区。

我正在为语句提供分区位置以确保它们修改不同的分区。

这是我的 table:

    CREATE TABLE `dataset_test.test1`
(
  partition_id INT64,
  familia_g STRING,
  target STRING,
  status STRING,
  datetime DATETIME
)
PARTITION BY RANGE_BUCKET(partition_id, GENERATE_ARRAY(0, 5, 1))

下面是一个语句示例:

UPDATE `dataset_test.test1` 
            SET status = 'processing',
                datetime = current_datetime
            WHERE partition_id = 2 
            AND familia_g = 'familia1' 
            AND target = 'df'

因为我有 运行 5 个陈述,partition_id 每个陈述收到 0 到 4 个。

这是其他分区的另一个声明:

UPDATE `dataset_test.test1` 
                SET status = 'processing',
                    datetime = current_datetime
                WHERE partition_id = 4 
                AND familia_g = 'familia3' 
                AND target = 'df'

感谢提前。

已解决!

因为我 运行 这些关于不同 BigQuery 程序的语句,它们各自打开新事务。

根据 transactions docs 并发事务(冲突)被取消。