海量時序資料分析預測難?來試試 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。並複製至 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);
構造資料方法
python mockdata.py taos -s "insert into power.goods select _wstart, _wstart + 10d, avg(goods) from power.meters interval(10d);"
原始碼託管在 GitHub sangshuduo。
使用 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 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 LinearRegression ds = 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()
執行程式輸出結果:
寫在最後
透過整合 Seeq 和 TDengine,使用者能夠充分利用到 TDengine 高效能的時序資料儲存和檢索,確保資料的高效處理;同時也將受益於 Seeq 提供的強大資料視覺化和分析功能,如資料視覺化、異常檢測、相關性分析和預測建模,方便使用者獲得有價值的資料洞察並基於此進行決策。
未來 Seeq 和 TDengine 將共同為製造業、工業物聯網和電力系統等各行各業的時序資料分析提供綜合解決方案,將高效資料儲存和先進資料分析相結合,賦予企業深入挖掘時序資料潛力的能力,推動業務發展與改進。如果你想要了解 Seeq 的更全面設定、Seeq 與全託管的雲服務平臺 TDengine Cloud 的具體連線詳情,請移步官方文件進行查閱。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014783/viewspace-2995067/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- apache+php組合測試ApachePHP
- 一鍵獲取測試指令碼,輕鬆驗證“TSBS 時序資料庫效能基準測試報告”指令碼資料庫測試報告
- 《天龍八部·歸來》「歸來測試」預下載啟動,海量福利搶先知
- 一個測試用例裡面有多套測試資料,如何用 beautifureport 分別對各組測試資料進行統計測試通過與否
- 同位元組序跨平臺資料庫遷移和升級的測試資料庫
- 效能狗(Perfdog)測試與資料分析
- 找工作太難?軟體測試職場套路太深?來來這些生存套路瞭解一下!
- MongoDB資料庫順序讀效能評估測試MongoDB資料庫
- 測試資料
- 介面測試的時候如何生成隨機資料進行測試隨機
- 多角度分析,通訊時序資料的預測與異常檢測挑戰
- 大資料測試與 傳統資料庫測試大資料資料庫
- 來 ! 玩玩PHPUnit的資料庫測試 (上)PHP資料庫
- Python自動化測試-使用Pandas來高效處理測試資料Python
- 汽車行業大資料分析怎麼做?快試試這個資料分析工具,小白也能做行業大資料
- 還在用Visio畫時序圖?趕緊試試這兩款好用的時序圖工具(修訂版)時序圖
- logminer進行資料探勘分析測試
- 時序資料庫分析-TimescaleDB時序資料庫介紹資料庫
- 功能測試之存量資料新與增資料測試
- Sysbench測試神器:一條命令生成百萬級測試資料
- 組態王與Access資料庫通訊--④資料庫測試資料庫
- PHP 單元測試與資料庫測試PHP資料庫
- 自動化測試如何管理測試資料
- 解密!傳統測試 vs 大資料測試解密大資料
- 大資料測試技術——課堂測試大資料
- Eolink Apikit 快速發起 API 測試,一鍵生成測試資料API
- DDT資料驅動效能測試(一)
- ASM資料庫的一個測試ASM資料庫
- 【效能測試策略】系統調優由易到難的順序
- 使用allpairs自動設計組合測試用例AI
- 定時做資料庫恢復測試sqlserver資料庫SQLServer
- 這款資料庫管理工具你一定要試試!資料庫
- ETL測試或資料倉儲測試入門
- FastQC——測序資料質量分析AST
- TestComplete資料驅動測試教程(二)——記錄測試資料
- 測試測試測試測試測試測試
- 未來資料分析的五個趨勢預測!
- 軟體測試招聘之難