在BigQuery中,如何编写返回表的UDF?我想要的是能够接受参数的CTE。据我所知,UDF仅返回标量,对吗?
答案 0 :(得分:4)
UDF可以返回不同类型的数组,包括STRUCT的数组
但是很明显,它与返回表不同,BigQuery UDF并没有真正支持返回表
P.S。如果您有特定的问题要解决-请提出特定的问题,某人将为您提供帮助
下面是两个相对比较幼稚和无用的示例(从实际的角度来看)-但我希望它们显示了使用ARRAYS模仿某些扩展CTE的概念
示例1
#standardSQL
CREATE TEMPORARY FUNCTION pseudoCTE(x INT64, y INT64) AS (
GENERATE_ARRAY(x, y)
);
SELECT * FROM UNNEST(pseudoCTE(1,5)) z
有结果
Row z
1 1
2 2
3 3
4 4
5 5
示例2
#standardSQL
CREATE TEMPORARY FUNCTION pseudoCTE(x INT64, y INT64) AS (
ARRAY(SELECT AS STRUCT z AS id, RAND() AS value
FROM UNNEST(GENERATE_ARRAY(x, y)) z)
);
SELECT * FROM UNNEST(pseudoCTE(1,5))
Row id value
1 1 0.9319445195173228
2 2 0.36404932965409453
3 3 0.4615807541752828
4 4 0.5504890432993448
5 5 0.29635275888268836