python中通过API对BigQuery表进行分区

2024-04-29 19:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python来访问bigqueryapi。我已经成功地运行了查询和编写了新的表,但希望确保这些输出表是按https://cloud.google.com/bigquery/docs/creating-partitioned-tables分区的

查询的输出将包含以下列:event_date[格式为“2017-11-12”的字符串]、metric[整数]

根据下面的代码,我将“分区类型”代码分配给不同的对象,但它从未返回错误。在

(我想知道如何判断我的分区工作是否实际有效也很有用(例如,如何识别_PARTITIONTIME伪列))。在

dest_table_id = "BQresults"
query_job = client.run_async_query(str(uuid.uuid4()), query))
query_job.allow_large_results = True
dest_dataset = client.dataset(dest_dataset_id)
dest_table = dest_dataset.table(dest_table_id)
dest_table.partitioning_type ="DAY"

query_job.destination = dest_table
query_job.write_disposition = 'WRITE_TRUNCATE'
query_job.use_legacy_sql = False
query_job.begin()
query_job.result()  

Tags: 代码httpscomclientidcloudgoogletable
1条回答
网友
1楼 · 发布于 2024-04-29 19:39:56

如果要检查表是否已分区,请使用get_table()方法(https://github.com/GoogleCloudPlatform/google-cloud-python/blob/4b107613b0fcf139569504e9d44fa4a0793b4fd0/bigquery/google/cloud/bigquery/client.py#L290)并检查返回对象的partitioning_type属性。您还可以使用带有作业id的get_job()获取job对象,并检查配置中是否设置了time_分区。在

我不认为您正在运行的查询作业会导致分区表中的结果,因为时间\u分区应该在作业配置中设置,而客户端似乎没有这样做。如果为true,则可以首先创建分区表并将现有表用作目标。在

相关问题 更多 >