【问题标题】:Google App Script. JSON from BigQuery.Jobs.query response谷歌应用脚​​本。来自 BigQuery.Jobs.query 响应的 JSON
【发布时间】:2016-03-10 14:47:16
【问题描述】:

我想从 BigQuery.Jobs.query 的响应中获取 JSON 字符串。有什么简单的方法吗?

Google 应用脚本

var request = {
    query: 'SELECT TOP(word, 300) AS word, COUNT(*) AS word_count ' + 'FROM publicdata:samples.shakespeare WHERE LENGTH(word) > 10;'
};
var queryResults = BigQuery.Jobs.query(request, projectId);

我想从queryResults获取JSON文本

[
  {
    "word": "counterfeit",
    "word_count": "28"
  },
  {
    "word": "remembrance",
    "word_count": "24"
  },
  {
    "word": "countenance",
    "word_count": "24"
  },

感谢 Henrique Abreu,它成功了。

var request = {
  query: 'SELECT TOP(word, 300) AS word, COUNT(*) AS word_count ' + 'FROM publicdata:samples.shakespeare WHERE LENGTH(word) > 10;'
};
var queryResults = BigQuery.Jobs.query(request, projectId);
Logger.log(parseSimpleResults(queryResults));

[
   {
      word_count=28,
      word=counterfeit
   },
   {
      word_count=24,
      word=remembrance
   }
]

【问题讨论】:

    标签: google-apps-script google-bigquery


    【解决方案1】:

    我没有使用更多 BigQuery 查询结果对此进行测试,但它应该适用于“简单”结果。

    function parseSimpleResults(results) {
      var names = results.schema.fields.map(function(field){ return field.name; });
      return results.rows.map(function(row) {
        var obj = {};
        for( var i = 0, len = names.length; i < len; ++i ) {
          obj[names[i]] = row.f[i].v;
        }
        return obj;
      });
    }
    

    只需将您的 queryResults 变量传递给它,您应该会得到漂亮的对象数组。

    【讨论】:

      【解决方案2】:

      只是您探索的方向之一:

      local obj = JSON.parse(queryResults)
      return obj.rows[1].f[1].v, obj.rows[1].f[2].v
      

      【讨论】:

      • 我认为queryResults 已经是一个对象,因此不需要 JSON.parse 它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      相关资源
      最近更新 更多