目录
前言
ProcessDB实时/时序数据库支持C#语言开发,本文将针对C#操作ProcessDB库的历史统计数据的相关操作进行介绍
一、历史统计数据字段介绍
字段 | 注释 |
tmTag | 历史数据时间 |
nQuality | 质量是否完好 |
dSum | 累计值 |
dMax | 最大值 |
dMin | 最小值 |
dFirst | 第一值 |
dLast | 最后值 |
tmFirst | 第一值时间 |
tmLast | 最后时间 |
nUltraLimitCount | 超限制数 |
nUltraLimitDuration | 超限制时间 |
dOutput | 产量 |
dFlow | 流量值 |
nCount | 统计数据数量 |
Duration | 持续时间 |
tmMin | 最小值时间 |
tmMax | 最大值时间 |
二、根据点名查询历史统计数据
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using ProcessDB;
namespace Data_History
{
class Program
{
static void Main(string[] args)
{
TestHistory testHistory = new TestHistory();
int res = testHistory.HistoryTest();
}
}
public class TestHistory
{
public class pointlist
{
public string pointname { get; set; }
public int pointid { get; set; }
public DATA_TYPE datatype { get; set; }
}
static DateTime GetTime(string timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}
public int HistoryTest()
{
int res = 0;
/* 初始化连接控制块 */
res = ProcessDBDao.getInstance().init();
if (0 != res)
{
Console.WriteLine("ProcessDBDao init failed! error code: {0}", res);
return res;
}
/* 建立连接 */
res = ProcessDBDao.getInstance().connect("127.0.0.1", 8301, "root", "root");
//res = ProcessDBDao.getInstance().connect("192.168.0.186", 8301, "root", "root");
if (0 != res)
{
Console.WriteLine("login failed! error code: {0}", res);
return res;
}
TimeSpan ts = DateTime.Now - DateTime.Parse("1970-01-01 08:00:00");
long start_seconds = System.Convert.ToInt32(ts.TotalSeconds) - 1200;
TimeRegion timeRegion = new TimeRegion();
//开始时间
timeRegion.tmBegin = start_seconds;//将数字的指定字符串表示形式转换为等效的 32 位有符号整数。
ts = DateTime.Now - DateTime.Parse("1970-01-01 08:00:00");
//结束时间
timeRegion.tmEnd = System.Convert.ToInt32(ts.TotalSeconds);
if (timeRegion.tmBegin >= timeRegion.tmEnd)
{
Console.WriteLine("开始时间应小于结束时间");
return res;
}
IntPtr ebase_res1;
/* 查询统计数据*/
int static_interval = 60;
timeRegion.tmBegin = start_seconds;
timeRegion.tmEnd = start_seconds + 1200;
string pointname = "PUBLIC.SYS.PDB_OS_CPU_USAGE";
res = ProcessDBDao.getInstance().exec_his_stat_query(pointname, ref timeRegion, static_interval, out ebase_res1);
if (0 != res)
{
Console.WriteLine("ebase_exec_his_stat_query failed!error code:{0}", res);
return res;
}
else
{
Console.WriteLine("ebase_exec_his_stat_query succeed!");
}
Console.WriteLine("History stat query ---------------begin-----------------\n");
int count = 0;
res = ProcessDBDao.getInstance().get_result_count(ebase_res1, out count);
MemStatRecord memStatRecord = new MemStatRecord();
for (int dwLoop = 0; dwLoop < count; dwLoop++)
{
res = ProcessDBDao.getInstance().get_stat_record(ebase_res1, dwLoop, ref memStatRecord);
if (0 != res)
{
Console.WriteLine("get_stat_record failed!error code:{0}", res);
return res;
}
else
{
Console.WriteLine("get_stat_record succeed! TmTag: {0}, Max: {1}, Min: {2}, Sum: {3}", GetTime(Convert.ToString(memStatRecord.tmTag)), memStatRecord.dMax, memStatRecord.dMin, memStatRecord.dSum);
}
}
Console.WriteLine("History stat query ---------------end-------------------\n");
Console.WriteLine("His stat record num:{0}", count);
ProcessDBDao.getInstance().free_result(ebase_res1);
res = ProcessDBDao.getInstance().close();
return res;
}
}
}
示例运行如下:
ebase_exec_his_stat_query succeed!
History stat query ---------------begin-----------------
get_stat_record succeed! TmTag: 2022/12/12 11:27:17, Max: 17.6865139007568, Min: 0, Sum: 200.289571536705
get_stat_record succeed! TmTag: 2022/12/12 11:28:17, Max: 6.44597864151001, Min: 0, Sum: 140.185453400016
get_stat_record succeed! TmTag: 2022/12/12 11:29:17, Max: 11.1025590896606, Min: 0, Sum: 171.816717863083
get_stat_record succeed! TmTag: 2022/12/12 11:30:17, Max: 11.9201307296753, Min: 0, Sum: 173.974464595318
get_stat_record succeed! TmTag: 2022/12/12 11:31:17, Max: 13.5576391220093, Min: 0, Sum: 258.415714979172
get_stat_record succeed! TmTag: 2022/12/12 11:32:17, Max: 19.2441787719727, Min: 0.264562040567398, Sum: 258.464012145996
get_stat_record succeed! TmTag: 2022/12/12 11:33:17, Max: 13.9400072097778, Min: 0, Sum: 196.750880002975
get_stat_record succeed! TmTag: 2022/12/12 11:34:17, Max: 23.239652633667, Min: 0, Sum: 237.037854708731
get_stat_record succeed! TmTag: 2022/12/12 11:35:17, Max: 26.5161533355713, Min: 0, Sum: 241.079710423946
get_stat_record succeed! TmTag: 2022/12/12 11:36:17, Max: 41.2031059265137, Min: 0.40159073472023, Sum: 500.788941293955
get_stat_record succeed! TmTag: 2022/12/12 11:37:17, Max: 33.8622779846191, Min: 0.0768116936087608, Sum: 338.766692690551
get_stat_record succeed! TmTag: 2022/12/12 11:38:17, Max: 42.3886260986328, Min: 0, Sum: 270.450161889195
get_stat_record succeed! TmTag: 2022/12/12 11:39:17, Max: 45.002628326416, Min: 0, Sum: 300.519964784384
get_stat_record succeed! TmTag: 2022/12/12 11:40:17, Max: 6.61439752578735, Min: 0, Sum: 131.165826003999
get_stat_record succeed! TmTag: 2022/12/12 11:41:17, Max: 35.5447845458984, Min: 0, Sum: 353.799237012863
get_stat_record succeed! TmTag: 2022/12/12 11:42:17, Max: 24.8596153259277, Min: 0, Sum: 202.447994764894
get_stat_record succeed! TmTag: 2022/12/12 11:43:17, Max: 9.58825302124023, Min: 0, Sum: 118.098532065749
get_stat_record succeed! TmTag: 2022/12/12 11:44:17, Max: 19.8600540161133, Min: 0, Sum: 347.357121884823
get_stat_record succeed! TmTag: 2022/12/12 11:45:17, Max: 36.2745208740234, Min: 0, Sum: 231.184567656368
get_stat_record succeed! TmTag: 2022/12/12 11:46:17, Max: 25.0844593048096, Min: 0, Sum: 358.829360678792
History stat query ---------------end-------------------
His stat record num:20
三、根据点ID查询历史统计数据
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using ProcessDB;
namespace Data_History
{
class Program
{
static void Main(string[] args)
{
TestHistory testHistory = new TestHistory();
int res = testHistory.HistoryTest();
}
}
public class TestHistory
{
public class pointlist
{
public string pointname { get; set; }
public int pointid { get; set; }
public DATA_TYPE datatype { get; set; }
}
static DateTime GetTime(string timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}
public int HistoryTest()
{
int res = 0;
/* 初始化连接控制块 */
res = ProcessDBDao.getInstance().init();
if (0 != res)
{
Console.WriteLine("ProcessDBDao init failed! error code: {0}", res);
return res;
}
/* 建立连接 */
res = ProcessDBDao.getInstance().connect("127.0.0.1", 8301, "root", "root");
//res = ProcessDBDao.getInstance().connect("192.168.0.186", 8301, "root", "root");
if (0 != res)
{
Console.WriteLine("login failed! error code: {0}", res);
return res;
}
TimeSpan ts = DateTime.Now - DateTime.Parse("1970-01-01 08:00:00");
long start_seconds = System.Convert.ToInt32(ts.TotalSeconds) - 1200;
TimeRegion timeRegion = new TimeRegion();
//开始时间
timeRegion.tmBegin = start_seconds;//将数字的指定字符串表示形式转换为等效的 32 位有符号整数。
ts = DateTime.Now - DateTime.Parse("1970-01-01 08:00:00");
//结束时间
timeRegion.tmEnd = System.Convert.ToInt32(ts.TotalSeconds);
if (timeRegion.tmBegin >= timeRegion.tmEnd)
{
Console.WriteLine("开始时间应小于结束时间");
return res;
}
IntPtr ebase_res1;
/* 查询统计数据*/
int static_interval = 60;
timeRegion.tmBegin = start_seconds;
timeRegion.tmEnd = start_seconds + 1200;
int pointId = 1001000001;
res = ProcessDBDao.getInstance().ebase2_exec_his_stat_query_id(pointId, ref timeRegion.tmBegin,ref timeRegion.tmEnd, static_interval, out ebase_res1);
if (0 != res)
{
Console.WriteLine("ebase_exec_his_stat_query failed!error code:{0}", res);
return res;
}
else
{
Console.WriteLine("ebase_exec_his_stat_query succeed!");
}
Console.WriteLine("History stat query ---------------begin-----------------\n");
int count = 0;
res = ProcessDBDao.getInstance().get_result_count(ebase_res1, out count);
MemStatRecord memStatRecord = new MemStatRecord();
for (int dwLoop = 0; dwLoop < count; dwLoop++)
{
res = ProcessDBDao.getInstance().get_stat_record(ebase_res1, dwLoop, ref memStatRecord);
if (0 != res)
{
Console.WriteLine("get_stat_record failed!error code:{0}", res);
return res;
}
else
{
Console.WriteLine("get_stat_record succeed! TmTag: {0}, Max: {1}, Min: {2}, Sum: {3}", GetTime(Convert.ToString(memStatRecord.tmTag)), memStatRecord.dMax, memStatRecord.dMin, memStatRecord.dSum);
}
}
Console.WriteLine("History stat query ---------------end-------------------\n");
Console.WriteLine("His stat record num:{0}", count);
ProcessDBDao.getInstance().free_result(ebase_res1);
res = ProcessDBDao.getInstance().close();
return res;
}
}
}
示例运行如下:
ebase_exec_his_stat_query succeed!
History stat query ---------------begin-----------------
get_stat_record succeed! TmTag: 2022/12/12 13:49:34, Max: 23.4477672576904, Min: 0, Sum: 210.110562592745
get_stat_record succeed! TmTag: 2022/12/12 13:50:34, Max: 19.5832195281982, Min: 0, Sum: 315.558922320604
get_stat_record succeed! TmTag: 2022/12/12 13:51:34, Max: 25.2877769470215, Min: 0, Sum: 307.289547920227
get_stat_record succeed! TmTag: 2022/12/12 13:52:34, Max: 15.0845718383789, Min: 0, Sum: 171.621442213655
get_stat_record succeed! TmTag: 2022/12/12 13:53:34, Max: 26.7271556854248, Min: 0, Sum: 227.022248968482
get_stat_record succeed! TmTag: 2022/12/12 13:54:34, Max: 17.8598861694336, Min: 0.238318055868149, Sum: 280.539425849915
get_stat_record succeed! TmTag: 2022/12/12 13:55:34, Max: 10.8680839538574, Min: 0, Sum: 179.044180005789
get_stat_record succeed! TmTag: 2022/12/12 13:56:34, Max: 17.6796035766602, Min: 0, Sum: 229.685923308134
get_stat_record succeed! TmTag: 2022/12/12 13:57:34, Max: 16.0076923370361, Min: 0, Sum: 220.112278997898
get_stat_record succeed! TmTag: 2022/12/12 13:58:34, Max: 58.4532470703125, Min: 0, Sum: 457.422671072185
get_stat_record succeed! TmTag: 2022/12/12 13:59:34, Max: 47.016658782959, Min: 1.17905855178833, Sum: 627.798451542854
get_stat_record succeed! TmTag: 2022/12/12 14:00:34, Max: 28.5286464691162, Min: 0, Sum: 256.80866830796
get_stat_record succeed! TmTag: 2022/12/12 14:01:34, Max: 19.4842777252197, Min: 0, Sum: 230.73091122508
get_stat_record succeed! TmTag: 2022/12/12 14:02:34, Max: 39.020336151123, Min: 0, Sum: 443.300077021122
get_stat_record succeed! TmTag: 2022/12/12 14:03:34, Max: 20.6704559326172, Min: 0, Sum: 199.068634390831
get_stat_record succeed! TmTag: 2022/12/12 14:04:34, Max: 20.4121360778809, Min: 0.431538671255112, Sum: 270.586784809828
get_stat_record succeed! TmTag: 2022/12/12 14:05:34, Max: 19.277587890625, Min: 0, Sum: 233.854323564097
get_stat_record succeed! TmTag: 2022/12/12 14:06:34, Max: 28.7140655517578, Min: 0, Sum: 281.174850739539
get_stat_record succeed! TmTag: 2022/12/12 14:07:34, Max: 28.8283309936523, Min: 0, Sum: 236.054460521787
get_stat_record succeed! TmTag: 2022/12/12 14:08:34, Max: 32.6665267944336, Min: 0.187218442559242, Sum: 309.16922147572
History stat query ---------------end-------------------
His stat record num:20