Google bigquery 如何在Google BigQuery上为任何列(标量UDF)定义函数
假设我需要定义一个行为类似于Google bigquery 如何在Google BigQuery上为任何列(标量UDF)定义函数,google-bigquery,user-defined-functions,Google Bigquery,User Defined Functions,假设我需要定义一个行为类似于UPPER(string)的函数,我们可以称之为FIRSTCHAR(string),它获取字符串的第一个字符。 因此,我想将SQL设置为: SELECT FIRSTCHAR(middle_name) AS middle_name_first_char, FIRSTCHAR(last_name) AS last_name_first_char FROM clients 阅读BigQueryUDF文档并不清楚如何使这些函数在字符串、任何表或列上工作。似乎要用bigqu
UPPER(string)
的函数,我们可以称之为FIRSTCHAR(string)
,它获取字符串的第一个字符。
因此,我想将SQL设置为:
SELECT FIRSTCHAR(middle_name) AS middle_name_first_char,
FIRSTCHAR(last_name) AS last_name_first_char FROM clients
阅读BigQueryUDF文档并不清楚如何使这些函数在字符串、任何表或列上工作。似乎要用
bigquery.defineFunction()
定义一个函数,它需要一个输入列名参数。据我所知,bigquery中还没有标量类型的UDF。当前的自定义项仅适用于表。所以您将表提供给UDF,UDF正在逐行处理它,为每个输入行输出0、1或多行(取决于您实现的函数)。我记得有一位谷歌团队成员提到过——他们致力于在某个时候提供标量UDF 我假设您讨论的简化示例只是演示问题要点的示例,所以我并没有提供此示例的实际解决方案(这是字符串函数的超级简单使用)) 2016-08-11更新 BigQuery标准SQL现在支持标量UDF
见下面的例子 JS UDF
CREATE TEMPORARY FUNCTION FIRSTCHAR(word STRING)
RETURNS STRING
LANGUAGE js
AS "return word.substring(0, 1);";
SELECT
FIRSTCHAR(middle_name) AS middle_name_first_char,
FIRSTCHAR(last_name) AS last_name_first_char
FROM clients
SQL自定义项
CREATE TEMPORARY FUNCTION FIRSTCHAR(word STRING)
RETURNS STRING
AS (SUBSTR(word, 0, 1));
SELECT
FIRSTCHAR(middle_name) AS middle_name_first_char,
FIRSTCHAR(last_name) AS last_name_first_char
FROM clients
谢谢你的反馈!是的,这是一个简化的例子,我需要的包括几个正则表达式,我需要在不同的数据集上应用它们。当然,我会这样做,如果出现其他选项,请稍等。谢谢你,米哈伊尔!