使用SQL查询从BigQuery用户定义函数返回值

Fai*_*tto 1 google-bigquery

我可以在Google BigQuery用户定义函数中使用查询来返回一些值吗?我一直在搜索文档和stackoverflow数小时,没有任何运气,而且我有一个非常特殊的用例,其中我需要根据多列的值返回一个标量值。

以下是查询的用例:

SELECT campaign,source,medium, get_channel(campaign,source,medium)
FROM table_name
Run Code Online (Sandbox Code Playgroud)

get_channel() UDF将使用这些参数和复杂的SELECT语句的行返回一个标量值。我已经准备好查询,我只需要找到一种在UDF中使用该查询的方法,老实说,我为此感到茫然,没有理由。

我的用例正确吗?这有可能吗?有其他选择吗?

Mik*_*ant 6

看起来您想使用UDF从某些查找表中选择标量值。如果是这样,否-您无法在UDF中引用表格-请参见LimitsLimitations

但是,如果您只想对参数进行一些复杂的操作-可以-请参见下面的虚拟示例

#standardSQL
CREATE TEMPORARY FUNCTION get_channel(campaign INT64, source INT64, medium INT64) AS ((
  SELECT campaign + source + medium as result_of_complex_select_statement
));
WITH `project.dataset.table_name` AS (
  SELECT 1 AS campaign, 2 AS source, 3 AS medium UNION ALL
  SELECT 4, 5, 6 UNION ALL
  SELECT 7, 8, 9
)
SELECT 
  campaign,
  source,
  medium, 
  get_channel(campaign,source,medium) AS channel
FROM `project.dataset.table_name`
Run Code Online (Sandbox Code Playgroud)

您应该使用JOIN实现目标