跨平台实时数据库查询历史数据的方法介绍

实时数据仓库资讯
2024/4/23
SelectDB

紫金桥跨平台组态软件,跨平台实时数据库共提供了两种方式查询历史数据,下面对这两种方式进行详细介绍。

一、使用函数gethisdata查询历史数据

1、函数介绍

Gethisdata用于查询数据库变量在某一时刻的历史数据。

Void GetHisData(String TagName,Real Time)

函数说明:立刻向数据库检索历史数据。

参数说明:

TagName:数据库变量名称,包括点名和参数(如A1.PV)。

Time: 实型日期时间,精确到毫秒

返回值:void,可返回整型或字符串。

2、函数使用方法

在脚本中输入如下文本:

Local.GetHisData("a1.PV",LongTime("2019/08/08 16:00:00.000"))

以上为查询2019年8月8日16点整a1.PV的历史数据。

Local指查询本地实时数据库。若要查询远程数据源,则输入 “远程数据源名. GetHisData”。例如

在脚本中输入如下文本:

test.GetHisData("b1.PV",LongTime("2019/08/08 16:00:00.000"))

以上为查询远程数据源test中,2019年8月8日16点整b1.PV的历史数据。

二、使用内置SQL查询历史数据

使用内置SQL,可以同时查询多个数据库变量在某时间范围内的历史数据。

以下详细说明通过SQL查询向导生成内置SQL语句,查询历史数据。

1、在脚本中使用查询向导

在脚本对话框中右键,点击“查询向导”。

SQL查询向导 在查询向导对话框中,选择要查询的数据源及查询类型。

选择本地实时数据库,查询历史数据

可同时查询多个数据库变量

选择要查询的字段 Value:历史数据,整型或字符串

Name:点名+点参数

DateTime:历史数据的时间

别名:查询返回的数据表中,该查询字段显示的名称。默认为空,即显示字段名。

查询返回的数据表中数据的排序方式 可根据查询的字段名按照升序或降序排列。默认为不勾选,即按照上两步中查询点名的顺序排列。

查询的时间及类型设置 起始时间:可输入起始时间,或使用起始时间控件。

时间长度:可输入时间长度,或使用时间范围控件。

采样类型:可选择瞬时值、所有值、拐点值、极小值或极大值。

时间间隔:表示每隔多长时间取一条数据。只在查询瞬时值时有效。

操作完成后点击“确定”,会在脚本中自动生成相应的查询语句。

使用SQL查询向导生成的查询语句 生成的语句中的查询条件可以根据需要进行修改,查询返回的记录集存储在通用数据表tab中。

附录:通用数据表常见使用方法

通用数据表(ObTable)是一种结构类似于关系数据表的数据表结构,可以把它想象成由若干行和列构成的二维表。通用数据表的不同列的数据类型可以不同,但每一列中的数据类型必须相同。使用时,通常使用列名(字符串)或列号(整型)和行号(整型)来定位到具体的单元格。使用通用数据表可以用来存储一些临时数据,也可以用于临时保存实时数据库或关系库的查询结果。

使用通用数据表函数ObTable定义的对象为临时对象,作用域仅在当前脚本中。在上面的例子中:

使用ObTable定义的对象tab,仅在此鼠标脚本中可以使用。可以在上述脚本后使用其他函数调用tab中的内容。下面列举几种tab的常见使用方法,tab的基本操作请参阅函数手册。

(1)使用msg()函数输出tab中数据:

msg(tab) //弹出通用数据表tab中的数据

(2)使用tab设置表格:

Table.set(tab) //使用tab设置表格数据,表格从0行0列开始

Table.SetAt(tab, Int Row, Int Col);使用tab在指定的位置设置表格数据

(3)使用tab设置XY曲线:

FreeCurveMan.SetByTable(tab) //使用通用数据表设置曲线数据

2、在表格中使用查询向导

新建表格,在要使用查询向导的单元格上右键,点击“单元格属性/查询/脚本”,切换至“单元格”选项卡。

表格单元格查询

单元格选项卡 排列方式:查询返回的记录集插入到表格中时,软件提供三种排列方式:

覆盖(当前位置向右下覆盖):将查询结果记录集以当前单元格为左上角向右向下覆盖,当行列数不足时自动增加行列。

插入(在当前行之后插入新行):将查询结果记录集插入当前行之后,列数不足时自动增加列。如查询结果记录集为N行数据,则表格将在当前行后新插入N行来放置记录集。

覆盖插入(覆盖当前位置再插入新行):将查询结果记录集先覆盖当前行,然后插入新行放置记录集。如查询结果记录集为N行数据,则表格将在覆盖当前行后再新插入N-1行来放置记录集。

字段显示:设置字段是否显示,可以选择显示在表头或者不显示。

基本选项设置完成后,下一步是数据查询设置,下面分项进行详细说明。

查询描述:显示当前单元格查询内容。

删除查询:删除当前单元格查询内容。

查询向导:点击进入查询向导,使用方法与上一节相同。

表格的查询向导设置完毕后,运行工程,当打开表格所在窗口时,表格会执行已设置的查询。若要重复执行查询,可以在按钮或其他想要触发查询的脚本中,使用表格的updata函数:

Table.Update() //执行表格中的查询

三、查询历史数据注意事项

1、要查询的数据库变量一定要保存历史。

2、不建议在周期脚本中查询历史数据,频繁的查询历史会造成系统卡顿。若要同时查询多项历史,请使用内置SQL。

3、查询所有值,会返回查询时间范围内的所有历史数据;查询瞬时值,是根据查询时间范围、查询间隔返回的历史抽样数据。

例如:

近一小时内,A1.PV的值始终为50,历史数据保存方式为周期一小时保存。

若查询近一小时内的所有值,返回的记录集中只有一条数据,即:

A1.PV 50

若查询近一小时内时间间隔为十分钟的瞬时值,则返回的记录集中会有六条数据:

A1.PV 50

A1.PV 50

A1.PV 50

A1.PV 50

A1.PV 50

A1.PV 50