2017-11-06 17 views
1

Google BigQuery Python APIを使用してクエリを作成しようとしています。プロジェクトIDとデータセット名をパラメータとして設定しています。私はGoogle Github.ioのパラメータ化されたクエリの実装を調べました。私は次のエラーGoogle BigQueryでパラメータ化されたクエリでエラーが発生しました

google.api_core.exceptions.BadRequest: 400 Invalid table name: @project:@dataset.AIRPORTS 

を取得するクエリを実行する場合でも、私たちはプロジェクト、パラメータを持つデータセットの名前に置き換えることができるかどうか混乱しています。以下は

私のコードにのみ、そのようなWHERE句でcolumn_name = @param_valueとして、表現の代わりにパラメータを使用することができます

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 `@[email protected]`' 
    ) 

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) 

答えて

1

です。テーブル名は式ではないので、プロジェクト名またはデータセット名の代わりにパラメータを使用することはできません。また、パラメータを使用するために標準SQLを使用する必要があることにも注意してください。

関連する問題