【问题标题】:Use BigQuery REST or Java API to run query to get JSON output format使用 BigQuery REST 或 Java API 运行查询以获取 JSON 输出格式
【发布时间】: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


【解决方案1】:

目前,我们有两种可能的解决方案:

  1. 使用TO_JSON_STRING函数直接获取行的JSON表示形式的查询结果,如[{"employee":"peter","age":"40"},{"employee":"john","age":"3‌​0"},{"employee":"jac‌​k","age":"50"},{"emp‌​loyee":"michael","ag‌​e":"20"},{"employee"‌​:"eric","age":"60"}]
  2. 使用高级 BigQuery 客户端库或低级 REST API,但我们必须自己执行到 JSON 的转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 2016-08-08
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2017-07-06
    相关资源
    最近更新 更多