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

Bigquery 将字符串转换为日期时间

如何在 BigQuery 中以字符串格式将工作日月份转换为日期?

BigQuery 帮助 - 如何转换并转换为浮点和日期格式

BigQuery 将字符串转换为日期

在 BigQuery 中,将对象的字符串化数组转换为非字符串化