时序数据分析一直是工业场景中的棘手问题。传统做法往往需要编写大量代码,调用不同的专业库,对业务团队的技术门槛实在不低。好在,如今有了更直接的路径——TDgpt 这样的工具,可以通过 SQL 语句直接调用各类分析模型,将复杂的机器学习任务,简化为一条查询指令。
云鼎科技在其煤矿安全生产综合管控平台中选用了 TDengine,实现了数据的全面监控、分析与应用。这一次,他们又将目光投向了风力发电场景,用 TDgpt 来做一次实战验证。
业务背景
为了提高煤矿生产的安全性和效率,云鼎科技搭建了一个覆盖 75 对矿井、23 类 1100 余个系统的工业数据湖项目——安全生产综合管控平台。它的核心任务,是实现工业数据的实时采集、全面监控、深入分析和价值挖掘。
在比对多个产品后,团队最终选用了 TDengine 时序数据库作为数据存储的核心组件。借助其数据订阅功能,成功减少了中间件的使用,系统整体可用性和数据分发效率都得到了明显提升。
具体部署上,各生产单位的采集系统先将数据汇聚到本地的 TDengine 实例,再通过 IoT 平台同步至集团端的 TDengine 集群。集团端的数据治理系统处理完毕后,工业数据便为上层应用提供数据服务支撑。这套架构已经在煤炭领域工业数据的采集、存储和场景应用中稳定运行。

更关键的一点是,这套方案在满足生产单位独立使用需求的同时,也支撑了集团端的时序数据分析建设。生产单位与集团端各自部署 TDengine 实例,互不干扰,性能表现也得到充分的保障。

数据订阅
在集团侧,团队利用数据订阅功能,实时获取了超过 30 个 topic 的数据,为后续的分析处理提供了稳定的数据源。整个过程去掉了传统消息中间件的环节,架构更精简,维护成本也更低。

流计算
与此同时,集团侧的 TDengine 中运行着近 30 个流计算任务。这些任务对来自不同机组、地区的风机电流、给水温度、给水流量、热耗、输出功率等参数进行实时的转换计算,并持续更新最新的值。这一切都通过 SQL 完成,无需额外的流处理框架。

初识 TDgpt
涛思数据发布 TDgpt 后不久,云鼎科技的团队就注意到了这款新产品。正好手头有风力发电预测的业务场景,双方一拍即合,决定用真实数据来检验一下 TDgpt 的协变量分析预测功能,看看实际效果到底怎么样。
借助 TDgpt,可以通过 SQL 语句直接调用统计分析、机器学习、深度学习、时序数据基础模型等多种分析能力。换言之,异常检测和预测这类高级数据分析功能,不再需要单独部署一套 Python 服务或 Ja va 应用——写几条 SQL 就能实现。
TDgpt 与 TDengine TSDB 的关系
TDgpt 是一个外置式的时序数据分析智能体,与 TDengine 的主进程 taosd 配合工作。它本身是无状态的,内置了 Statsmodel、Pycularity 等经典统计分析库,同时嵌入 PyTorch、Keras 等深度学习框架。如果需要调用涛思自研的时序大模型 TDtsfm,也会通过请求转发和适配的方式完成。整体架构非常轻量。

使用 TDgpt
使用小结
这一次验证,有几个关键结论值得分享:
- 对于未来 4 小时的发电功率预测,MAPE(平均绝对百分比误差)大约在 0.3% 左右,表现相当不错。
- 从实际功率曲线来看,4 小时的数据波动区间大约在 [330500, 332500] 之间;而 72 小时乃至整月的数据,则出现了多次明显的波峰波谷,且经常出现从波峰骤降至 0 的情况。但有意思的是,这些剧烈波动与 126m 高度的风速变化规律并不完全吻合。推测存在人为检修或其他停机因素。以 4 月 9 日 18:00 至 4 月 14 日 18:00 这 120 小时的数据为例,期间一直有风且风力不小,功率曲线却数次大起大落——说明除了天气,还有其他变量在影响发电。
- 在现有数据条件下,使用 moirai 模型得到的预测结果如上。团队认为,如果想要提升长周期预测的 MAPE,应该把停机数据作为一个重要的输入特征纳入分析。
- 风力发电与天气预报等外部数据高度关联,想要获得更准确的预测,需要更多数据进行预训练和验证。
- 基于 TDgpt 构建时序数据分析,最大优势在于可以借助 SQL 实现与应用的便捷集成,并且可以利用 Grafana 直接做可视化展示。这样一来,开发和维护时序数据预测、异常检测业务的成本大幅降低。
以下是我们验证过程中主要的预测场景记录。
环境准备
使用 TDgpt 的高级时序数据分析功能,需要在 TDengine 集群中部署一个 AI node(anode)。对部署环境的要求如下:
- Python:3.10 或 3.11 及以上版本
- TDengine:3.3.6.0 或以上版本
- C 编译器:因为依赖 uWSGI,所以部署环境需要包含 C 编译器
分析模型
时序数据基础模型是专门为处理时间序列预测、异常检测、数据补齐等高级分析功能而训练的。与通用大模型类似,时序基础模型也具备较好的泛化能力,使用者不需要设置复杂的输入参数就能完成预测。
在 TDgpt 中,调用这些基础模型的预测能力非常直观,直接写 SQL 即可。以下是两个示例:
- 调用涛思时序基础模型(tdtfm)进行预测,返回 10 条预测记录:
SELECT _frowts, FORECAST(i32, "algo=tdtsfm_1,rows=10") from foo
- 调用 TimeMoE 时序基础模型进行预测,同样返回 10 条记录:
SELECT _frowts, FORECAST(i32, "algo=timemoe-fc,rows=10") from foo
SHOW ANODES FULL;
taos> show anodes full;
id|type|algo|
============================================================================
1 | anomaly-detection| grubbs |
1 | anomaly-detection| lof|
1 | anomaly-detection| shesd|
1 | anomaly-detection| ksigma |
1 | anomaly-detection| iqr|
1 | anomaly-detection| sample_ad_model|
1 | forecast | arima|
1 | forecast | holtwinters|
1 | forecast | tdtsfm_1 |
1 | forecast | timemoe-fc |
Query OK, 10 row(s) in set (0.028750s)
单变量分析预测
使用客户提供的真实数据集,选择 TDtsfm_1 算法来预测发电功率。具体步骤可以参考“[基于 TDgpt 时序数据智能体的风力发电预测]”这篇文档。
启动服务
先启动涛思时序基础模型服务:
# 启动涛思时序数据基础模型
start-tdtsfm
未来 4h 预测
/* 预测4月30日零点以后的渤洁的发电功率,采样间隔为15min,4h内 */
select to_iso8601(_frowts, ' 08:00') ts, forecast(qcyggl, 'algo=tdtsfm_1,rows=16') f_qcyggl from (select _wend ts, a vg(qcyggl) qcygglfrom dyhf_bjshdqfjdjxx where ts < '2025-04-30T00:00:00 08:00' interval(15m)) >> bj_f_qcyggl_4h.csv;

未来协变量分析预测
查询 4 月 21 日之后的发电功率并写入新表
use ep_iot;
/* 创建超级表 future_power,存储发电功率未来值 */
create stable future_power (ts timestamp, ssyg float) TAGS (forecasted bool, hours int);
/* 实际值表 */
create table bq_power_4h using future_power TAGS(0, 4);
create table bq_power_72h using future_power TAGS(0, 72);
/* 预测值表 */
create table bq_predict_4h using future_power TAGS(1, 4);
create table bq_predict_72h using future_power TAGS(1, 72);
/* 创建虚拟表,用于对比 */
create stable vstb_bq (ts timestamp, ssyg float, f_ssyg float) TAGS (hours int) virtual 1;
create vtable vtb_bq_4h (ssyg from bq_power_4h.ssyg, f_ssyg from bq_predict_4h.ssyg) using vstb_bq TAGS (4);
create vtable vtb_bq_72h (ssyg from bq_power_72h.ssyg, f_ssyg from bq_predict_72h.ssyg) using vstb_bq TAGS (72);
/* 写入实际值 */
insert into bq_power_4h select _wend ts, a vg(ssyg) ssyg from dyhf_bqhzfjdjxx where ts >= '2025-04-21' interval(15m) limit 16;
insert into bq_power_72h select _wend ts, a vg(ssyg) ssyg from dyhf_bqhzfjdjxx where ts >= '2025-04-21' interval(15m) limit 288;
导出 4 月 21 日之后的天气数据(未来协变量)
/* 查询天气数据,采样间隔15min,分别导出4h和72h */
select _wend ts, a vg(pjfs126m) pjfs126m, a vg(pjfx126m) pjfx126m, a vg(sd) sd, a vg(wd) wd, a vg(qy) qy from dyhf_cft where ts >= '2025-04-21' interval(15m) limit 16 >> weather_4h.csv;
select _wend ts, a vg(pjfs126m) pjfs126m, a vg(pjfx126m) pjfx126m, a vg(sd) sd, a vg(wd) wd, a vg(qy) qy from dyhf_cft where ts >= '2025-04-21' interval(15m) limit 288 >> weather_72h.csv;
创建 Dashboard 进行对比展示
下图中,ssyg 表示实际值,f_ssyg 表示预测值。


模型有效性评估工具
TDgpt 企业版提供了一套名为 analytics_compare 的评估工具,可以基于历史数据回测,评估不同预测模型或异常检测模型的表现。这对于模型选型和参数调优非常有帮助。
- 模型选择器:可以自动对历史数据集进行准确性评估,帮助选出最适合当前业务场景的模型。
- TDtsfm_1 自研模型的重训练与微调:TDtsfm_1 基于海量时序数据预训练,多数场景下相比传统统计模型和机器学习模型有明显优势。如果对准确率有更高要求,TDgpt 企业版还提供预训练服务——用客户自身场景的历史数据做微调,效果往往还能再上一个台阶。
- 第三方解决方案:涛思数据也联合了多家时序分析/异常检测专业厂商,提供落地实施等专业服务。
结语
通过这次风力发电场景下的实战验证,对 TDgpt 的产品能力和适用边界有了更具体的认知。用 SQL 调用分析模型这个思路,在集成便捷性和开发效率上的优势确实很明显,让团队能以低代码、标准化的方式,快速构建时序数据预测流程。
同时,这次验证也让大家更清醒地认识到时序数据预测在真实工业场景中的复杂性。风力发电功率受风速、风向、温度、气压、设备状态、人为调度、停机维护等多重因素交织影响,属于典型的强波动、多干扰场景。在当前数据条件下,短期预测比较稳定,但更长周期或剧烈波动时段,预测精度仍有提升空间。想要在高噪声、多协变量的工业环境中获得更精准的结果,通常需要更丰富的特征工程、更贴合场景的模型微调,以及将停机标记、运维计划等业务知识纳入建模。
展望未来,TDgpt 这类智能数据分析平台,确实为时序数据的深度应用打开了一条更直接的道路。它降低了高级分析功能的使用门槛,让业务团队可以更快地进行概念验证和初步洞察。期待涛思数据持续迭代产品,并与生态伙伴一起,推动时序智能技术在能源、工业等复杂场景中真正落地。我们也将继续关注时序数据分析技术的前沿进展,在合适的业务场景中探索和引入更先进的工具,以数据驱动业务,助力安全生产与运营效率的提升。
