使用 Pandas 从 BigQuery 呈现 JSON 响应?

Posted

技术标签:

【中文标题】使用 Pandas 从 BigQuery 呈现 JSON 响应?【英文标题】:Render JSON response from BigQuery using Pandas? 【发布时间】:2019-07-03 13:38:14 【问题描述】:

我是一名 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()

【问题讨论】:

【参考方案1】:

来自 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

【讨论】:

Stack Overflow 更喜欢“答案”不应该只包含一个链接。更多讨论:meta.***.com/a/265553/242457

以上是关于使用 Pandas 从 BigQuery 呈现 JSON 响应?的主要内容,如果未能解决你的问题,请参考以下文章

从 bigquery 数据集和 pandas 下载大数据

如何将 Pandas 数据框直接上传到 BigQuery?

数据库上的 bigquery pandas df

如何根据本地 csv 的 where 子句从 pandas 访问 Google Bigquery 数据

Python/Pandas/BigQuery:如何使用大量新的时间序列数据有效地更新现有表?

将数据从 BigQuery 导入 SQL Server [关闭]