我正在尝试在SQL语句中使用ParaQuery来实现BigQuery。
我正在使用https://cloud.google.com/bigquery/docs/parameterized-queries上找到的代码 我尝试连接到他们使用的相同数据表和我自己的数据表。
一切都执行得很好,没有错误弹出但也没有结果。我觉得我做错了一些小事但却无法弄清楚它是什么。还有其他人吗?
from google.cloud import bigquery
def query_named_params(corpus, word_count):
client = bigquery.Client()
query = """
SELECT word, word_count
FROM `bigquery-public-data.samples.shakespeare`
WHERE corpus = @corpus
AND word_count >= @min_word_count
ORDER BY word_count DESC;
"""
query_params = [
bigquery.ScalarQueryParameter('corpus', 'STRING', 'sonnets'),
bigquery.ScalarQueryParameter(
'min_word_count', 'INT64', 126)
]
job_config = bigquery.QueryJobConfig()
job_config.use_legacy_sql = False
job_config.query_parameters = query_params
query_job = client.query(query, job_config=job_config)
r = query_job.result() # Wait for job to complete
for row in r:
print(row)
if __name__ == '__main__':
query_named_params('corpus', 'min_word_count')
解
这是最终的代码。问题是谷歌给出的例子设置了两个参数的相同部分(语料库和语料库)等我交换了它们。我还需要在最终查询中传递参数名称。以下工作正常。
{{1}}
答案 0 :(得分:2)
看看这是否有效:
(...)
job_config = bigquery.QueryJobConfig()
job_config.use_legacy_sql = False
job_config.query_parameters = query_params
query_job = client.query(query, job_config=job_config)
r = query_job.result() # Wait for job to complete
for row in r:
print(row)
在您的代码中,您尝试连接到临时表以加载可以直接从QueryResults
检索的结果。