首页 > 解决方案 > 使用 Pandas 从 BigQuery 呈现 JSON 响应?

问题描述

我是一名 Ruby 开发人员,从事大量数据工作,因此决定改用 Python。到目前为止,我很享受这种转变,并且被 Pandas、Jupyter Notebooks 等所震撼。

我当前的任务是编写一个轻量级的 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()

标签: pythonpandasflaskgoogle-bigquery

解决方案


来自 BigQuery 文档-

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

JSON_EXTRACT 或 JSON_EXTRACT_SCALAR

JSON_EXTRACT(json_string_expr, json_path_string_literal),它将 JSON 值作为字符串返回。

JSON_EXTRACT_SCALAR(json_string_expr, json_path_string_literal),它将标量 JSON 值作为字符串返回。

描述

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

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

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


推荐阅读