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

Google bigquery 使用SQL查询从BigQuery用户定义函数返回值,google-bigquery,Google Bigquery,我可以使用Google BigQuery用户定义函数中的查询返回一些值吗?我已经搜索文档和stackoverflow好几个小时了,但运气不好。我有一个非常具体的用例,需要根据多列的值返回一个标量值 以下是查询的用例: SELECT campaign,source,medium, get_channel(campaign,source,medium) FROM table_name get_通道UDF将使用这些参数和复杂的select语句为行返回单个标量值。我已经准备好了这个查询,我只需要找到一

我可以使用Google BigQuery用户定义函数中的查询返回一些值吗?我已经搜索文档和stackoverflow好几个小时了,但运气不好。我有一个非常具体的用例,需要根据多列的值返回一个标量值

以下是查询的用例:

SELECT campaign,source,medium, get_channel(campaign,source,medium)
FROM table_name
get_通道UDF将使用这些参数和复杂的select语句为行返回单个标量值。我已经准备好了这个查询,我只需要找到一种在UDF中使用该查询的方法,我真的很茫然,也没有任何理由


我的用例正确吗?这可能吗?是否有其他方法可以执行此操作?

看起来您希望使用UDF从某些查找表中选择标量值。如果是,则为否-您不能在UDF中引用表-请参阅和中的详细信息

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

#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`

您应该使用JOIN来实现您的目标

看起来您想使用UDF从某些查找表中选择标量值。如果是,则为否-您不能在UDF中引用表-请参阅和中的详细信息

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

#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`

您应该使用JOIN来实现您的目标

文档在这里没有什么帮助吗@马丁:我看过这些文件,但对我的情况没有帮助,也就是说,我在那里找不到我想要的东西。这些文件在这里怎么帮不上忙@martin我已经访问了这些文档,但它没有帮助我解决我的问题,也就是说,我找不到我在其中寻找的内容。是的,我正在尝试使用这些参数从映射表中选择标量值。今晚晚些时候我在办公室的时候,我会尝试你的答案,如果可行的话,我会在这里更新。然后这并不能解决我的问题:我会用不同的逻辑尝试新鲜,然后是的,你应该用加入来实现你的目标。但是,这个问题肯定得到了回答-你问过你是否可以这样做-对吗oThanks@Mikhael,我最初确实尝试使用联接,但后来改用UDF,因为这将是一个在多个地方使用的通用函数。我认为BigQuery中的UDF与SQL Server中的UDF有些相同。好吧,回到情节提要。是的,我正在尝试使用这些参数从映射表中选择标量值。今晚晚些时候我在办公室的时候,我会尝试你的答案,如果可行的话,我会在这里更新。然后这并不能解决我的问题:我会用不同的逻辑尝试新鲜,然后是的,你应该用加入来实现你的目标。但是,这个问题肯定得到了回答-你问过你是否可以这样做-对吗oThanks@Mikhael,我最初确实尝试使用联接,但后来改用UDF,因为这将是一个在多个地方使用的通用函数。我认为BigQuery中的UDF与SQL Server中的UDF有些相同。那么,回到故事板。