首页 > 解决方案 > Biqquery:错误 - 某些行属于不同的分区而不是目标分区

问题描述

我的表中有以下分区,按“日期”分区

Row partition_id

1   20210222

2   20210223

我正在尝试使用 Bigquery python API 覆盖其中一个分区“20210222”

我的表名是table_name$20210222,我正在WRITE_TRUNCATE用作写处置,但我收到以下错误:

google.api_core.exceptions.BadRequest: 400 Some rows belong to different partitions
      rather than destination partition 20210222

我希望能够通过我的 python 代码只覆盖其中一个分区。它适用于但添加重复并WRITE_APPEND删除以前的表并且只添加新数据。我想替换现有分区的数据。WRITE_TRUNCATEWRITE_APPENDWRITE_TRUNCATE

标签: pythongoogle-bigquery

解决方案


BigQuery 将所有TIMESTAMP值转换并存储在 UTC 时区中。因此,如果您有一个按DAY表分区并且您尝试在与 UTC 不同的时区插入时间戳,它将首先转换为 UTC,然后存储在相关分区中。

在您的情况下,您似乎有一个值2020-12-25 00:30:00 CET,当在存储时转换为 UTC 时2020-12-24 23:30:00 UTC,它与同一天的其他值(在您的时区中)属于不同的分区。

这会导致您遇到错误,因为您尝试覆盖特定分区并且您尝试插入的某些条目属于不同的分区。


推荐阅读