【发布时间】:2017-12-23 18:48:34
【问题描述】:
我正在尝试使用 google-cloud API 对表运行查询并以 JSON 格式获取结果。到目前为止,我已经探索了以下解决方案,但没有一个是令人满意的:
- 使用
TO_JSON_STRING函数修改SQL。它必须修改原始SQL。并且 JSON 格式与导出表格时使用的 JSON 格式不同。 - 使用REST API,但是我还没有找到支持JSON输出格式的相关文档。
- 我发现 BigQuery 命令支持查询数据并生成 JSON 格式,如
bq query --format json --project_id myProject "select * from sandbox.keweiquerytable"。所以我自然认为它应该在后台调用一个 REST API。但是如何找到相关的 REST API?
【问题讨论】:
-
你见过这个问题吗?它通过使用
curl来获取JSON 格式的查询结果:stackoverflow.com/questions/45108038/…。您可以从 Java 代码发出 POST 请求,而不是使用curl。 -
谢谢。进行 REST 调用将获得更“通用”的 JSON 格式输出。但不是行的 JSON 表示。我希望类似以下内容(bigquery web ui 或
bq命令中的相同 JSON):bq query --format json --project_id my-test-project "select * from sandbox.employees"将得到以下结果[{"employee":"peter","age":"40"},{"employee":"john","age":"30"},{"employee":"jack","age":"50"},{"employee":"michael","age":"20"},{"employee":"eric","age":"60"}] -
您需要自己执行该转换。
-
谢谢。如果我理解正确,我可以同时使用低级 REST API 或高级 BigQuery 客户端库。但无论我选择哪种解决方案,我都必须手动转换查询响应以获得与 web ui/export 中相同的 JSON 格式,例如:
[{"employee":"peter","age":"40"}, ...]。目前,除了使用TO_JSON_STRING函数外,还没有对这种转换的原生支持。bq query --format json ...工具在后台使用 REST API,但它的 python 实现“手动”将 REST 响应转换为我们看到的 json 输出[{"employee":"peter","age":"40"}] -
听起来不错。
标签: java json rest api google-bigquery