如果要为表设置过期时间,可以使用以下方法:from datetime import datetime, timedelta
from google.cloud.bigquery.schema import SchemaField
def load_data_from_gcs(dataset,
table_name,
table_schema,
source,
source_format,
expiration_time):
bigquery_client = bigquery.Client()
dataset = bigquery_client.dataset(dataset)
table = dataset.table(table_name)
table.schema = table_schema
table.expires = expiration_time
if not table.created:
table.create()
job_name = str(uuid.uuid4())
job= bigquery_client.load_table_from_storage(
job_name, table, source)
job.source_format = source_format
job.begin()
wait_for_job(job)
dataset = 'FirebaseArchive'
table_name = 'test12'
gcs_source = 'gs://dataworks-356fa-backups/firetobq.json'
source_format = 'NEWLINE_DELIMITED_JSON'
table.schema = [SchemaField(field1), SchemaField(field2), (...)]
expiration_time = datetime.now() + timedelta(seconds=604800)
load_data_from_gcs(dataset,
table_name,
table_schema,
gcs_source,
source_format,
expiration_time)
请注意,唯一的区别是它设置的代码行:
^{pr2}$
其值必须是datetime类型(此处定义为expiration_time = datetime.now() + timedelta(seconds=604800))
不确定是否可以使用pythonapi使用模式自动检测,但是您仍然可以使用SchemaFields发送此信息。例如,如果您的表有两个字段user_id和{},都是INTEGERS,那么模式将是:table_schema = [SchemaField('user_id', field_type='INT64'),
SchemaField('job_id', field_type='INT64')]
有关架构如何在BigQuery中工作的详细信息,您可以找到here。在
[编辑]:
{a2,如果你想把数据写下来,你就可以:job.create_disposition = 'WRITE_TRUNCATE'
job.begin()
在您的load_data_from_gcs函数中。这将自动删除表并使用存储文件中的数据创建一个新表。您不必像之前定义的那样为它定义一个模式(因此对您来说可能是一个更简单的解决方案)。在