Если вы хотите перезаписать существующую таблицу, вы можете использовать google.cloud.bigquery.job.WriteDisposition
класс, пожалуйста, обратитесь к официальной документации .
У вас есть три возможности здесь: WRITE_APPEND
, WRITE_EMPTY
и WRITE_TRUNCATE
. Вам следует использовать WRITE_TRUNCATE
, который перезаписывает данные таблицы.
Здесь вы можете увидеть следующий пример:
from google.cloud import bigquery
import pandas
client = bigquery.Client()
table_id = "<YOUR_PROJECT>.<YOUR_DATASET>.<YOUR_TABLE_NAME>"
records = [
{"artist": u"Michael Jackson", "birth_year": 1958},
{"artist": u"Madonna", "birth_year": 1958},
{"artist": u"Shakira", "birth_year": 1977},
{"artist": u"Taylor Swift", "birth_year": 1989},
]
dataframe = pandas.DataFrame(
records,
columns=["artist", "birth_year"],
index=pandas.Index(
[u"Q2831", u"Q1744", u"Q34424", u"Q26876"], name="wikidata_id"
),
)
job_config = bigquery.LoadJobConfig(
schema=[
bigquery.SchemaField("artist", bigquery.enums.SqlTypeNames.STRING),
bigquery.SchemaField("wikidata_id", bigquery.enums.SqlTypeNames.STRING),
],
write_disposition="WRITE_TRUNCATE",
)
job = client.load_table_from_dataframe(
dataframe, table_id, job_config=job_config
)
job.result()
table = client.get_table(table_id)
)
Дайте мне знать, если он соответствует вашим потребностям. Надеюсь, это поможет.
ОБНОВЛЕНО:
Вы можете использовать следующий код Python для обновления представления таблицы с помощью клиентской библиотеки:
client = bigquery.Client(project="projectName")
table_ref = client.dataset('datasetName').table('tableViewName')
table = client.get_table(table_ref)
table.view_query = "SELECT * FROM `projectName.dataset.sourceTableName`"
table = client.update_table(table, ['view_query'])