UDF, который возвращает таблицу - PullRequest
0 голосов
/ 23 октября 2018

В BigQuery, как написать UDF, который возвращает таблицу?То, что я хотел бы, является CTE, который способен принимать параметры.Насколько я могу судить, UDFs возвращает только скаляры, я прав?

1 Ответ

0 голосов
/ 23 октября 2018

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  
...