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

时间:2018-04-02 14:03:58

标签: google-bigquery

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

以下是查询的用例:

SELECT campaign,source,medium, get_channel(campaign,source,medium)
FROM table_name
get_channel() UDF将使用这些参数和复杂的select语句来返回行的单个标量值。我已经准备好了查询,我只需要找到一种在UDF中使用该查询的方法,对此我诚实地处于亏损状态,没有原因。

我的用例是否正确?这甚至可能吗?有没有其他选择呢?

1 个答案:

答案 0 :(得分:3)

看起来您想使用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`

您应该使用JOIN来实现目标