跳到主要内容

用户自定义函数

Databend 中的用户自定义函数(User-Defined Function,UDF)允许您根据特定的数据处理需求创建自定义操作。本页将重点介绍常用命令,并帮助您选择适合您用例的函数类型。

函数管理命令

命令描述
CREATE SCALAR FUNCTION标量函数(SQL/Python/JavaScript)
CREATE AGGREGATE FUNCTION脚本 UDAF(JavaScript/Python 运行时)
CREATE TABLE FUNCTION纯 SQL 表函数(返回结果集)
SHOW USER FUNCTIONS列出所有用户自定义函数
ALTER FUNCTION修改现有函数
DROP FUNCTION移除函数

函数类型对比

特性标量(SQL)标量(Python/JavaScript)聚合(脚本)表格(SQL)
返回类型单个值单个值单个值表/结果集
语言SQL 表达式Python/JavaScriptJavaScript/Python 运行时SQL 查询
性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
需要企业版Python 运行时需要Python 运行时需要
包支持Python:支持 PACKAGESPython:支持 PACKAGES
最佳适用场景数学计算
字符串操作
数据格式化
高级算法
外部库
控制流逻辑
自定义聚合逻辑
需要脚本语言处理
复杂查询
多行结果
数据转换

统一语法

所有本地 UDF 类型都使用一致的 $$ 语法:

-- 标量函数
CREATE FUNCTION func_name(param TYPE) RETURNS TYPE AS $$ expression $$;

-- 表格函数
CREATE FUNCTION func_name(param TYPE) RETURNS TABLE(...) AS $$ query $$;

-- 标量函数(Python/JavaScript)
CREATE FUNCTION func_name(param TYPE) RETURNS TYPE
LANGUAGE python
HANDLER = 'handler' AS $$ code $$;
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验