首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以从bigquery.client.query()查看两个结果集吗?

可以从bigquery.client.query()查看两个结果集吗?
EN

Stack Overflow用户
提问于 2020-06-02 02:53:26
回答 1查看 485关注 0票数 3

我想使用bigquery运行2个。例如,如果我运行以下查询

代码语言:javascript
运行
复制
SELECT 1;
SELECT 2;

当我使用下面的python脚本运行这个脚本时,我只获得第二个查询的结果。

代码语言:javascript
运行
复制
def runquery();
    bqclient = bigquery.client()
    query = """ SELECT 1; 
                SELECT 2;"""
    query_job = bqclient.query(query)
    data = query_job.result()
    rows = list(data)
    print(rows)

结果:

代码语言:javascript
运行
复制
[Row((2,), {'f0_': 0})]

但是,如果我在中运行相同的查询,我将能够查看这两个结果。

如何在Bigquery结果集中获得两个查询结果?我是否需要向client.query()语句中添加约伯配置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-02 05:26:14

下面是一个快速的脚本示例。在本例中,父作业的类型为script,该脚本由两个子作业组成,两个子作业都是select语句。父作业完成后,您可以使用父筛选器调用list_jobs来查找子作业并查询它们的结果。孩子的工作不会嵌套,所以你只需要担心一个级别的孩子低于父母的工作。

代码语言:javascript
运行
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62144039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档