Ich versuche, eine Abfrage mit Google BigQuery Python API zu schreiben. Ich setze die Projekt-ID und den Datensatznamen als Parameter. Ich habe die Implementierung der parametrisierten Abfragen unter Google Github.io untersucht. Aber wenn die Abfrage ausgeführt wird bekomme ich folgende FehlerFehler bei der parametrisierten Abfrage in Google BigQuery
google.api_core.exceptions.BadRequest: 400 Invalid table name: @project:@dataset.AIRPORTS
Ich bin verwirrt, ob wir das Projekt ersetzen können, Dataset-Namen mit den Parametern.
Unten ist mein Code
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)