我正在使用python 2.7(现在无法更改)和google.cloud.bigquery的Google python客户端库v0.28,我试图弄清楚我是怎样的#&# 39; d做一个"创建表XX作为从Y中选择a,b,c,其中n =' helloworld'"。
我们称之为" CREATE TABLE AS SELECT" (CTAS)在其他数据库中,虽然我不确定通过python在bq中执行此操作的最佳方法是什么。
这是一篇有趣的文章,谈论使用一份工作,但我认为bq python库只有几种类型的工作,所以我不知道从哪一个开始。 (LoadJob,CopyJob,ExtractJob和QueryJob) https://chartio.com/resources/tutorials/how-to-create-a-table-from-a-query-in-google-bigquery/
这是一个很好的bigquery_client.create_table函数,但我不认为我可以设置查询配置字段或其中的任何实际配置字段。
因此,您可以提供任何帮助或指导,我们将不胜感激。如果你在美国,我希望你有一个愉快的感恩节假期。
非常感谢,并向所有我的大朋友致以最诚挚的问候...... Rich
这个可以关闭,下面的帮助和以下链接解决了我需要的东西,我把我的代码放在这里为其他可能需要它的人。
代码被劫持 Create a table from query results in Google BigQuery
def create_table_as_select(dataset_name, table_name, sqlQuery, project=None):
try:
job_config = bigquery.QueryJobConfig()
# Set configuration.query.destinationTable
dataset_ref = bigquery_client.dataset(dataset_name)
table_ref = dataset_ref.table(table_name)
job_config.destination = table_ref
# Set configuration.query.createDisposition
job_config.create_disposition = 'CREATE_IF_NEEDED'
# Set configuration.query.writeDisposition
job_config.write_disposition = 'WRITE_APPEND'
# Start the query
job = bigquery_client.query(sqlQuery, job_config=job_config)
# Wait for the query to finish
job.result()
returnMsg = 'Created table {} .'.format(table_name)
return returnMsg
except Exception as e:
errorStr = 'ERROR (create_table_as_select): ' + str(e)
print(errorStr)
raise
答案 0 :(得分:2)
指导将不胜感激
BigQuery不支持DDL(希望如此) - 因此您应该使用常规方式:jobs.insert分别使用destination table和write disposition
https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.query