在 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 中的要求不同。
试试下面的方法:
- 您有错字:
RETURN
-> RETURNS
- 在 select 语句两边再添加一对括号。它会将语句作为表达式。
- 确保不要在 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);
是否可以在 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 中的要求不同。
试试下面的方法:
- 您有错字:
RETURN
->RETURNS
- 在 select 语句两边再添加一对括号。它会将语句作为表达式。
- 确保不要在 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);