时序数据库 TDengine + 高级分析软件 Seeq,助力企业挖掘时序数据潜力

作为一款制造业和工业互联网(IIOT)高级分析软件,Seeq 支持在工艺制造组织中使用机器学习创新的新功能。这些功能使组织能够将自己或第三方机器学习算法部署到前线流程工程师和主题专家使用的高级分析应用程序,从而使单个数据科学家的努力扩展到许多前线员工。通过 TDengine Java connector,Seeq 可以轻松支持查询 TDengine 提供的时序数据,并提供数据展现、分析、预测等功能。本文将对此进行介绍。

如何配置 Seeq 访问 TDengine

1. 查看 data 存储位置

sudo seeq config get Folders/Data

2. 从 maven.org 下载 TDengine Java connector 包,目前最新版本为 3.2.7 (Maven Central: com.taosdata.jdbc:taos-jdbcdriver)。并拷贝至 data 存储位置的 plugins\lib 中。

3. 重新启动 seeq server

sudo seeq restart

4. 输入 License

使用浏览器访问 ip:34216 并按照说明输入 license。

使用 Seeq 分析 TDengine 时序数据

下文将为大家演示如何使用 Seeq 软件配合 TDengine 进行时序数据分析。

场景介绍

示例场景为一个电力系统,用户每天从电站仪表收集用电量数据,并将其存储在 TDengine 集群中。现在用户想要预测电力消耗将会如何发展,并购买更多设备来支持它。用户电力消耗随着每月订单变化而不同,另外考虑到季节变化,电力消耗量会有所不同。这个城市位于北半球,所以在夏天会使用更多的电力。我们模拟数据来反映这些假定。

数据 Schema

CREATE STABLE meters (ts TIMESTAMP, num INT, temperature FLOAT, goods INT) TAGS (device NCHAR(20));
create table goods (ts1 timestamp, ts2 timestamp, goods float);

时序数据库 TDengine + 高级分析软件 Seeq,助力企业挖掘时序数据潜力 - TDengine Database 时序数据库

构造数据方法

python mockdata.pytaos -s "insert into power.goods select _wstart, _wstart + 10d, avg(goods) from power.meters interval(10d);"

源代码托管在 https://github.com/sangshuduo/td-forecasting。

使用 Seeq 进行数据分析

配置数据源(Data Source)

使用 Seeq 管理员角色的帐号登录,并新建数据源。

  • Power
{"QueryDefinitions": [{"Name": "PowerNum","Type": "SIGNAL","Sql": "SELECT  ts, num FROM meters","Enabled": true,"TestMode": false,"TestQueriesDuringSync": true,"InProgressCapsulesEnabled": false,"Variables": null,"Properties": [{"Name": "Name","Value": "Num","Sql": null,"Uom": "string"},{"Name": "Interpolation Method","Value": "linear","Sql": null,"Uom": "string"},{"Name": "Maximum Interpolation","Value": "2day","Sql": null,"Uom": "string"}],"CapsuleProperties": null}],"Type": "GENERIC","Hostname": null,"Port": 0,"DatabaseName": null,"Username": "root","Password": "taosdata","InitialSql": null,"TimeZone": null,"PrintRows": false,"UseWindowsAuth": false,"SqlFetchBatchSize": 100000,"UseSSL": false,"JdbcProperties": null,"GenericDatabaseConfig": {"DatabaseJdbcUrl": "jdbc:TAOS-RS://127.0.0.1:6041/power?user=root&password=taosdata","SqlDriverClassName": "com.taosdata.jdbc.rs.RestfulDriver","ResolutionInNanoseconds": 1000,"ZonedColumnTypes": []}
}
  • Goods
{"QueryDefinitions": [{"Name": "PowerGoods","Type": "CONDITION","Sql": "SELECT ts1, ts2, goods FROM power.goods","Enabled": true,"TestMode": false,"TestQueriesDuringSync": true,"InProgressCapsulesEnabled": false,"Variables": null,"Properties": [{"Name": "Name","Value": "Goods","Sql": null,"Uom": "string"},{"Name": "Maximum Duration","Value": "10days","Sql": null,"Uom": "string"}],"CapsuleProperties": [{"Name": "goods","Value": "${columnResult}","Column": "goods","Uom": "string"}]}],"Type": "GENERIC","Hostname": null,"Port": 0,"DatabaseName": null,"Username": "root","Password": "taosdata","InitialSql": null,"TimeZone": null,"PrintRows": false,"UseWindowsAuth": false,"SqlFetchBatchSize": 100000,"UseSSL": false,"JdbcProperties": null,"GenericDatabaseConfig": {"DatabaseJdbcUrl": "jdbc:TAOS-RS://127.0.0.1:6041/power?user=root&password=taosdata","SqlDriverClassName": "com.taosdata.jdbc.rs.RestfulDriver","ResolutionInNanoseconds": 1000,"ZonedColumnTypes": []}
}
  • Temperature
{"QueryDefinitions": [{"Name": "PowerNum","Type": "SIGNAL","Sql": "SELECT  ts, temperature FROM meters","Enabled": true,"TestMode": false,"TestQueriesDuringSync": true,"InProgressCapsulesEnabled": false,"Variables": null,"Properties": [{"Name": "Name","Value": "Temperature","Sql": null,"Uom": "string"},{"Name": "Interpolation Method","Value": "linear","Sql": null,"Uom": "string"},{"Name": "Maximum Interpolation","Value": "2day","Sql": null,"Uom": "string"}],"CapsuleProperties": null}],"Type": "GENERIC","Hostname": null,"Port": 0,"DatabaseName": null,"Username": "root","Password": "taosdata","InitialSql": null,"TimeZone": null,"PrintRows": false,"UseWindowsAuth": false,"SqlFetchBatchSize": 100000,"UseSSL": false,"JdbcProperties": null,"GenericDatabaseConfig": {"DatabaseJdbcUrl": "jdbc:TAOS-RS://127.0.0.1:6041/power?user=root&password=taosdata","SqlDriverClassName": "com.taosdata.jdbc.rs.RestfulDriver","ResolutionInNanoseconds": 1000,"ZonedColumnTypes": []}
}
使用 Seeq Workbench

登录 Seeq 服务页面并新建 Seeq Workbench,通过选择数据源搜索结果和根据需要选择不同的工具,可以进行数据展现或预测,详细使用方法参见官方知识库:Seeq Workbench。

时序数据库 TDengine + 高级分析软件 Seeq,助力企业挖掘时序数据潜力 - TDengine Database 时序数据库

使用 Seeq Data Lab Server 进行进一步的数据分析

登录 Seeq 服务页面并新建 Seeq Data Lab,可以进一步使用 Python 编程或其他机器学习工具进行更复杂的数据挖掘功能。

from seeq import spy
spy.options.compatibility = 189
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import mlforecast
import lightgbm as lgb
from mlforecast.target_transforms import Differences
from sklearn.linear_model import LinearRegressionds = spy.search({'ID': "8C91A9C7-B6C2-4E18-AAAF-XXXXXXXXX"})
print(ds)sig = ds.loc[ds['Name'].isin(['Num'])]
print(sig)data = spy.pull(sig, start='2015-01-01', end='2022-12-31', grid=None)
print("data.info()")
data.info()
print(data)
#data.plot()print("data[Num].info()")
data['Num'].info()
da = data['Num'].index.tolist()
#print(da)li = data['Num'].tolist()
#print(li)data2 = pd.DataFrame()
data2['ds'] = da
print('1st data2 ds info()')
data2['ds'].info()#data2['ds'] = pd.to_datetime(data2['ds']).to_timestamp()
data2['ds'] = pd.to_datetime(data2['ds']).astype('int64')
data2['y'] = li
print('2nd data2 ds info()')
data2['ds'].info()
print(data2)data2.insert(0, column = "unique_id", value="unique_id")print("Forecasting ...")forecast = mlforecast.MLForecast(models = lgb.LGBMRegressor(),freq = 1,lags=[365],target_transforms=[Differences([365])],
)forecast.fit(data2)
predicts = forecast.predict(365)pd.concat([data2, predicts]).set_index("ds").plot(title = "current data with forecast")
plt.show()

运行程序输出结果:

时序数据库 TDengine + 高级分析软件 Seeq,助力企业挖掘时序数据潜力 - TDengine Database 时序数据库

写在最后

通过集成 Seeq 和 TDengine,用户能够充分利用到 TDengine 高性能的时序数据存储和检索,确保数据的高效处理;同时也将受益于 Seeq 提供的强大数据可视化和分析功能,如数据可视化、异常检测、相关性分析和预测建模,方便用户获得有价值的数据洞察并基于此进行决策。

未来 Seeq 和 TDengine 将共同为制造业、工业物联网和电力系统等各行各业的时序数据分析提供综合解决方案,将高效数据存储和先进数据分析相结合,赋予企业深入挖掘时序数据潜力的能力,推动业务发展与改进。如果你想要了解 Seeq 的更全面设置、Seeq 与全托管的云服务平台 TDengine Cloud 的具体连接详情,请移步官方文档 Seeq | TDengine 文档 | 涛思数据 进行查阅。


了解更多 TDengine Database的具体细节,可在GitHub上查看相关源代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV+相机校准和3D重建

相机校准至少需要10个测试图案,所需的重要输入数据是3D现实世界点集以及图像中这些点的相应2D坐标。3D点称为对象点,而2D图像点称为图像点。 准备工作 除了棋盘,我们还可以使用圆形网格。 在这种情况下,我们必须使用函数cv.find…

行业洞察:分布式云如何助力媒体与娱乐业实现创新与增长?

过去数年,流媒体经历了蓬勃的发展过程,观众可以根据喜好收看自己所喜爱的节目内容,并希望在全球范围内访问内容。 繁荣的市场让媒体和娱乐行业的 IT 领导者们竞相发力,用更短的时间去创造互动且令人难忘的内容体验,力求…

20.有效的括号(LeetCode)

思路:用栈的后进先出的特性,来完成题目的要求 因为C有库,可以直接用,而C语言没有,所以我们直接把写好的栈拷贝上来用。 首先,完成框架的搭建 其次,再实现循环内的部分。1.左括号入栈 2.右括…

react函数式组件props形式子向父传参

父组件中定义 子组件中触发回调传值 import { useState } from "react"; function Son(params) {const [count, setCount] useState(0);function handleClick() {console.log(params, paramsparamsparamsparamsparamsparams);params.onClick(111)setCount(count 1…

Skywalking流程分析_3(服务的准备、启动、关闭)

前文将SkyWalkingAgent.premain中的: SnifferConfigInitializer.initializeCoreConfig(agentArgs)pluginFinder new PluginFinder(new PluginBootstrap().loadPlugins())这两个方法分析完毕,下面继续分析premain方法其余部分 创建byteBuddy final By…

Rust-使用dotenvy加载和使用环境变量

系统的开发,测试和部署离不开环境变量,今天分享在Rust的系统开发中,使用dotenvy来读取和使用环境变量。 安装 cargo add dotenvy dotenv_codegen 加载环境变量 use dotenvy::dotenv;fn main() {dotenv().expect(".env不存在");…

TensorFlow学习笔记--(3)张量的常用运算函数

损失函数及求偏导 通过 tf.GradientTape 函数来指定损失函数的变量以及表达式 最后通过 gradient(%损失函数%,%偏导对象%) 来获取求偏导的结果 独热编码 给出一组特征值 来对图像进行分类 可以用独热编码 0的概率是第0种 1的概率是第1种 0的概率是第二种 tf.one_hot(%某标签…

Python高级语法----使用Python进行模式匹配与元组解包

文章目录 1. 模式匹配的新特性2. 高级元组解包技巧3. 数据类的匹配与应用1. 模式匹配的新特性 Python自3.10版本起引入了结构化模式匹配的新特性,这是一种强大的工具,允许开发者用更清晰、更直观的方式处理数据结构。模式匹配类似于其他编程语言中的switch-case语句,但它更…

Rust逆向学习 (4)

Reverse for Struct Rust中的结构体是一个重要的内容,由于Rust中没有类的概念,因此其他编程语言中的封装、继承、多态与Rust中的表现都有较大差异。 我们使用参考书中的一个示例开始进行分析。 Struct 初始化 struct User {username: String,email: …

Kubernetes介绍

Kubernetes介绍 1.应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序…

利用uni-app 开发的iOS app 发布到App Store全流程

1.0.3 20200927 更新官方对应用审核流程的状态。 注:最新审核后续将同步社区另一篇记录 AppStore 审核被拒原因记录及解决措施 :苹果开发上架常见问题 | appuploader使用教程 1.0.2 20200925 新增首次驳回拒绝邮件解决措施。 1.0.1 20200922 首次…

目标检测问题总结

目标检测问题总结 目标检测二阶段和一阶段的核心区别目标检测二阶段比一阶段的算法精度高的原因1. 正负样本不平衡2.样本的不一致性 如何解决目标检测中遮挡问题如何解决动态目标检测FPN的作用如何解决训练数据样本过少的问题IOU代码实现NMS代码实现NMS的改进思路 目标检测二阶…

C //例 7.13 有一个3*4的矩阵,求所有元素中的最大值。

C程序设计 &#xff08;第四版&#xff09; 谭浩强 例 7.13 例 7.13 有一个3*4的矩阵&#xff0c;求所有元素中的最大值。 IDE工具&#xff1a;VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法&#xff1a;使用指针、动态分配内存 #include <stdio.h> …

设计模式-观察者模式(Observer)

设计模式-观察者模式&#xff08;Observer&#xff09; 一、观察者模式概述1.1 什么是观察者模式1.2 简单实现观察者模式1.3 使用观察者模式的注意事项 二、观察者模式的用途三、观察者模式实现方式3.1 使用接口实现观察者模式3.2 使用抽象类和具体子类实现观察者模式3.3 使用 …

Rust语言基础:从Hello World开始

大家好&#xff0c;我是[lincyang]。 我们将一起探索Rust语言的基础&#xff0c;从最经典的程序入手——“Hello, World!”。 Rust简介 Rust是一种系统编程语言&#xff0c;由Mozilla赞助开发&#xff0c;旨在提供内存安全、并发性和实用性。它的设计思想强调安全性和性能&…

CSS怎么选择除了第一个子元素外的其余同级子元素

使用 CSS 的:not()伪类选择器和:nth-child()伪类选择器 要通过CSS的代码选择某一个元素的除了第一个子元素外的其余的跟第一个子元素同级的子元素&#xff0c;可以结合使用CSS的:not()伪类选择器和:nth-child()伪类选择器进行选择。大致的语法如下&#xff1a; .parent > …

【EI会议征稿】第七届结构工程与工业建筑国际学术会议(ICSEIA 2024)

第七届结构工程与工业建筑国际学术会议&#xff08;ICSEIA 2024&#xff09; 2024 7th International Conference on Structural Engineering and Industrial Architecture 随着城市化进程的不断深入&#xff0c;建筑领域的需求也在优化、调整。结构工程的发展依旧受到重视&am…

c语言-数据结构-链表分割

链表分割实际上是给定一个值&#xff0c;遍历链表把链表中小于该值的节点与大于该值的节点分开&#xff0c;一般是将小于该值的节点放到链表的前面部分&#xff0c;大于该值的节点放在链表的后面部分。 链表分割示意图如下&#xff1a; 思路&#xff1a; 首先创建两条带哨兵位节…

CSDN每日一题学习训练——Java版(字符串相乘、子集、删除链表的倒数第 N 个结点)

版本说明 当前版本号[20231112]。 版本修改说明20231112初版 目录 文章目录 版本说明目录字符串相乘题目解题思路代码思路补充说明参考代码 子集题目解题思路代码思路参考代码 删除链表的倒数第 N 个结点题目解题思路代码思路参考代码 字符串相乘 题目 给定两个以字符串形…