You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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);

关键修改点

  1. 仅保留最开头的一个WITH关键字
  2. 两个CTE之间用逗号分隔
  3. 移除每个CTE结尾的分号
  4. 主查询直接跟在最后一个CTE之后,无需额外分隔符

这样调整后,代码即可正常执行。

内容的提问来源于stack exchange,提问作者krishna Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:19:58