Google BigQuery使用TABLE_DATE_RANGE()出现语法错误如何解决?
问题原因
- 核心报错根源:
TABLE_DATE_RANGE()是 BigQuery 旧版Legacy SQL 专属语法,你当前的查询运行环境默认启用的是标准SQL(Standard SQL),标准SQL不支持该函数语法,解析时无法识别该函数结构,因此抛出语法错误。 - 附加语法问题:就算切换到Legacy SQL模式,你代码中包裹
TABLE_DATE_RANGE()的多余括号也不符合Legacy SQL的语法要求,同样会触发报错。
解决方案
方案1:沿用Legacy SQL写法
先删除多余的外层括号,再将BigQuery查询的运行模式切换为「Legacy SQL」即可正常运行,修正后代码如下:
SELECT DISTINCT visitId, fullVisitorId FROM TABLE_DATE_RANGE([project.view.ga_sessions_], TIMESTAMP('2021-09-12'), TIMESTAMP('2021-09-13'))
方案2:使用标准SQL语法改写(更推荐)
标准SQL是BigQuery当前的官方推荐模式,不需要切换运行模式,用通配符表语法替代TABLE_DATE_RANGE()即可,改写后代码如下:
SELECT DISTINCT visitId, fullVisitorId FROM `project.view.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20210912' AND '20210913'
注意:GA导出的日表后缀格式为
YYYYMMDD,因此_TABLE_SUFFIX匹配值要写无横杠的8位日期字符串,不要用2021-09-12这类带横杠的格式。
内容的提问来源于stack exchange,提问作者Geezer
相关产品推荐
相关产品推荐

