Вы не можете специально приводить тип при загрузке данных. Вы должны выполнить приведение после или до загрузки данных. Некоторые кастинги выполняются автоматически, как вы увидите в моем примере. Вы можете указать кастинг, если понимаете, как это будет сделано автоматически. Продолжайте читать для лучшего понимания:
Я провел тест с использованием пользовательского интерфейса и интерфейса командной строки:
{"col1": "b", "col2": 0}
{"col1": "c", "col2": 0}
{"col1": "d", "col2": "1.0"}
{"col1": "e", "col2": "1.0"}
{"col1": "f", "col2": "1.0"}
{"col1": "g", "col2": 0}
{"col1": "h", "col2": 0}
{"col1": "i", "col2": 0}
И первый столбец был импортирован как строка, а второй как float. Я использовал точно такую же команду:
bq load --autodetect --ignore_unknown_values=true --max_bad_records=100 --project_id=MYPROJECTid --source_format=NEWLINE_DELIMITED_JSON dataset.tablename ./jsontoimp.json
Так что я не смог воспроизвести вашу проблему, для меня все нормально. В любом случае, у вас есть два варианта, если он не распознается как следует:
1.- Просто укажите схему с этим столбцом в виде строки или закодируйте некоторый скрипт, чтобы заменить 0 на «0». Затем загрузите эти данные. После того, как все загружено, вы можете обновить тип столбца. Длинное объяснение здесь . Это не выглядит самым дешевым решением.
2.- Что бы я сделал, код некоторого сценария, возможно, с регулярным выражением, чтобы заменить «1.0» на 1.0, а затем, после этого, загрузить обработанный файл.
Подробнее о обновлении данных и отливок в BigQuery .