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

How can I generate a BigQuery result without JSON formatting?

我一直在将 bigquery-python-samples github repository 中的 asynch_query.py 脚本改编为来自 google bigquery 的 return 数据。如所写,returns 结果生成 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'])` 

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

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

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

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.