温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Render JSON response from BigQuery using Pandas?
flask google-bigquery pandas python

python - 使用 pandas 从BigQuery渲染JSON响应?

发布于 2020-03-27 10:37:10

我是一名Ruby开发人员,从事大量数据工作,因此决定改用Python。到目前为止,我很喜欢进行过渡,并被Pandas,Jupyter Notebook等震惊。

我当前的任务是编写一个轻量级的RESTful API,在后台运行针对Google BigQuery的查询。

我在Flask中运行了一个非常简单的测试,效果很好,但是在将BigQuery响应呈现为JSON时确实遇到了麻烦。为了解决这个问题,我使用了Pandas,然后将数据框转换为JSON。虽然有效,但这似乎是不必要的步骤,而且我甚至不确定这是否是Pandas的合法用例。我还读到随着数据量的增加,创建数据框可能会很慢。

以下是我在Flask中进行的小样机测试。听听经验丰富的Python开发人员的意见,对您有什么帮助,以及是否有其他我应该在此处查看的库,这将非常有帮助。

from flask import Flask
from google.cloud import bigquery
import pandas

app = Flask(__name__)

@app.route("/bq_test")
def bq_test():
    client = bigquery.Client.from_service_account_json('/my_creds.json')
    sql = """select * from `my_dataset.my_table` limit 1000"""
    query_job = client.query(sql).to_dataframe()
    return query_job.to_json(orient = "records")

if __name__ == "__main__":
    app.run()

查看更多

查看更多

提问者
Raoot
被浏览
164
67.1k 2019-07-04 03:20

从BigQuery文档中-

BigQuery支持帮助您检索以JSON格式的字符串存储的数据的函数,以及帮助您将数据转换为JSON格式的字符串的函数:

JSON_EXTRACT或JSON_EXTRACT_SCALAR

JSON_EXTRACT(json_string_expr, json_path_string_literal),它将JSON值返回为STRING。

JSON_EXTRACT_SCALAR(json_string_expr, json_path_string_literal),它返回标量JSON值作为STRING。

描述

json_string_expr参数必须是JSON格式的字符串。...

json_path_string_literal参数标识要从JSON格式的字符串中获取的一个或多个值。您可以使用JSONPath格式构造此参数

https://cloud.google.com/bigquery/docs/reference/standard-sql/json_functions