BigQuery 中的 WITH 语句后跟 SET

WITH statement followed by SET in BigQuery

我正在将几个 SQL 语句流水线化在一起,发现我无法从 WITH 语句继续执行并使用结​​果继续并设置一个变量。我得到的错误是:

Syntax error: Expected "(" or keyword SELECT or keyword WITH but got keyword SET at [17:2]

语句看起来像

WITH newtable AS (SELECT session, var FROM `table` WHERE session...)
(SET myvariable = (SELECT count(*) FROM newtable WHERE ....);

根据此 GCP 文档,您只能在 SELECT 语句之后使用 WITHhttps://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#sql_syntax

鉴于该限制,您可以只使用 DDL 语句从查询结果创建 table 并设置变量。

create table newtable AS (SELECT session, var FROM table);
DECLARE myvariable NUMERIC;
SET myvariable = (SELECT count(*) FROM newtable);