google apps script, BigQueryの結果取得用関数
確か、helpページにあったやつを少し修正したもの。
結果が、行数を列数をかけて、10万くらいなら、たぶん普通にいける。そうでない場合は、limitとかをselect文にいれるか、、queryの書き直し。
code: javascript
function runQuery(projectId, query){
var request = {query: query};
//Logger.log(request.query);
var queryResults = BigQuery.Jobs.query(request, projectId);
var jobId = queryResults.jobReference.jobId;
// Check on status of the Query Job.
var sleepTimeMs = 500;
while (!queryResults.jobComplete) {
Utilities.sleep(sleepTimeMs);
sleepTimeMs *= 2;
queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId);
}
//Logger.log(queryResults.rows);
var rows = queryResults.rows;
while (queryResults.pageToken) {
queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {
pageToken: queryResults.pageToken
});
rows = rows.concat(queryResults.rows);
}
var headers = queryResults.schema.fields.map(function(field) {return field.name;});
if (rows) {
// Append the results.
var data = new Array(rows.length);
for (var i = 0; i < rows.length; i++) {
datai = new Array(cols.length); for (var j = 0; j < cols.length; j++) {
}
}
} else {
//throw "something Wrong"
}
}