【问题标题】:How to get query results from TableResult in json using BigQuery API如何使用 BigQuery API 从 json 中的 TableResult 获取查询结果
【发布时间】:2018-07-30 03:13:46
【问题描述】:

我正在按照https://cloud.google.com/bigquery/create-simple-app-api#bigquery-simple-app-java 中给出的示例从 BigQuery API 获取查询结果。

TableResult result = queryJob.getQueryResults();

它以 TableResults 类型返回结果,但我需要以 json 格式获取结果。

TableResult{rows=[[FieldValue{attribute=PRIMITIVE, value=(...)},
    FieldValue{attribute=PRIMITIVE, value=(...)},
    FieldValue{attribute=PRIMITIVE, value=(...)},
    FieldValue{attribute=PRIMITIVE, value=(...)},
    FieldValue{attribute=PRIMITIVE, value=(...)},
    FieldValue{attribute=PRIMITIVE, value=(...)},
    FieldValue{attribute=PRIMITIVE, value=(...)}],(...)

如何将 TableResults 类型的结果转换为 json 甚至 csv?

【问题讨论】:

  • 您可以使用TO_JSON_STRING 作为查询的一部分吗?您将获得一组 JSON 字符串作为结果。

标签: google-bigquery


【解决方案1】:

要将表中的行转换为 JSON,您可以使用函数 TO_JSON_STRING [1]。 要获取带有格式的 JSON,您需要将参数“true”传递给函数。

新查询如下所示:

#standardSQL
“SELECT TO_JSON_STRING(t,true)"
 + "FROM ( 
    SELECT CONCAT('https://stackoverflow.com/questions/', CAST(id as STRING)) as url, "
     + "view_count "
     + "FROM `bigquery-public-data.stackoverflow.posts_questions` "
     + "WHERE tags like '%google-bigquery%' "
     + "ORDER BY favorite_count DESC LIMIT 10) as t”

输出:

TableResult{rows=[[FieldValue{attribute=PRIMITIVE, value={
  "url": "https://stackoverflow.com/questions/6607552",
  "view_count": 24524
}}], [FieldValue{attribute=PRIMITIVE, value={
  "url": "https://stackoverflow.com/questions/20349189",
  "view_count": 4298
}}], [FieldValue{attribute=PRIMITIVE, value={
  "url": "https://stackoverflow.com/questions/22734777",
  "view_count": 7940
}}], [FieldValue{attribute=PRIMITIVE, value={
  "url": "https://stackoverflow.com/questions/27537720",
  "view_count": 2039
(...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2018-12-06
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多