当在 BigQuery 中使用 EXECUTE IMMEDIATE 语句时,如果 SQL 语句中包含标识符(如表名、列名等),则可能会出现问题。这是因为 EXECUTE IMMEDIATE 语句使用的是字符串,无法自动解析其中的标识符。为了解决这个问题,可以使用以下两种方法之一:
修改 SQL 语句,将标识符替换为实际的值。这种方法比较繁琐,但是比较可靠,并且适用于所有的标识符。
使用 BigQuery API 中的 jobs.insert 方法来执行 SQL 语句。这种方法需要编写一些额外的代码,但是可以自动解析标识符,并且支持参数化查询。以下是使用该方法的代码示例:
from google.cloud import bigquery
client = bigquery.Client()
query = """
SELECT *
FROM `project.dataset.table`
WHERE column = @value
"""
job_config = bigquery.QueryJobConfig(
query_parameters=[
bigquery.ScalarQueryParameter('value', 'STRING', 'example_value')
]
)
query_job = client.query(query, job_config=job_config)
results = query_job.result()