BigQuery - 用户自定义函数



BigQuery 的优势之一是能够创建自定义逻辑来操作数据。在像Python这样的编程语言中,开发人员可以轻松地编写和定义函数,这些函数可以在脚本中的多个位置使用。

BigQuery 中的持久用户自定义函数

许多SQL方言,包括 BigQuery,都支持这些函数。BigQuery 将其称为持久用户自定义函数。它们简称为 UDF(用户自定义函数)或 PUDF(持久用户自定义函数)。

用户自定义函数的本质可以分为两个步骤 -

  • 定义函数逻辑
  • 在脚本中使用函数

定义用户自定义函数

定义用户自定义函数从一个熟悉的 CRUD 语句开始:CREATE OR REPLACE。

在这里,而不是使用 CREATE OR REPLACE TABLE,需要使用 CREATE OR REPLACE FUNCTION 后跟AS()命令。

与可以在 BigQuery 中编写的其他 SQL 查询不同,在创建 UDF 时,需要指定输入字段和类型。

这些输入的定义方式类似于 Python 函数 -

(column_name, type)

为了查看这些步骤的组合,我创建了一个简单的临时 UDF,由 TEMP FUNCTION 指定,它根据用户输入解析各种 URL。

Defining a User-defined Function

创建上述临时函数的步骤如下 -

  • CREATE TEMP FUNCTION
  • 指定函数名称 (get_sitetype)
  • 指定函数输入和类型 (inp_url, STRING)
  • 告诉函数返回什么类型 (STRING)

REGEXP_CONTAINS() 函数搜索包含提供的 URL 字符串的字符串的匹配项。NET.HOST() 函数从输入 URL 字符串中提取主机域名。

将其应用于 hacker news 数据集(BigQuery 公共数据集),我们可以生成一个将存储的 URL 分类为不同媒体类别的输出 -

Defining a User-defined Function

注意 - 临时函数必须紧跟在查询后面。

广告