我刚刚开始使用python BigQuery API(https://github.com/GoogleCloudPlatform/google-cloud-python/tree/master/bigquery),然后简单地尝试(https://github.com/pydata/pandas-gbq)并意识到pandas-gbq不支持RECORD类型,即没有嵌套字段。 / p>
现在我正在尝试将嵌套数据上传到BigQuery。我设法使用相应的Schema创建表,但是我正在努力上传json数据。
from google.cloud import bigquery
from google.cloud.bigquery import Dataset
from google.cloud.bigquery import LoadJobConfig
from google.cloud.bigquery import SchemaField
SCHEMA = [
SchemaField('full_name', 'STRING', mode='required'),
SchemaField('age', 'INTEGER', mode='required'),
SchemaField('address', 'RECORD', mode='REPEATED', fields=(
SchemaField('test', 'STRING', mode='NULLABLE'),
SchemaField('second','STRING', mode='NULLABLE')
))
]
table_ref = client.dataset('TestApartments').table('Test2')
table = bigquery.Table(table_ref, schema=SCHEMA)
table = client.create_table(table)
当尝试将非常简单的JSON上传到bigquery时,我得到一个相当模糊的错误
400读取数据时出错,错误消息:遇到JSON表 错误太多,放弃了。行数:1;错误:1。请查看 错误流以获取更多详细信息。
除了它让我有点伤心,它放弃我:),显然错误描述并没有真正帮助... 请在下面找到我如何上传JSON和抽样数据的方法。
job_config = bigquery.LoadJobConfig()
job_config.source_format = bigquery.SourceFormat.NEWLINE_DELIMITED_JSON
with open('testjson.json', 'rb') as source_file:
job = client.load_table_from_file(
source_file,
table_ref,
location='US', # Must match the destination dataset location.
job_config=job_config) # API request
job.result() # Waits for table load to complete.
print('Loaded {} rows into {}:{}.'.format(
job.output_rows, dataset_id, table_id))
这是我的JSON对象
" [{' FULL_NAME':'测试''年龄':2'地址':[{& #39;测试':'喜''第二':' HI2'}]}]"
JSON示例会很精彩,因为如果我没有弄错的话,这似乎是上传嵌套数据的唯一方法。