Insert_rows_json с усечением записи

Я работаю над небольшим скриптом Python для записи данных, которые я получаю из API, в таблицу BigQuery. У меня есть только небольшое количество данных. Данные из API обновляются ежедневно. Я хочу иметь возможность перезаписывать назначение таблицы самыми последними данными каждый день.

У меня есть следующий скрипт в облачной функции:

  data = {'col': 'value'} # the JSON response I get from the API (simplified output)

  job_config = bigquery.LoadJobConfig(
    schema = [
      bigquery.SchemaField("col", "STRING"),
    ],
    write_disposition = "WRITE_TRUNCATE",
  )     

  job = bq_client.insert_rows_json(table_id, [data], job_config=job_config)

и следующая ошибка Client.insert_rows_json() got an unexpected keyword argument 'job_config'

Должен ли я использовать метод, отличный от insert_rows_json()? Как лучше всего каждый день записывать эти новые данные в одну и ту же таблицу?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что это лучший способ, но вы не можете пройти JobConfig с режимом WRITE_TRUNCATE. Вы должны выполнить отдельный запрос к truncate таблице, а затем добавить все свои словари в BigQuery с помощью insert_rows_json :

data = {'col': 'value'} # the JSON response I get from the API (simplified output)

# Truncate the table
bq_client = bigquery.Client()
query_job = bq_client.query(f"TRUNCATE table {table_id}")

results = query_job.result()

# Append your Dict from api to BQ
job = bq_client.insert_rows_json(table_id, [data])

insert_rows_json использует следующий API insertAll.

Другие вопросы по теме