#python #google-bigquery
#python #google-bigquery
Вопрос:
Я загружаю данные из локального csv в большой запрос — загружаю данные в BQ.
Я использую auto detect schema
, но он обнаруживает только на основе первых 100 строк: Auto detect schema samples up to the first 100 rows so if the column contains all integer for up to the first 100 rows then the data type will be integer
Итак, если у вас есть, например, 100 целых чисел, а затем в строке 101 с плавающей запятой — он будет обнаружен ошибочно.
Есть ли способ объединить — сохранить автоматически обнаруженную схему для каждого правильно обнаруженного столбца и исправить схему в столбцах, которые она обнаружила ошибочно?
например, в python что-то вроде этого:
def create_job_config(table_name):
schema = None
if "sth" in table_name:
schema = [
bigquery.SchemaField("client_id", "INT64"),
bigquery.SchemaField("shop_id", "INT64")
]
job_config = bigquery.LoadJobConfig(
autodetect=True,
schema=schema,
skip_leading_rows=1,
allow_quoted_newlines=True,
# The source format defaults to CSV, so the line below is optional.
source_format=bigquery.SourceFormat.CSV,
field_delimiter=";"
)
return job_config
итак, что-то вроде: обнаружена автоматическая схема BQ, исправленная списком исправлений.