google.api_core.исключения.Плохой запрос: 400 СООБЩЕНИЙ https://bigquery.googleapis.com/bigquery/: Недопустимое значение для типа: FLOAT не является допустимым значением

# #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) )  

Это дало мне следующий результат :

введите описание изображения здесь