如何在没有JSON格式的情况下生成BigQuery结果?

时间:2015-05-06 20:19:27

标签: python google-bigquery

我一直在调整bigquery-python-samples github repository找到的asynch_query.py脚本,以便从google bigquery返回数据。如上所述,返回结果的代码部分会生成JSON格式的项目列表。

def run(project_id, query_string, batch, num_retries, interval):
service = get_service()query_job = async_query(service,
                        project_id,
                        query_string,
                        batch,
                        num_retries)

poll_job(service,
         query_job['jobReference']['projectId'],
         query_job['jobReference']['jobId'],
         interval,
         num_retries)


for page in paging(service,
                   service.jobs().getQueryResults,
                   num_retries=num_retries,
                   **query_job['jobReference']):

    yield json.dumps(page['rows'])` 

我的查询返回单个项目:一个字段的MAX值。我想更改脚本以返回一个字符串对象,以便结果可以连接到另一个字符串对象。使用上面的代码,我得到这样的值:[<" f":[<" v":" ga_sessions_20150505">]>]。

我需要它才能返回查询结果:" ga_sessions_20150505"没有JSON装饰。我没有成功调整脚本来产生这种结果。我的目标是创建一个可以从另一个python脚本调用的函数,并将结果分配给变量以供进一步使用。有人可以提供一些帮助或指向一个有用的资源吗?

1 个答案:

答案 0 :(得分:2)

我相信你想要这样的东西:

for page in paging(service,
                   service.jobs().getQueryResults,
                   num_retries=num_retries,
                   **query_job['jobReference']):
  for row in page['rows']:
    # Each row is a dict with fields, 'f', containing
    # an array of table cells, one for each column
    # of the query output. Each cell is a dict
    # containing a value, 'v'.
    yield row['f'][0]['v']  # This query generates 1 column.