Excel自定义函数

Navigation:  功能明细 > 数据展示 > 电子表格 >

Excel自定义函数

Previous pageReturn to chapter overviewNext page

 

 

实时数据库的Excel插件中,包含两个加载宏,一个是xla菜单项,一个是ExcelXLL.xll,实时数据库安装程序默认会安装并注册这两个加载宏。

 

Excel自定义函数目前有三种使用方式:菜单界面、图形用户界面以及Excel函数框输入直接使用。

Excel函数框输入支持所有自定义函数,菜单界面和图形用户界面分别支持部分自定义函数。

 

菜单界面主要支持以下自定义函数:

hd_SnapShot :获取实时记录

hd_CompValRange :时间区间模式获取历史原始记录

hd_CompValNum : 记录条数模式获取历史原始记录

hd_IntValSpaced : 等间隔模式获取历史插值记录

hd_IntValTimed : 时间点模式获取历史插值记录

hd_GetVal : 获取某个tag点在某个时间点的记录,使用前向插值算法

hd_Static:获取多种类型历史记录统计数据

hd_StaticCount:获取统计计数

hd_StaticTime:获取统计计时

选中一个函数,点击“确定”,即可进入函数参数输入窗口,输入对应的参数即可获取到对应的实时数据库数据。

示例如下:

images_DataDisplay_DD_ExcelAddInFuncRes

 

Excel自定义函数可以通过Excel插件菜单界面输入参数后生成,使用中的注意点

 

(1) Excel对于自定义函数的常用快捷键有:

    a. ctrl+alt+F9,重新计算当前sheet中的所有函数

    b. ctrl+shift+enter,在标题栏中输入函数后,可按此组合键完成函数的计算

    c. ctrl+a, 选中函数输出结果中的某单元格后,按此键可以全选中数组公式中包含的所有的单元格

(2) 函数参数支持Excel单元格引用录入,不过,请注意,需要在引用地址前添加一个空格,以示区分

(3) 只支持普通点,统计点和计算点的数据记录获取

(4) 函数输出结果,若为!Value,代表输出值未正常获取,若为!Name,是因为xll插件未加载成功

(5) 函数参数中mode输出格式参数的说明:

hd_CompValNum

     1 向前查询,不显示数据质量,时间戳在左

     2 向前查询,不显示数据质量,时间戳在上

     3 向前查询,显示数据质量,时间戳在左

     4 向前查询,显示数据质量,时间戳在上

     5 向后查询,不显示数据质量,时间戳在左

     6 向后查询,不显示数据质量,时间戳在上

     7 向后查询,显示数据质量,时间戳在左

     8 向后查询,显示数据质量,时间戳在上

hd_CompValRange

     2 不显示数据质量, 时间戳在左

     3 不显示数据质量,时间戳在上

     5 显示数据质量,时间戳在左

     6 显示数据质量,时间戳在上

 

hd_GetAverValInterRange

     1 不显示数据质量, 时间戳在左

     2 不显示数据质量,时间戳在上

     3 显示数据质量,时间戳在左

     4 显示数据质量,时间戳在上

     5不显示数据质量,不显示时间戳

 

hd_IntValTimed

     1 不显示数据质量, 时间戳在左

     2 不显示数据质量,时间戳在上

     3 显示数据质量,时间戳在左

     4 显示数据质量,时间戳在上

 

hd_SnapShot

     1 不显示数据质量,不显示时间戳

     2 不显示数据质量,时间戳在左

     3 不显示数据质量,时间戳在上

     4 显示数据质量,不显示时间戳

     5 显示数据质量,时间戳在左

     6 显示数据质量,时间戳在上

 

hd_Static

hd_StaticCount

hd_StaticTime

     0 不显示时间戳

      1 时间戳在左

      2 时间戳在上

 

 

(6) 输出结果为多个单元格的建议使用界面输入后生成函数。

(7) 统计函数参数中的统计类型可参考菜单"历史记录统计"配置,不建议手工修改。参数等参考Excel说明Excel客户端统计。 StaticType,StaticCountType,StaticTimeType指统计类型;SampleType 指的是采样方式;Sample指的是统计模式;

ValueBefore、ValueBehind为计数类型的区间左右值;

ValueTime1、ValueTime2为计时类型的区间左右值。

 

函数功能及示例

 

注:相对时间戳格式Pi和iHD不一致,目前性能方程式TimeEQ等6个函数支持Pi的相对时间戳格式hd_SampDat,hd_TimeFilter,hd_TimeFilterVal两种格式都兼容,其余函数仅支持iHD的时间戳格式;iHD的时间戳格式可参考时间戳格式

 

函数名

函数功能

备注

示例

hd_CurrVal()

返回当前值

返回值分三种情况:

1.所有记录时间戳比当前时间更早,返回最近时间戳

2.当前时间在所有记录时间戳之中,返回插值时间记录

3.所有记录时间戳比当前时间更晚,返回没有数据

语法:

hd_CurrVal(TagName, OutCode, RootPath)

TagName:hd点名

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_CurrVal("test",1,"holden")

返回查询holden服务器上let439点当前值。

OutCode:此参数通过一个输出代码确定函数返回的附加数据以及输出单元格的方向。

当 OutCode 参数设为 0 时,函数按列方向返回值,且无附加数据。要计算 OutCode 参数,

请使用以下公式:

clip0228

1st

显示时间戳

2nd

按行显示而不是按列显示

3rd

显示质量是good记录百分比

4th

隐藏条数

5th

显示扩展状态

6th

显示标注

7th

显示开始时间

8th

显示结束时间

9th

显示最大/最小时间

按列方向输出值

=hd_CurrVal(''test",0,"")

按列方向输出时间戳和值

=hd_CurrVal(''test",1,"")

按行方向输出

=hd_CurrVal(''test",3,"")

hd_ArcVal()

返回需要查询时间戳的历史值

语法:

hd_ArcVal(TagName, TimeStamp, OutCode, RootPath, Mode)

TagName:hd点名

TimeStamp:查询时间戳

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

Mode:取值模式

previous: 返回与指定时间戳完全匹配或在其之前的值

previous only: 返回在指定时间戳之前的值

interpolated: 返回指定时间的插值

next: 返回与指定时间戳完全匹配或在其之后的值

next only: 返回在指定时间戳之后的值

exact time: 返回一个与时间戳完全匹配的值,或返回 错误码(如果该时间戳上不存在任何值

 

示例:

hd_ArcVal("cdep158","11-dec-92 19:20",0, "","interpolated")

返回casaba服务器上cdep158点在92年12月11日19点20分历史插值。

bit 1

 

bit 2

按列方向输出值

=hd_ArcVal(''test",''2024/1/25 12:00:00'',"0","","previous")

hd_ExpVal()

返回性能方程式对时间戳历史值计算之后的值

语法:

hd_ExpVal(Expression, TimeStamp, OutCode, RootPath)

Expression:性能方程式表达式

TimeStamp:查询时间戳

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_ExpVal("sqr('sinusoid')","y",0,"")

返回thevax服务器上昨天0点sinusoid点的平方根

目前只支持两个tag之间的简单计算

 hd_ExpVal("'tag_int16_3' + 'tag_int16_4'", "2024-02-22 13:15:00.27", 1)

hd_TagAtt()

返回点的属性

语法:

hd_TagAtt(TagName, Property, RootPath)

TagName:hd点名

Property:点的属性

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_TagAtt(d1,"uom","")

从默认服务器查询d1单元格hd_点的单位属性

支持hd的通用属性

{"tagid", },

{"descriptor", },

{"tagname", },

{"changedate", },

{"compdev", },

{"compmaxtime", },

{"comptype", },

{"creationdate", },

{"creator", },

{"recaccess", },

{"recnormalgroup", },

{"recownergroup", },

{"digitalset", },

{"engunits", },

{"excmaxtime", },

{"tagtype", },

{"tagaccess", },

{"tagnormalgroup", },

{"tagownergroup", },

{"scan", },

{"span", },

{"minvalue", },

{"tagclass", },

{"tagavaliable", },

{"imvstring", },

{"extstring1", },

{"extstring2"},

=hd_TagAtt("test","tagid","")

hd_CompDat()

返回某个时间段的历史记录

语法:

hd_CompDat(TagName, STime, ETime, OutCode, RootPath, Mode)

TagName:hd点名

STime:开始时间点

ETime:结束时间点

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

Mode:边界值处理模式(inside,outside,interpolated,auto)

 

示例:

hd_CompDat("sinusoid","1:00:00","3:00:00",1,"","inside")

返回sinusoid点从今天1点到3点之间inside模式的历史记录

返回多个时间点的值,目前只支持使用单元格选中多个时间

=hd_CompDat(" $C$23"," $E$25:$E$37","", "interpolated")

hd_NCompDat()

返回从某个时间点开始一定条数的历史记录

语法:

hd_NCompDat(TagName, STime, NumVals, OutCode, RootPath, Mode)

TagName:hd点名

STime:开始时间点

NumVals:返回多少条记录

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

Mode:边界值处理模式(inside,outside,interpolated,auto)

 

示例:

hd_NCompDat("sinusoid","1:00:00",10,1,"","inside")

返回sinusoid点从今天1点开始inside的10条历史记录



hd_SampDat()

返回一段时间平分的插值

语法:

hd_SampDat(TagName, STime, ETime, Interval, OutCode, RootPath)

TagName:hd点名

STime:开始时间点

ETime:结束时间点

Interval:插值间隔

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_SampDat("sinusoid","y","t","3h",1,"")

返回sinusoid点昨天0点到今天0点每三小时的插值



hd_TimeDat()

返回指定时间点的原始或插值记录

语法:

hd_TimeDat(TagName, TimeStamps, RootPath, Mode)

TagName:hd点名

TimeStamps:时间点

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

Mode:取值方法(interpolated,exact time)

 

示例:

hd_TimeDat("sinusoid",b1:b12,"","interpolated")

返回sinusoid点b1到b12单元格时间点的插值



hd_AdvCalcVal()

返回单个值,通过计算一段时间的历史值得出

语法:

hd_AdvCalcVal(TagName, STime, ETime, Mode, CalcBasis, MinPctGood, CFactor, OutCode, RootPath)

TagName:hd点名

STime:开始时间点

ETime:结束时间点

Mode:计算方式(total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted))

CalcBasis:计算基准(time-weighted,event-weighted)

MinPctGood:最小好的数据的百分比

CFactor:返回值的系数,如果是1说明不需要考虑系数。

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_AdvCalcVal("sinusoid","y","t","total","time-weighted",50,1,4,"")

返回sinusoid点从昨天0点到今天0点值的总和,如果查询时间段内好的值大于50%会有返回值,需要乘系数,方法同时返回好的值的百分比在返回值左侧。

当 OutCode 参数设为 0 时,函数按列方向返回值,且无附加数据。要计算 OutCode 参数,

请使用以下公式:

clip0229

OutCode支持:

2nd 按行或者按列显示

3rd 显示质量是good记录百分比

示例:

=hd_AdvCalcVal("hdsys_cpu_0","2024-02-19 9:02:00","2024-02-20 9:02:00","average", "event-weighted", 80, 1, 3)

hd_AdvCalcDat()

返回一段时间经过计算的等分值

语法:

hd_AdvCalcDat(TagName, STime, ETime, Interval, Mode, CalcBasis, MinPctGood, CFactor, OutCode, RootPath)

TagName:hd点名

STime:开始时间点

ETime:结束时间点

Interval:间隔

Mode:计算方式(total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted))

CalcBasis:计算基准(time-weighted,event-weighted)

MinPctGood:最小好的数据的百分比

CFactor:返回值的系数,如果是1说明不需要考虑系数。

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_AdvCalcDat("sinusoid","y","t","3h","total","time-weighted",50, 1,4,"")

返回sinusoid点昨天到今天每三个小时值的总和,如果查询时间段内好的值大于50%会有返回值,需要乘系数,方法同时返回好的值的百分比在返回值左侧。

当 OutCode 参数设为 0 时,函数按列方向返回值,且无附加数据。要计算 OutCode 参数,

请使用以下公式:

clip0230

OutCode支持:

2nd 按行或者按列显示

3rd 显示质量是good记录百分比

 

目前只支持在选中范围的单元格中显示,不支持自动填充到没有选中单元格

示例:

=hd_AdvCalcDat("hdsys_cpu_0","2024-03-19 9:02:00","2024-03-19 16:02:00", "30m", "average", "event-weighted", 80, 1, 3)

hd_TimeFilterVal()

返回一段时间内的符合性能表达式条件的时间总和

语法:

hd_TimeFilterVal(Expression, STime, ETime, TimeUnit, OutCode, RootPath)

Expression:性能表达式

STime:开始时间点

ETime:结束时间点

TimeUnit:计算的时间单位(seconds, minutes,hours,days)

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_TimeFilterVal($A$1,"y","t","seconds",0,"thevax")

返回符合A1单元格表达式的从昨天到今天的秒数

表达式格式:

'tag'>1,

'tag'==0,

'tag'<>2,

'tag'<=3

=hd_TimeFilterVal("'test'>=10","*-8h","*","seconds",1,"")

hd_TimeFilter()

返回一段时间内平分后的符合性能表达式条件的时间总和

语法:

hd_TimeFilter(Expression, STime, ETime, Interval, TimeUnit, OutCode, RootPath)

Expression:性能表达式

STime:开始时间点

ETime:结束时间点

Interval:等分间隔

TimeUnit:计算的时间单位(seconds, minutes,hours,days)

OutCode:返回值排列模式

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填

 

示例:

hd_TimeFilter($A$1,"y","t","1h","seconds",65,"thevax")

返回符合A1单元格表达式的从昨天到今天每一个小时等分时间段的秒数,在计算出的秒数左边会显示每个时间段开始的时间

表达式格式:

'tag'>1,

'tag'==0,

'tag'<>2,

'tag'<=3

bit 1,

bit 2,

bit 3,

bit 7,

bit 8

=hd_TimeFilter("'test'>1","12-jan-24 12:00:00","12-jan-24 12:30:00","-10m","minutes",197,"")

hd_Tag2Id()

返回hd_标记点名

语法:

hd_Tag2Id(pointid, hd_Server)

pointid:hd标记点ID

hd_Server:目标hd_ Server

 

示例:

hd_Tag2Id("test","")

返回服务器点名是test的id


Private Sub 获取tagId_Click()

   Worksheets("Sheet1").Cells(54, 3).Formula = "=hd_Tag2Id(""" & Worksheets("Sheet1").Cells(54, 2).Value & """, """")"

End Sub

clip0231

clip0232

hd_ID2Tag()

返回hd_标记点名

语法:

hd_ID2Tag(pointid, hd_Server)

pointid:hd标记点ID

hd_Server:目标hd_ Server

 

示例:

hd_ID2Tag("123","thevax")

返回thevax服务器id是123的点名



hd_AttributeMaskToTag ()

返回一个或多个符合属性的标记点名

语法:

hd_AttributeMaskToTag(tagname, descriptor, pointsource, pointtype, pointclass, engunits, outcode, hd_Server)

tagname:标记点名

descriptor:标记点描述

pointsource:标记点来源

pointtype:标记点类型掩码

pointclass:标记点类掩码

engunits:工程单位掩码

outcode:返回值排列模式

hd_Server:目标hd_ Server

 

示例:

hd_AttributeMaskToTag("sin*","*","*","*","*","*",0,"thevax")

返回thevax服务器sin开头点名

当 OutCode 参数设为 0 时,函数按列方向返回值,且无附加数据。要计算 OutCode 参数,

请使用以下公式:

clip0233

OutCode支持:

2nd 按行或者按列显示

3rd 显示质量是good记录百分比

 

目前只支持在选中范围的单元格中显示,不支持自动填充到没有选中单元格

示例

 

=hd_AttributeMaskToTag("tag_int16_*",,,"int16","HD3M_TAG_CLASS_BASIC",,0)

hd_PutVal()

向iHD存入一个标记点数据

语法:

hd_PutVal(tagname, value, timestamp,"")

tagname:点名

value:值

timestamp:时间戳

RootPath:为保留用户习惯,和PI接口一致,hd接口可不填


示例:

 

=hd_PutVal("Da_00002.ai_ylf","0.1","2024-09-03 7:01:03","")

hd_GetVal()

返回标记点时间戳时的值

语法:

hd_GetVal(tagname, timestamp)

tagname:点名

timestamp:时间戳


示例

 

=hd_GetVal("hdsys_mem_0","2024/9/4 10:00:00")

TimeEq()

统计tag点在一段时间内等于某个值的秒数

语法:

TimeEq(TagName, StartTime, EndTime,szValue)

TagName:hd点名

StartTime:起始时间

EndTime:结束时间

Value:字符串类型值

 

 

可直接在单元格中使用,也可在vba脚本中使用

Private Sub CommandButton1_Click()

   Worksheets("Sheet1").Cells(46, 3).Formula = "=TimeEq(""test"", ""-3mo"",""1"")"

End Sub

TimeGE()

统计tag点在一段时间内大于等于某个值的秒数

语法:

TimeGE(TagName, StartTime, EndTime,szValue)

TagName:hd点名

StartTime:起始时间

EndTime:结束时间

Value:字符串类型值

可直接在单元格中使用,也可在vba脚本中使用


TimeLE()

统计tag点在一段时间内小于等于某个值的秒数

语法:

TimeLE(TagName, StartTime, EndTime,szValue)

TagName:hd点名

StartTime:起始时间

EndTime:结束时间

Value:字符串类型值

可直接在单元格中使用,也可在vba脚本中使用


TimeNE()

统计tag点在一段时间内不等于某个值的秒数

语法:

TimeNE(TagName, StartTime, EndTime,szValue)

TagName:hd点名

StartTime:起始时间

EndTime:结束时间

Value:字符串类型值

可直接在单元格中使用,也可在vba脚本中使用


TimeGT()

统计tag点在一段时间内大于某个值的秒数

语法:

TimeGT(TagName, StartTime, EndTime,szValue)

TagName:hd点名

StartTime:起始时间

EndTime:结束时间

Value:字符串类型值

可直接在单元格中使用,也可在vba脚本中使用


TimeLT()

统计tag点在一段时间内小于于某个值的秒数

语法:

TimeLT(TagName, StartTime, EndTime,szValue)

TagName:hd点名

StartTime:起始时间

EndTime:结束时间

Value:字符串类型值

可直接在单元格中使用,也可在vba脚本中使用


hd_AdvCalcFilVal

通过计算单个Tag一段时间的历史值并过滤后返回单个值

语法:

szTagName 点名

szStartTime 开始时间

szEndTime 结束时间

szFilterExpression 过滤表达式

szMode 统计计算模式

szCalcBasis 计算基准

szSampleMode 采样模式

szSampleFrequency 采样频率

nMinPctGood 信任度

CFactor 系数

nOutcode 返回格式

统计计算模式:total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted)

 

目前count统计计算有问题不能使用,有时过滤表达式计算结果有问题

计算基准:

time-weighted 基于时间

event-weighted 基于条数

示例:

=hd_AdvCalcFilVal("hdsys_cpu_0","2024-04-30 9:02:00","2024-04-30 9:12:00","'hdsys_mem_0' > 48","average","time-weighted","compressed","",80,1,1)

 

统计计算2024-04-30 9:02:00到2024-04-30 9:12:00之间hdsys_cpu_0平均值,同时需要过滤hdsys_mem_0需要满足大于48才参与计算。

hd_AdvCalcExpVal

通过计算表达式一段时间的历史值返回单个值

语法:

szExpression 表达式

szStartTime 开始时间

szEndTime 结束时间

szMode 统计计算模式

szCalcBasis 计算基准

szSampleMode 采样模式

szSampleFrequency 采样频率

nMinPctGood 信任度

CFactor 系数

nOutcode 返回格式

表达式目前只支持加减乘除操作

统计计算模式:

total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted)

 

目前count统计计算有问题不能使用

计算基准:

time-weighted 基于时间

event-weighted 基于条数

示例:

=hd_AdvCalcExpVal("'hdsys_cpu_0' + 'hdsys_mem_0'","2024-04-30 9:02:00","2024-04-30 9:12:00", "average","time-weighted","compressed","",80,1,1)

 

统计计算2024-04-30 9:02:00到2024-04-30 9:12:00之间hdsys_cpu_0与hdsys_mem_0之和的平均值。

hd_AdvCalcExpFilVal

通过计算表达式一段时间的历史值并过滤后返回单个值

语法:

szExpression 表达式

szStartTime 开始时间

szEndTime 结束时间

szFilterExpression 过滤表达式

szMode 统计计算模式

szCalcBasis 计算基准

szSampleMode 采样模式

szSampleFrequency 采样频率

nMinPctGood 信任度

CFactor 系数

nOutcode 返回格式

表达式目前只支持加减乘除操作

统计计算模式:

total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted)

 

目前count统计计算有问题不能使用,有时过滤表达式计算结果有问题

计算基准:

time-weighted 基于时间

event-weighted 基于条数

示例:

=hd_AdvCalcExpFilVal("'hdsys_cpu_0' + 'hdsys_mem_0'","2024-04-30 9:02:00","2024-04-30 9:12:00","'hdsys_mem_0' > 49","maximum","time-weighted","compressed","30s",80,1,1)

 

统计计算2024-04-30 9:02:00到2024-04-30 9:12:00之间hdsys_cpu_0与hdsys_mem_0之和的平均值,同时hdsys_mem_0需要满足大于48的条件。

hd_AdvCalcFilDat

通过计算单个Tag多段时间的历史值并过滤后返回多个值

语法:

szTagName 点名

szStartTime 开始时间

szEndTime 结束时间

szInterval 计算间隔

szFilterExpression 过滤表达式

szMode 统计计算模式

szCalcBasis 计算基准

szSampleMode 采样模式

szSampleFrequency 采样频率

nMinPctGood 信任度

CFactor 系数

nOutcode 返回格式

统计计算模式:

total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted)

 

目前count统计计算有问题不能使用,有时过滤表达式计算结果有问题

计算基准:

time-weighted 基于时间

event-weighted 基于条数

示例:

=hd_AdvCalcFilDat("hdsys_mem_0","2024-04-30 9:02:00","2024-04-30 11:32:00", "1m","'hdsys_mem_0' > 49","average","event-weighted","compressed","30s",80,1,3)

 

统计计算2024-04-30 9:02:00到2024-04-30 11:32:00之间以1分钟进行分割,对每个时间段hdsys_cpu_0平均值进行计算,同时hdsys_mem_0需要大于49。

hd_AdvCalcExpDat

通过计算表达式多段时间的历史值返回多个个值

语法:

szExpression 表达式

szStartTime 开始时间

szEndTime 结束时间

szInterval 计算间隔

szMode 统计计算模式

szCalcBasis 计算基准

szSampleMode 采样模式

szSampleFrequency 采样频率

nMinPctGood 信任度

CFactor 系数

nOutcode 返回格式

表达式目前只支持加减乘除操作

统计计算模式:

total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted)

 

目前count统计计算有问题不能使用

计算基准:

time-weighted 基于时间

event-weighted 基于条数

示例:

=hd_AdvCalcExpDat("'hdsys_cpu_0' + 'hdsys_mem_0'","2024-04-30 9:02:00","2024-04-30 9:12:00", "average","time-weighted","compressed","",80,1,1)

 

统计计算2024-04-30 9:02:00到2024-04-30 09:12:00之间'hdsys_cpu_0' + 'hdsys_mem_0'的原始值平均值。

hd_AdvCalcExpFilDat

通过计算表达式多段时间的历史值并过滤后返回多个值

语法:

szExpression 表达式

szStartTime 开始时间

szEndTime 结束时间

szInterval 计算间隔

szFilterExpression 过滤表达式

szMode 统计计算模式

szCalcBasis 计算基准

szSampleMode 采样模式

szSampleFrequency 采样频率

nMinPctGood 信任度

CFactor 系数

nOutcode 返回格式

表达式目前只支持加减乘除操作

统计计算模式:

total, minimum, maximum, stdev, range, count, average (time-weighted), average (event-weighted)

 

目前count统计计算有问题不能使用,有时过滤表达式计算结果有问题

计算基准:

time-weighted 基于时间

event-weighted 基于条数

示例:

=hd_AdvCalcExpFilDat("'hdsys_cpu_0' + 'hdsys_mem_0'","2024-04-30 9:02:00","2024-04-30 10:02:00", "1m","'hdsys_mem_0' > 49","average","time-weighted","interpolated","30s",80,1,3)

 

统计计算2024-04-30 9:02:00到2024-04-30 10:02:00之间以1分钟进行分割,对每个时间段'hdsys_cpu_0' + 'hdsys_mem_0'插值的平均值进行计算,同时hdsys_mem_0需要满足大于49。

hd_ExpDat

计算表达式一段时间插值的计算结果

语法:

szStr 表达式

szStartTime 开始时间

szEndTime 结束时间

szIntVal 时间间隔

nOutMode 返回格式


示例:

=hd_ExpDat("'hdsys_netin_0'>3","2024-05-06 00:00:00.000","2024-05-07 00:00:00.000","1h",1)

 

从昨天0点到今天0点每间隔一个小时,当hdsys_netin_0的值大于2时,返回值,否则返回"not match"

hd_TimeExpDat

计算在一个时间点表达式的计算结果

语法:

szStr 表达式

szTimestamp 时间点


示例:

=hd_TimeExpDat("'hdsys_netin_0'>2","2024-05-06 15:08:45.950")

 

在"2024-05-06 15:08:45.950"时间点,当hdsys_netin_0的值大于2时,返回值,否则返回"not match"

hd_CompFilDat

返回某个时间段符合过滤条件的历史记录

语法:

szTagName  点名

szStartTime  开始时间

szEndTime  结束时间

szFilterExpression  过滤表达式

nFilterCode  是否标记过滤的值

nOutCode  返回值排列模式

szRootPath  数据所在服务器名

szMode  边界值处理模式

边界值处理模式详情:

auto / interpolated:获取开始时间和结束时间点的两个插值;

inside:获取开始时间到结束时间内的所有历史值(左开右闭);

outside:获取开始时间到结束时间内的所有历史值,并分别获取边界值左边和右边时间最近的一个历史值。

过滤表达式:

比如'test1>10',意思是先从开始时间到结束时间获取到test1点数值大于10的所有时间区间,再返回这些时间区间内szTagName点的所有历史值。

示例:

=hd_CompFilDat("hdsys_cpu_0","2024-05-06 15:00:00","2024-05-06 15:30:00","",1,3,"","inside")

 

在"2024-05-06 15:00:00"到"2024-05-06 15:30:00"时间段内,hdsys_cpu_0所有的历史值

hd_NCompFilDat

返回从某个时间点开始一定条数的历史记录

语法:

szTagName  点名

szStartTime  开始时间

nNumVals  查询条数

szFilterExpression  过滤表达式

nFilterCode  是否标记过滤的值

nOutCode  返回值排列模式

szRootPath  数据所在服务器名

szMode  边界值处理模式

边界值处理模式详情:

inside:获取开始时间往后的n条历史值(闭区间);

outside:获取开始时间之前的一条历史值,再获取开始时间往后的n-1条历史值(闭区间)。

过滤表达式:

比如'test1>10',意思是先从开始时间到结束时间获取到test1点数值大于10的所有时间区间,再返回这些时间区间内szTagName点的n条历史值。

示例:

=hd_NCompFilDat("hdsys_cpu_0","2024-05-08 13:00:00",10,"",1,1,"","inside")

 

从"2024-05-08 13:00:00"开始往后,hdsys_cpu_0的10条历史值

hd_SampFilDat

返回经过过滤的一段时间的插值

语法:

szTagName  点名

szStartTime  开始时间

szEndTime  查询条数

szInterVal  插值间隔

szFilterExpression  过滤表达式

nFilterCode  是否标记过滤的值

nOutCode 返回值排列模式

szRootPath  数据所在服务器名


示例:

=hd_SampFilDat("sinusoid","y","t","3h","",1,1,"")

 

sinusoid点昨天0点到今天0点每三小时的插值