BigQuery - 用户自定义函数

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

BigQuery 中的持久用户定义函数

许多 SQL 方言(包括 BigQuery)都支持这些函数。BigQuery 将它们称为持久用户定义函数。它们要么是 UDF(用户定义函数),要么是 PUDF(持久性用户定义函数)。

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

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

定义用户定义函数

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

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

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

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

(column_name, type)

为了将这些步骤放在一起,我创建了一个简单的临时 UDF,由 TEMP FUNCTION 指定,该 UDF 根据用户输入解析各种 URL。

定义用户定义函数

创建上述临时函数的步骤是 −

  • 创建临时函数
  • 指定函数名称 (get_sitetype)
  • 指定函数输入和类型 (inp_url, STRING)
  • 告诉函数要返回什么类型 (STRING)

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

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

定义用户定义函数

注意 − 临时函数必须紧跟查询。