【发布时间】:2016-05-23 08:54:08
【问题描述】:
我在 bigquery 中有一个视图,其中包含来自不同数据集和表的字段,现在我想通过我的谷歌脚本查询这个视图。这样做的正确方法是什么。
实际上,目前我已经在 bigquery 中创建了一个单独的表并查询该表而不是视图,但我需要视图,因为当依赖表更新时,视图会更新。
如果我正在使用该表,它工作正常,但在视图的情况下我得到以下错误:
Exception: Response Code: 404. Message: Not Found.
Bigquery api 的返回查询结果。
try {
var job = BigQuery.newJob();
var config = BigQuery.newJobConfiguration();
var queryConfig = BigQuery.newJobConfigurationQuery();
queryConfig.setQuery(sql);
queryConfig.setMaximumBillingTier(5);
config.setQuery(queryConfig);
job.setConfiguration(config);
var jobid = BigQuery.Jobs.insert(job, projectNumber).jobReference;
queryResults = BigQuery.Jobs.getQueryResults(projectNumber, jobid.jobId);
}
catch (err) {
Logger.log(err);
Browser.msgBox(err);
return;
}
// Check on status of the Query Job : MONTHLY
while (queryResults.getJobComplete() == false) {
try {
queryResults = BigQuery.Jobs.getQueryResults(projectNumber, queryResults.jobId);
//queryResults = BigQuery.Jobs.getQueryResults(projectNumber, job.id);
}
catch (err) {
Logger.log(err);
Browser.msgBox(err);
return;
}
}
return queryResults;
如果我注释掉我的第一个 try 子句并使用下面的一个
try {
var queryRequest = BigQuery.newQueryRequest();
queryRequest.setQuery(sql).setTimeoutMs(100000);
queryResults = BigQuery.Jobs.query(queryRequest, projectNumber);
//Browser.msgBox(queryResults);
}
catch (err) {
Logger.log(err);
Browser.msgBox(err);
return;
}
然后它开始给我
Exception: Query exceeded resource limits for tier 1. Tier 3 or higher required.
【问题讨论】:
-
视图类查询和表类查询应该没有区别,都应该是有效的 SQL 查询。也许您的错误来自其他地方。
-
@Pentium10 ,我同意,但只有当我将表名更改为查看名时才会出现此错误
-
发布 SQL 可能有问题。
-
@Pentium10 sql 很好,因为当我在 bigquery 控制台中粘贴相同的查询时,我得到了输出。 SELECT SUM(finalprice)/100.0 FROM [Insights.redemption] WHERE role = 'customer' AND (STRFTIME_UTC_USEC(ordercreatedat * 1000 + 19800000, '%Y-%m-%d') BETWEEN '2016-05-11' AND ' 2016-05-12')
-
@Pentium10 实际上,在控制台中执行上述查询时,我必须添加无限计费层,在代码中我将其设置为 5,这可能是问题,但我尝试将其增加到 10 ..没有成功
标签: javascript mysql google-apps-script google-api google-bigquery