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 分类为不同的媒体类别 −
注意 − 临时函数必须紧跟查询。