GoogleCloudBigQuery查询作业的首选配置:QueryJobConfig()函数详解
发布时间:2024-01-19 14:55:57
Google Cloud BigQuery提供了QueryJobConfig()函数,可以用于设置和配置查询作业的首选参数。该函数包含的参数可以帮助优化查询的性能和资源利用,并且可以根据具体需求进行自定义设置。
下面是QueryJobConfig()函数的一些常用参数和用法示例:
1. use_legacy_sql:设置查询语法是否使用传统SQL。默认为False,表示使用标准SQL。
from google.cloud import bigquery
client = bigquery.Client()
# 创建QueryJobConfig对象
job_config = bigquery.QueryJobConfig()
# 设置使用传统SQL
job_config.use_legacy_sql = True
# 创建查询作业
query_job = client.query(
'SELECT * FROM dataset.table',
job_config=job_config
)
2. maximum_bytes_billed:设置查询作业允许消耗的最大数据大小(以字节为单位)。当查询作业需要消耗的数据大小超过该值时,会触发“扫描数据费用预警”。
from google.cloud import bigquery
client = bigquery.Client()
# 创建QueryJobConfig对象
job_config = bigquery.QueryJobConfig()
# 设置最大数据大小为1GB
job_config.maximum_bytes_billed = 10**9
# 创建查询作业
query_job = client.query(
'SELECT * FROM dataset.table',
job_config=job_config
)
3. query_parameters:设置查询参数,用于传递变量或动态参数到查询中。可以使用QueryParameter对象来定义参数的类型和值。
from google.cloud import bigquery
from google.cloud.bigquery import QueryJobConfig
client = bigquery.Client()
# 创建QueryJobConfig对象
job_config = QueryJobConfig()
# 定义参数类型和值
query_parameters = [
bigquery.ScalarQueryParameter("name", "STRING", "John"),
bigquery.ScalarQueryParameter("age", "INT64", 25)
]
# 设置查询参数
job_config.query_parameters = query_parameters
# 创建查询作业
query_job = client.query(
'SELECT * FROM dataset.table WHERE name = @name AND age = @age',
job_config=job_config
)
4. destination:设置查询结果的目标表。可以指定一个已存在的表或新建一个表。
from google.cloud import bigquery
client = bigquery.Client()
# 创建QueryJobConfig对象
job_config = bigquery.QueryJobConfig()
# 设置查询结果的目标表为新建的表
job_config.destination = client.dataset('dataset').table('new_table')
# 创建查询作业
query_job = client.query(
'SELECT * FROM dataset.table',
job_config=job_config
)
5. priority:设置查询作业的优先级。优先级分为INTERACTIVE(交互式)和BATCH(批处理),默认为INTERACTIVE。
from google.cloud import bigquery
client = bigquery.Client()
# 创建QueryJobConfig对象
job_config = bigquery.QueryJobConfig()
# 设置查询作业的优先级为BATCH
job_config.priority = bigquery.QueryPriority.BATCH
# 创建查询作业
query_job = client.query(
'SELECT * FROM dataset.table',
job_config=job_config
)
上述是QueryJobConfig()函数的一些常用参数和用法示例,通过灵活配置和使用这些参数,可以根据具体需求来优化查询作业的性能和资源利用。
