TDengine 接入永洪 BI 实战:基于 JDBC WebSocket 驱动的数据源配置与参数化时序分析
【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine
永洪 BI 通过 JDBC 连接器对接 TDengine 时,需要经由 taosAdapter 的 WebSocket 接口(默认端口 6041)完成数据访问,而非直连数据库端口。本文完整讲解从驱动上传、URL 参数配置到参数化 SQL 数据集与可视化报告的全流程,并结合 TDengine 仓库中的 taosAdapter 手册与 Java 连接器文档,深入解释conmode、varcharAsString等关键连接参数的实际作用,帮助你在永洪 BI 中以“数据库内计算 + 参数化查询”的方式直接消费 TDengine 超级表数据。
前置条件与集成链路
开始配置前,需要准备以下环境(与官方文档 03-yhbi.md 的清单一致):
- TDengine
v3.3.2.0以上版本集群已部署并正常运行(企业及社区版均可); - taosAdapter 能够正常运行,参考 taosAdapter 参考手册;
- 永洪 BI 已安装并运行(未安装可前往永洪科技官方下载页面获取);
- 安装 JDBC 驱动:从 maven.org 下载较新的 TDengine JDBC 连接器(官方文档示例基于
taos-jdbcdriver-3.4.0-dist.jar)。
理解集成链路有助于排查连接问题。整个数据通路为:
永洪 BI 报表引擎 -> taos-jdbcdriver(com.taosdata.jdbc.ws.WebSocketDriver) -> taosAdapter WebSocket 接口(6041 端口) -> TDengine 服务端根据 taosAdapter 参考手册 的说明,TDengine 的各语言连接器通过 taosAdapter 的 WebSocket 接口与 TDengine 通信,因此 taosAdapter 是必须安装的组件;其基础配置中port参数默认值即为6041,也就是 JDBC URL 中使用的端口。同时,TDengine Java Connector 文档 明确指出 WebSocket 连接“不需要依赖客户端驱动”(无需在 BI 所在机器上安装 libtaos 本地库),这正是 BI 工具选择TAOS-WS协议的核心原因——BI 服务器往往无法安装 TDengine 客户端,纯 Java 驱动即可跨平台工作。
配置 JDBC 数据源(9 步操作流程)
以下步骤完整继承自官方集成文档:
第 1 步:在已打开的永洪 BI 中点击【添加数据源】按钮,选择 SQL 数据源中的“GENERIC”类型。
第 2 步:点击【选择自定义驱动】按钮,在【驱动管理】对话框中点击【驱动列表】旁边的“+”,输入名称“MyTDengine”,然后点击【上传文件】按钮,上传已下载的 TDengine JDBC 连接器文件taos-jdbcdriver-3.4.0-dist.jar,并选择com.taosdata.jdbc.ws.WebSocketDriver驱动,最后点击“确定”按钮,完成驱动添加步骤。
第 3 步:复制下面的内容到【URL】字段。
jdbc:TAOS-WS://127.0.0.1:6041?user=root&password=taosdata&conmode=1&varcharAsString=true第 4 步:在【认证方式】中点击【无身份认证】单选按钮。
第 5 步:在数据源的高级设置中修改“Quote 符号”的值为反引号(`)。
第 6 步:点击【测试连接】按钮,弹出【测试成功】对话框。点击【保存】按钮,输入“MyTDengine”来保存 TDengine 数据源。
第 7 步:在永洪 BI 中点击【添加数据源】按钮,展开刚刚创建的数据源,并浏览 TDengine 中的超级表。
第 8 步:可以将超级表的数据全部加载到永洪 BI 中,也可以通过自定义 SQL 导入部分数据。
第 9 步:当勾选【数据库内计算】复选框时,永洪 BI 将不再缓存 TDengine 的时序数据,并在处理查询时将 SQL 请求发送给 TDengine 直接处理。
URL 参数详解:conmode 与 varcharAsString
上面 URL 中的两个非显性参数conmode=1与varcharAsString=true是 BI 对接场景的关键配置,其含义在 Java 连接器文档 的 Properties 章节中有权威定义:
| 参数 | 默认值 | 生效条件 | 作用 |
|---|---|---|---|
conmode | 0 | 仅 WebSocket 连接 | BI 模式。设为1时开启 BI 模式,元数据信息不统计子表,主要用在 BI 工具对接场景 |
varcharAsString | false | 仅 WebSocket 连接 | 将 VARCHAR/BINARY 类型映射为 String,便于 BI 工具以文本方式展示 |
user/password | root/taosdata | - | 登录 TDengine 的用户名和密码 |
端口6041 | - | - | taosAdapter 的 HTTP/WebSocket 服务默认端口 |
conmode=1的价值在于:TDengine 中一张超级表下可能挂载大量子表,若 JDBC 元数据接口(如getTables)逐一枚举子表,BI 工具的表浏览会非常缓慢甚至超时。开启 BI 模式后,元数据只返回超级表级别的信息,这正是第 7 步能直接“浏览 TDengine 中的超级表”的底层机制。
另外两点值得注意:
- WebSocket 连接仅支持 UTF-8 字符集,URL 中的
locale、charset等参数不生效(见 Java 连接器文档 注意事项); - 生产环境如果启用了 taosAdapter 的 SSL(企业版,
ssl.enable=true),则需相应使用 WSS 连接并配置客户端信任证书,详见 客户端与连接器安全。
数据导入与“数据库内计算”模式
第 8、9 步提供了两种数据消费模式,二者有本质区别:
- 本地缓存模式(默认):永洪 BI 将超级表数据拉取并缓存到自身,分析计算在 BI 侧完成。适合数据量可控、需要跨数据源联动的报表;
- 数据库内计算模式(勾选【数据库内计算】):永洪 BI 不再缓存 TDengine 时序数据,查询时把 SQL 直接下发给 TDengine 执行。此时 TDengine 的时序计算引擎(窗口聚合、插值、时序函数等)直接参与运算,可以显著减少经网络传输到 BI 侧的原始数据量。
对于大规模时序数据,推荐优先使用数据库内计算模式,让“重计算”留在 TDengine 内,BI 只消费聚合后的结果。
参数化 SQL:用 BI 参数实现实时动态查询
TDengine 在标准 SQL 基础之上提供了面向时序场景的特色查询语法(数据切分查询、窗口切分查询等)。当永洪 BI 将 SQL 查询发送到 TDengine 时,充分利用这些语法可以大大提高数据访问速度、减少网络传输带宽。
以下 SQL 可以从 TDengine 实时读取数据(引自官方集成文档):
select _wstart ws, count(*) cnt from supertable where tbname=?{metric} and ts = ?{from} and ts < ?{to} interval(?{interval})其中各要素含义为:
_wstart:时间窗口起始时间,作为结果列别名为ws;count(*):时间窗口内的聚合值;?{interval}:在 SQL 中引入名为interval的参数。当 BI 工具查询数据时会给interval参数赋值,如取值为1m,则表示按 1 分钟的时间窗口降采样数据;?{metric}:指定查询的数据表名称。当在 BI 工具中把某个“下拉参数组件”的 ID 也设置为metric时,该组件的被选择项将与该参数绑定,实现动态选择表的效果;?{from}与?{to}:表示查询数据集的时间范围,可与“文本参数组件”绑定。
在永洪 BI 的【编辑参数】对话框中,可以修改这些参数的数据类型、数据范围与默认取值,并在可视化报告中动态设置参数值;通过手动或定时方式执行 SQL,即可实现可视化报告的自动刷新。
关于维度/度量的映射,需要注意 TDengine 超级表的结构特点:普通列承载数据度量,标签列(tags)承载维度属性。永洪 BI 导入数据后会自动把数值类型设置为“度量”列、文本类型设置为“维度”列,因此创建数据集时可能需要在数据集层面调整部分列的属性,使其与超级表的语义一致。窗口查询语法(interval、_wstart等)的完整用法可参考 时序查询语法文档。
制作可视化报告
在数据源与数据集就绪后,制作报告的操作步骤如下(完整继承自官方文档):
- 在永洪 BI 工具中点击【制作报告】,创建画布;
- 拖动可视化组件到画布中,例如“表格组件”;
- 在【数据集】侧边栏中选择待绑定的数据集,将数据列中的“维度”和“度量”按需绑定到“表格组件”;
- 点击【保存】后即可查看报告;
- 更多有关永洪 BI 工具的信息,请查询永洪科技官方帮助文档。
小结与延伸阅读
- 连接链路:永洪 BI →
com.taosdata.jdbc.ws.WebSocketDriver→ taosAdapter(6041端口)→ TDengine,BI 机器无需安装 TDengine 客户端驱动; - URL 必配参数:
conmode=1(BI 模式,元数据不枚举子表)与varcharAsString=true(字符串列映射为 String); - 大规模时序数据建议勾选【数据库内计算】,把窗口聚合下推到 TDengine 执行;
- 参数化 SQL(
?{metric}、?{from}、?{to}、?{interval})配合下拉/文本参数组件,可实现报表的实时动态刷新。
延伸阅读(仓库内文档):
- 永洪 BI 集成官方文档;
- TDengine Java Connector(JDBC)文档,含 URL 规范与全部 Properties 参数;
- taosAdapter 参考手册,含 WebSocket 接口、端口与 SSL 配置;
- 数据分析类工具集成总览,涵盖 Looker、Power BI、Tableau、Superset 等同类 BI 工具接入方式。
【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考