概述
Kuiper1.2.0 添加了外部函数,可通过配置将现有的 REST、gRPC 或 msgpackrpc 服务映射到用户定义的函数中。作为插件扩展的补充,外部函数更为简单易用。相较于插件扩展,它更适合于除性能关键场景之外的所有场景。外部函数可以通过一个 json 文件和一个或多个 schema 文件批量定义(现在只支持 protobuf 格式),可以通过 CLI 或 REST API 进行热重载。另外,Kuiper 可解析带有 http 选项的 proto 文件,以便更好地定义 REST 服务。
该版本中添加了一种新的源类型 Table ,相对于流来说,它相当于当前时间点的快照。通过将其与流连接,用户可以将其用作查找字典或参考状态。
我们还添加了一个新的 SQL 表达式:case 表达式,用于评估条件列表并返回多个可能的结果表达式之一。内置函数还添加了一些增强功能。现在支持使用通配符作为用户定义函数的参数。最后,我们修复了产品和文档的几个问题。
功能与修复
-
仅通过配置支持外部函数以使用 SQL 调用已有服务
- 实现外部函数(kuiper/external_func.md at master · emqx/kuiper · GitHub) REST 服务、gRPC 服务和 msgpackrpc 服务的配置解析和执行
- 支持将 protobuf 作为 schema 类型,在 protobuf 中支持 google http api (kuiper/external_func.md at master · emqx/kuiper · GitHub)的选项,以便更好地定义 REST 服务
-
支持用表类型来表示流的当前状态
- 支持表类型、语句和管理 CLI/REST API
- 新增通常用作静态表的文件源
- 允许将现有的源类型用作持续更新的表
-
支持 case 表达式
-
支持将 * 作为自定义函数的参数
-
支持 json 函数使用字符串参数
-
允许 bigint、float 和 string 作为 format\u time 函数的参数
-
将非指定字段的 “reengine_field” 重命名为 “kuiper_field”
-
构建
- 修复了通过 Docker volume (数据卷)加载配置时的权限问题
- 新增对 markdown 目录的检查
- 新增对 deb/rpm 的检查
- 更新 tdengine 版本
-
修复
- 避免在日志中打印密码
- 让 meta 字段忽略大小写
- 修复了在字段 ref 中没有流名称的情况下集成时的问题
- 修复了多流问题中相同字段名称的别名
- 修复了 absolute 模式下的访问子文件夹故障问题
- 修复多层嵌入式结构中流描述的问题
-
文档修复
- 修复了一些断开的链接
- 修正了一些错别字
- 更新 JSON 表达式文档
特别感谢
-
@jrtitus 提供了一些文档修复
-
@tmactao 提供了一个文档修复