我想使用bigquery运行2个。例如,如果我运行以下查询
SELECT 1;
SELECT 2;
当我使用下面的python脚本运行这个脚本时,我只获得第二个查询的结果。
def runquery();
bqclient = bigquery.client()
query = """ SELECT 1;
SELECT 2;"""
query_job = bqclient.query(query)
data = query_job.result()
rows = list(data)
print(rows)
结果:
[Row((2,), {'f0_': 0})]
但是,如果我在中运行相同的查询,我将能够查看这两个结果。
如何在Bigquery结果集中获得两个查询结果?我是否需要向client.query()语句中添加约伯配置?
发布于 2020-06-02 05:26:14
下面是一个快速的脚本示例。在本例中,父作业的类型为script,该脚本由两个子作业组成,两个子作业都是select语句。父作业完成后,您可以使用父筛选器调用list_jobs
来查找子作业并查询它们的结果。孩子的工作不会嵌套,所以你只需要担心一个级别的孩子低于父母的工作。
def multi_statement_script():
from google.cloud import bigquery
bqclient = bigquery.Client()
query = """ SELECT 1;
SELECT 2;
"""
parent_query = bqclient.query(query)
# wait for parent job to finish (which completes when all children are done)
parent_query.result()
print("parent job {}".format(parent_query.job_id))
children = bqclient.list_jobs(parent_job=parent_query.job_id)
# note the jobs are enumerated newest->oldest, so the reverse
# ordering specified in the script
for child in children:
print("job {}".format(child.job_id))
rows = list(child.result())
print(rows)
https://stackoverflow.com/questions/62144039
复制相似问题