BigQuery中能否使用多个WITH子句?语法报错问题咨询
BigQuery Standard SQL 多WITH子句的正确写法
BigQuery的#standardSQL支持定义多个WITH子句(即公共表表达式CTE),但你的写法不符合语法规范,这才导致了报错。
错误原因
- 你使用了多个独立的
WITH关键字,且每个CTE结尾都加了分号,这是Standard SQL不允许的。 - 正确规则是:只写一个
WITH开头,后续多个CTE之间用逗号分隔,最后一个CTE末尾不要加分号,直接衔接主查询。
修正后的代码
#StandardSQL WITH features AS ( SELECT fullVisitorId, IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site FROM `data-to-insights.ecommerce.web_analytics` WHERE totals.newVisits = 1 AND date BETWEEN '20160801' AND '20170430' ), features_label AS ( SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) # Combine features with feature labels for model training SELECT * EXCEPT(fullVisitorID) FROM features JOIN features_label USING (fullVisitorId);
关键修改点
- 仅保留最开头的一个
WITH关键字 - 两个CTE之间用逗号分隔
- 移除每个CTE结尾的分号
- 主查询直接跟在最后一个CTE之后,无需额外分隔符
这样调整后,代码即可正常执行。
内容的提问来源于stack exchange,提问作者krishna Prasad
相关产品推荐
相关产品推荐

