Google bigquery Google BigQuery中参数化查询出错

Google bigquery Google BigQuery中参数化查询出错,google-bigquery,google-cloud-platform,Google Bigquery,Google Cloud Platform,我正在尝试使用GoogleBigQueryPython API编写一个查询。我正在将项目id和数据集名称设置为参数。我已经研究了实现中的参数化查询。但是当执行查询时,我得到以下错误 google.api_core.exceptions.BadRequest: 400 Invalid table name: @project:@dataset.AIRPORTS 我不知道是否可以用参数替换项目、数据集名称 下面是我的代码 from google.cloud import bigquery cli

我正在尝试使用GoogleBigQueryPython API编写一个查询。我正在将项目id和数据集名称设置为参数。我已经研究了实现中的参数化查询。但是当执行查询时,我得到以下错误

google.api_core.exceptions.BadRequest: 400 Invalid table name: @project:@dataset.AIRPORTS
我不知道是否可以用参数替换项目、数据集名称

下面是我的代码

from google.cloud import bigquery

client = bigquery.Client.from_service_account_json('service_account.json')
project = client.project

datasets = list(client.list_datasets())
dataset = datasets[0]
dataset_id = dataset.dataset_id

QUERY = (
        'SELECT * '
        'FROM `{}.{}.AIRPORTS`'.format(project, dataset_id)
    )

query = (
        'SELECT * '
        'FROM `@project.@dataset.AIRPORTS`'
    )

TIMEOUT = 30
param1 = bigquery.ScalarQueryParameter('project', 'STRING', project)
param2 = bigquery.ScalarQueryParameter('dataset', 'STRING', dataset_id)
job_config = bigquery.QueryJobConfig()
job_config.query_parameters = [param1, param2]

query_job = client.query(
    query, job_config=job_config)

iterator = query_job.result(timeout=TIMEOUT)
rows = list(iterator)

print(rows)

只能使用参数代替表达式,例如WHERE子句中的
column_name=@param_value
。表名不是表达式,所以不能使用参数代替项目或数据集名称。还要注意,为了使用参数,您需要使用标准SQL