UDF может возвращать массивы разных типов, включая ARRAY из STRUCTs
Но, очевидно, это не то же самое, что возвращаемая таблица, которая на самом деле не поддерживается BigQuery UDF [пока]
PS Еслиу вас есть конкретная проблема, которую вы хотите решить - задайте конкретный вопрос, и кто-то поможет
Ниже приведены два относительно наивных и бесполезных (с практической точки зрения) примера - но я надеюсь, что они демонстрируют концепцию использования массивов для имитации некоторыхрасширение 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