python - 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_TRUNCATE
WRITE_APPEND
WRITE_TRUNCATE
解决方案
BigQuery 将所有TIMESTAMP
值转换并存储在 UTC 时区中。因此,如果您有一个按DAY
表分区并且您尝试在与 UTC 不同的时区插入时间戳,它将首先转换为 UTC,然后存储在相关分区中。
在您的情况下,您似乎有一个值2020-12-25 00:30:00 CET
,当在存储时转换为 UTC 时2020-12-24 23:30:00 UTC
,它与同一天的其他值(在您的时区中)属于不同的分区。
这会导致您遇到错误,因为您尝试覆盖特定分区并且您尝试插入的某些条目属于不同的分区。
推荐阅读
- c++ - Spdlog v1.3.1 异步记录器示例在 ubuntu 18.04 中出现错误
- java - JanusGraph:以不同方式进行查询时为相同的说明符返回不同的输出
- php - 如何在 laravel 中处理这个迁移错误?
- ios - 发生未知的服务器端错误,错误的应用程序:/../../。App(ipa) 路径必须是绝对路径或压缩文件的 URL
- angular - 如何避免使用 RxJS 运算符的多个嵌套订阅?
- d3.js - 使用 3DJS 的链接图
- mysql - 基于 EER 创建数据库的问题
- android - 更新视图适配器recyclerView mvvm(播放声音和更新视图)
- r - 如何使用 SonarQube API 将报告正确上传到 SonarQube
- php - 如何将php代码格式化为刀片格式