ProcessDB实时/时序数据库——C#查询历史统计数据

目录

前言

一、历史统计数据字段介绍

二、根据点名查询历史统计数据

三、根据点ID查询历史统计数据


前言

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值