返回表的UDF

时间:2018-10-23 20:44:15

标签: google-bigquery user-defined-functions

在BigQuery中,如何编写返回表的UDF?我想要的是能够接受参数的CTE。据我所知,UDF仅返回标量,对吗?

1 个答案:

答案 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