# #python #python-3.x #google-cloud-platform #google-bigquery
Вопрос:
Я использую следующий код (используя библиотеку bigquery клиента python)
with open('train-schema.json','r') as f: column_names = json.load(f)['ColName'] for key in column_names.keys(): dtype = column_names[key] schema.append(bigquery.SchemaField(key,column_names[key],)) # table = bigquery.Table(table_id, schema=schema) table = client.create_table(table) # Make an API request. print(schema) #output below print( "Created table {}.{}.{}".format(table.project, table.dataset_id, table.table_id) )
Список схем, если все в порядке
SchemaField('Sensor - 590', ' FLOAT64', 'NULLABLE', None, (), None), SchemaField('Output', 'INT', 'NULLABLE', None, (), None)]
Но код create_table возвращает
SchemaField('Sensor - 590', ' FLOAT64', 'NULLABLE', None, (), None), SchemaField('Output', 'INT', 'NULLABLE', None, (), None)]
Пробовал это с помощью FLOAT,FLOAT64,DECIMAL, но не работает.
Ответ №1:
Ошибка, с которой вы столкнулись, связана с дополнительным пробелом в значении в вашем файле JSON. Я попробовал использовать FLOAT64 и INT64, и оба они работают на меня.
Пример файла JSON:
{«a»:»Float64″}
Я выполнил следующий код :
import json from google.cloud import bigquery with open('train-schema.json','r') as f: client = bigquery.Client() table_id = "ProjectID.Dataset.Table" column_names = json.load(f) schema = [] for key in column_names.keys(): dtype = column_names[key] schema.append(bigquery.SchemaField(key,column_names[key],)) # table = bigquery.Table(table_id, schema=schema) table = client.create_table(table) # Make an API request. print(schema) #output below print( "Created table {}.{}.{}".format(table.project, table.dataset_id, table.table_id) )
Это дало мне следующий результат :