我们正在使用Python API以自动方式向'扩充'我们的BigQuery表编写代码
我们通过使用键值标签系统(正常)并通过以下方式更新列描述来实现:
但是,最后步骤在处理具有RECORD类型字段的表时出错。尝试更新架构时,我在RECORD字段内的第一个嵌套字段上收到以下错误:
SchemaField(u'nestedField',u'integer',u'NULLABLE',None,())不是 JSON可序列化
代码如下所示:
orig_table = bigquery_client.get_table(table)
schema = list(orig_table.schema)
new_schema = list()
for column in schema:
columntxt = *do something to define the column metadata*
new_schema.append(bigquery.SchemaField(column.name, column.field_type, column.fields, description=columntxt ))
orig_table.schema = new_schema
table = bigquery_client.update_table(orig_table, ['schema', 'labels'])
如何正确解决此问题/使代码与嵌套架构表一起使用?
答案 0 :(得分:1)
您构建请求的方式是向SchemaField
构造函数发送错误的参数(而后者又无法编码为JSON)。
请改为尝试:
for column in schema:
columntxt = *do something to define the column metadata*
new_schema.append(bigquery.SchemaField(
column.name,
column.field_type,
fields=column.fields,
description=columntxt,
mode=column.mode))
orig_table.schema = new_schema
table = bigquery_client.update_table(orig_table, ['schema'])