我是一名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()
从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
Stack Overflow希望“答案”不应仅包含链接。此处有更多讨论:meta.stackoverflow.com/a/265553/242457