函数
自定义函数(Function)用于扩展 Lakehouse 的 SQL 计算能力,允许用户根据业务需求创建可复用的函数,在 SQL 查询中像内置函数一样调用。
函数类型
Lakehouse 支持两种自定义函数:
SQL Function
使用 SQL 表达式定义的函数,在 Lakehouse 引擎内部执行。
- 标量函数:对输入行中的一个或多个列进行处理,每行返回单个结果值
- 表函数:接收一个或多个输入参数,返回多行多列的结果集
SQL Function 适合实现简单的计算逻辑,如格式化、条件判断、数学运算等。
External Function
通过 Python 或 Java 语言编写,在远程函数计算服务(阿里云 FC、腾讯云 SCF、AWS Lambda)中执行的自定义函数。
- UDF(用户自定义函数):每行返回单个值
- UDAF(用户自定义聚合函数):对多行数据进行聚合计算,返回单个值(仅 Java 支持)
- UDTF(用户自定义表函数):返回多行多列结果集(仅 Java 支持)
External Function 适合调用外部服务(如 LLM、图像识别)或实现复杂业务逻辑。
函数对比
| 维度 | SQL Function | External Function |
|---|---|---|
| 开发语言 | SQL | Python 3.10 / Java 8 |
| 执行位置 | Lakehouse 引擎内部 | 远程函数计算服务 |
| 适用场景 | 简单计算、格式化、条件判断 | 复杂逻辑、AI 模型调用、非结构化数据处理 |
| 性能 | 高(本地执行) | 受网络延迟影响 |
| 依赖管理 | 无 | 需打包上传依赖 |
| 支持类型 | 标量函数、表函数 | UDF、UDAF(Java)、UDTF(Java) |
快速开始
创建 SQL 标量函数
创建 SQL 表函数
创建 External Function
函数权限
| 权限点 | 说明 |
|---|---|
| 在 Schema 下创建函数 |
| 修改函数属性 |
| 在 SQL 中调用函数 |
| 删除函数 |
| 查看函数元数据 |
相关文档
联系我们
