注意load_table_from_storage 在destination 输入中接收到一个google.cloud.bigquery.table.Table 类的对象。这是您应该指定架构的地方。
例如,如果“bqc”是您的 BigQuery 客户端对象,则会创建一个 Table 对象:
ds = bqc.dataset('dataset_name')
table = ds.table('table_name')
现在假设您的 json 文件中有这些数据可供使用:
{"user_id": "1", "visitid": 1, "hits": [{"hitNumber": 1, "type": "PAGE"}, {"hitNumber": 2, "type": "PAGE"}]}
{"user_id": "2", "visitid": 1, "hits": [{"hitNumber": 1, "type": "EVENT"}, {"hitNumber": 2, "type": "PAGE"}]}
然后定义其架构如下:
from google.cloud.bigquery.schema import SchemaField
f1 = SchemaField('user_id', 'STRING')
f2 = SchemaField('visitid', 'INTEGER')
f3 = SchemaField('hits', 'RECORD', mode='REPEATED', fields=[SchemaField('hitNumber', 'INTEGER'), SchemaField('type', 'STRING')])
table.schema = [f1, f2, f3]
table.create()