Google 应用程序脚本。 JSON 来自 BigQuery.Jobs.query 回复
Google App Script. JSON from BigQuery.Jobs.query response
我想从 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
}
]
只是您探索的方向之一:
local obj = JSON.parse(queryResults)
return obj.rows[1].f[1].v, obj.rows[1].f[2].v
我还没有用更多的 BigQuery 查询结果对此进行测试,但对于 "simple" 结果应该可以正常工作。
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
变量传递给它,您就应该得到漂亮的对象数组。
我想从 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
[
{
"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
}
]
只是您探索的方向之一:
local obj = JSON.parse(queryResults)
return obj.rows[1].f[1].v, obj.rows[1].f[2].v
我还没有用更多的 BigQuery 查询结果对此进行测试,但对于 "simple" 结果应该可以正常工作。
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
变量传递给它,您就应该得到漂亮的对象数组。