如何为 Google BigQuery 上的任何列(标量 UDF)定义函数

How to define functions for any column (scalar UDF) on Google BigQuery

假设我需要定义一个函数,其行为类似于 UPPER(string),我们可以将其命名为 FIRSTCHAR(string) 来获取字符串的第一个字符。 所以我想让 SQL 像:

SELECT FIRSTCHAR(middle_name) AS middle_name_first_char, 
FIRSTCHAR(last_name) AS last_name_first_char FROM clients

阅读 BigQuery UDF 文档并不清楚如何使此类函数适用于字符串、跨任何 table 或列。它看起来像用 bigquery.defineFunction() 定义一个函数,它需要一个输入列名称参数。

据我所知,标量类型 UDF 在 BigQuery 中尚不可用。当前的 UDF 仅 table 明智。因此,您向 UDF 提供 table 并且 UDF 正在处理它 row-by-row 为每个输入行输出 0、1 或多行(取决于您实现的函数)。
我记得提到的 Google 团队成员之一 - 他们致力于在某个时候使标量 UDF 可用

我假设您所讨论的简化示例只是演示您的问题要点的示例,因此我不会为该示例提供实际解决方案(这是对字符串函数的超级简单使用)

2016-08-11 UPDATE

BigQuery Standard 现在支持标量 UDF SQL
请参阅下面的示例

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 UDF

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