Google BigQuery TIMESTAMP对应Python数据类型及类型转换技术问询
关于Google BigQuery类型与Python类型映射的问题
嘿,我来帮你搞定这两个问题:
1. BigQuery TIMESTAMP对应的Python类型
Google BigQuery的TIMESTAMP类型对应的Python数据类型是**datetime.datetime**。更严谨的做法是使用带时区信息(比如UTC时区)的datetime.datetime对象,这样能避免时区转换带来的时间偏差或精度问题;如果是不带时区的naive datetime,BigQuery会默认将其视为UTC时间处理,但显式指定时区会更稳妥。
2. 完善类型转换函数
我帮你补充了TIMESTAMP的转换逻辑,同时扩展了其他常见BigQuery类型的映射,让函数覆盖更多常规场景:
import datetime def convert_type_to_bigquery(object_type): if isinstance(object_type, str): return 'STRING' elif isinstance(object_type, datetime.datetime): return 'TIMESTAMP' elif isinstance(object_type, datetime.date): return 'DATE' elif isinstance(object_type, int): return 'INT64' elif isinstance(object_type, float): return 'FLOAT64' elif isinstance(object_type, bool): return 'BOOL' elif isinstance(object_type, bytes): return 'BYTES' # 若需要处理数组、结构体等复杂类型,可在这里扩展逻辑 else: # 未匹配到类型时,可根据需求抛出异常或返回默认值 raise TypeError(f"Unsupported data type: {type(object_type)}")
小提示:
- 针对
TIMESTAMP的判断逻辑会直接识别datetime.datetime实例,返回对应的BigQuery类型标识。 - 额外补充的
DATE(对应Python的datetime.date)、数值、布尔等类型映射,能覆盖大部分日常数据校验场景。 - 如果需要处理数组、结构体这类复杂类型,可以进一步扩展函数,比如检测
list类型返回ARRAY,但要注意BigQuery的数组要求元素类型统一,可能需要递归校验元素类型。
内容的提问来源于stack exchange,提问作者James Lloyd
相关产品推荐
相关产品推荐

