google-apps-script - 如何在 Google Apps 脚本中迭代 BigQuery API 结果?
问题描述
我正在 Google Apps 脚本中处理一些自动查询。我有一个包含 300k+ 结果的结果数据集,但我只能获得前 30k。如何修改此代码,以便它遍历所有查询结果以返回所有 300k 记录?我想将所有内容都返回到变量“rows”中。
编辑以获取更多信息:我尝试过像 getNextPage() 和 iterateAll() 这样的 BQ API 方法,但我无法在 queryResults 上调用这些方法。我查看了 Stack Overflow 并没有太多关于此的文档。此当前脚本当前挂在 while(queryResults.pagetoken) 循环上,无法输出所有 300k 结果。
var request = {
query: query,
"useLegacySql": false
};
Logger.log(request);
var queryResults = BigQuery.Jobs.query(request, projectId);
var jobId = queryResults.jobReference.jobId;
Logger.log(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);
}
// Get all the rows of results.
var rows = queryResults.rows;
Logger.log(queryResults.pageToken);
while (queryResults.pageToken) {
queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {
pageToken: queryResults.pageToken
});
rows = rows.concat(queryResults.rows);
Logger.log('row check:');
Logger.log(queryResults.totalRows);
Logger.log(queryResults.rows.length);
}
解决方案
推荐阅读
- opencl - SIMD Work Group、Block Size 对 FPGA 上内核执行时间的影响
- python - 输出值不正确
- javascript - 使用 Vue Js 和 Query 来自 jira 的 Rest API 请求
- laravel - Elasticsearch 和 Laravel scout-elasticsearch-driver 返回一个空响应
- python - 如何通过查询压缩熊猫行?
- java - 在春季数据休息中发布的最佳实践
- python - 决策树 - 找出当遍历树时常量预测如何变化
- matlab - Matlab 从 txt 文件中读取坐标并将它们存储在矩阵中
- excel - 循环 VLOOKUP 以在成功时删除行
- php - 如何使用合法的 XML 将数组转换为 SimpleXML