python设置时间过期改变状态_在bigquery中使用Python创建新表并设置过期日期

如果要为表设置过期时间,可以使用以下方法: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函数中。这将自动删除表并使用存储文件中的数据创建一个新表。您不必像之前定义的那样为它定义一个模式(因此对您来说可能是一个更简单的解决方案)。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值