用户定义函数
Python UDF是企业版功能。 如需获取许可证,请联系 Databend 支持团队。
用户定义函数(UDFs)通过支持匿名 lambda 表达式和预定义的处理程序(Python、JavaScript 和 WebAssembly)来定义 UDF,提供了更高的灵活性。这些功能允许用户根据其特定的数据处理需求创建自定义操作。Databend 的 UDFs 分为以下几种类型:
Lambda UDFs
Lambda UDF 允许用户直接在查询中使用匿名函数(lambda 表达式)定义自定义操作。这些 lambda 表达式通常简洁,可用于执行特定的数据转换或计算,这些操作可能无法仅通过内置函数实现。
使用示例
本示例创建 UDFs,以使用 SQL 查询从表中的 JSON 数据中提取特定值。
-- 定义 UDFs
CREATE FUNCTION get_v1 AS (input_json) -> input_json['v1'];
CREATE FUNCTION get_v2 AS (input_json) -> input_json['v2'];
SHOW USER FUNCTIONS;
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ name │ is_aggregate │ description │ arguments │ language │ created_on │
├────────┼───────────────────┼─────────────┼───────────────────────────────┼──────────┼────────────────────────────┤
│ get_v1 │ NULL │ │ {"parameters":["input_json"]} │ SQL │ 2024-11-18 23:20:28.432842 │
│ get_v2 │ NULL │ │ {"parameters":["input_json"]} │ SQL │ 2024-11-18 23:21:46.838744 │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-- 创建表
CREATE TABLE json_table(time TIMESTAMP, data JSON);
-- 插入时间事件
INSERT INTO json_table VALUES('2022-06-01 00:00:00.00000', PARSE_JSON('{"v1":1.5, "v2":20.5}'));
-- 从事件中获取 v1 和 v2 值
SELECT get_v1(data), get_v2(data) FROM json_table;
+------------+------------+
| data['v1'] | data['v2'] |
+------------+------------+
| 1.5 | 20.5 |
+------------+------------+
嵌入式 UDFs
嵌入式 UDFs 允许您在 SQL 中嵌入以下编程语言编写的代码:
备注
如果您的程序内容较大,可以将其压缩后传递到 stage。请参阅 WebAssembly 的使用示例。
Python(需要 Databend Enterprise)
Python UDF 允许您通过 Databend 的内置处理程序从 SQL 查询中调用 Python 代码,从而在 SQL 查询中无缝集成 Python 逻辑。
备注
Python UDF 必须仅使用 Python 的标准库;不允许使用第三方导入。
数据类型映射
请参阅开发者指南中的数据类型映射。