BigQuery 自动将字符串转换为 int
Posted
技术标签:
【中文标题】BigQuery 自动将字符串转换为 int【英文标题】:BigQuery converts automatically a string into int 【发布时间】:2021-09-28 14:34:21 【问题描述】:我有一个表,其中有一个名为field_string
的字段,类型为string
。我以 json 格式插入数据,有些行只有该字段的数字。例如"field_string": "123456"
。问题是 BigQuery 将该行的值转换为 int
并且无法插入它,因为类型不匹配。我无法转换字段的类型,因为某些行在该字段中确实包含字母或符号。
我有一个解决方法,可以在字符串中添加一个符号,这样 BigQuery 就不会对其进行转换,但我想知道我是否能找到不这样做的方法。
作业配置如下:
job_config = bigquery.LoadJobConfig(
autodetect=False,
write_disposition=bigquery.WriteDisposition.WRITE_APPEND,
source_format=bigquery.SourceFormat.NEWLINE_DELIMITED_JSON,
max_bad_records=10,
ignore_unknown_values=False,
)
谢谢!
【问题讨论】:
考虑向您的 job_config 添加架构:cloud.google.com/bigquery/docs/schemas#python 【参考方案1】:正如@rtenha 在评论中提到的,您应该在您的 LoadJobConfig 中传递架构。以下是示例架构的相同内容。
job_config = bigquery.LoadJobConfig(
schema=[
bigquery.SchemaField("id", "STRING"),
bigquery.SchemaField("field_string", "STRING"),
],
autodetect=False,
source_format=bigquery.SourceFormat.NEWLINE_DELIMITED_JSON
)
【讨论】:
效果很好。谢谢!以上是关于BigQuery 自动将字符串转换为 int的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 将 RFC 1123 日期格式字符串转换为 unixtime