在 BigQuery 的函数内部使用 With 语句

Using With Statement inside function in BigQuery

是否可以在 BigQuery 的函数内使用 with 语句?

我知道有几个关于此的问题,但那些是关于 SQL 服务器的,而不是关于 BigQuery 的。

这是我正在尝试做的事情:

CREATE TEMP FUNCTION MyFunc(my_var INT)
RETURN INT64 AS 
(
WITH ABC AS (select * from t where t.col = var),
DEF AS (select * from t where t1.col = var),
GHI AS (select * from t where t2.col = var)

SELECT * FROM ABC JOIN DEF USING (...) JOIN GHI USING (...)
 
);

SELECT MY_FUNC(5)

但是在这里,我收到一条错误消息,指出意外的关键字 WITH。我看过其他类似的问题,但它们是关于 SQL 服务器的,这与我在 bigquery 中的要求不同。

试试下面的方法:

  1. 您有错字:RETURN -> RETURNS
  2. 在 select 语句两边再添加一对括号。它会将语句作为表达式。
  3. 确保不要在 select 查询中多 return 行或多一列。只是 return 与 return 类型相同的单个 INT64 值。

希望这对您有所帮助。

CREATE TEMP FUNCTION MyFunc(my_var INT)
RETURNS INT64 AS 
((
WITH ABC AS (select * from t where t.col = var),
DEF AS (select * from t where t1.col = var),
GHI AS (select * from t where t2.col = var)

SELECT * FROM ABC JOIN DEF USING (...) JOIN GHI USING (...)
 
));

SELECT MY_FUNC(5);