Google App Script多行SQL含AS语句报<ID>错误求助
解决Google Apps Script中BigQuery查询的语法错误
这个问题其实是字符串拼接时缺少空格导致的语法错误,很容易被忽略!
咱们来拆解一下问题:
你原来的代码拼接后生成的SQL是:SELECT SUM(amount)FROM mybigquerytable;
虽然写法不规范,但BigQuery的SQL解析器可能比较宽容,勉强能识别出FROM关键字,所以能正常运行。
但添加AS foo之后,拼接后的SQL变成了:SELECT SUM(amount) AS fooFROM mybigquerytable;
这里foo和FROM被直接连在了一起,变成了一个无效的标识符fooFROM,BigQuery完全无法识别这个语法,所以抛出了错误。
两种可行的解决方法
- 在拼接的字符串片段之间补充空格:
// 在第一个字符串末尾加空格 var request = { query: 'SELECT SUM(amount) AS foo ' + 'FROM mybigquerytable;' }; // 或者在第二个字符串开头加空格 var request = { query: 'SELECT SUM(amount) AS foo' + ' FROM mybigquerytable;' };
- 使用ES6模板字符串(Google Apps Script支持该语法,代码可读性更高):
var request = { query: `SELECT SUM(amount) AS foo FROM mybigquerytable;` };
调整后生成的SQL就是标准语法:SELECT SUM(amount) AS foo FROM mybigquerytable;,BigQuery就能正常解析执行了。
内容的提问来源于stack exchange,提问作者Simon Breton
相关产品推荐
相关产品推荐

