GetClosestElem 函数返回最接近给定时间戳记的第一个非空元素。还可以指定时间系列元素中的哪一列必须为非空以满足搜索条件。
语法
GetClosestElem(ts TimeSeries,
tstamp datetime year to fraction(5),
cmp lvarchar,
column_list lvarchar default NULL,
flags integer default 0)
returns ROW
- ts
- 要对其执行操作的时间系列。
- tstamp
- 开始搜索的时间戳记。
- cmp
- 用于确定开始搜索位置的与 tstamp 一起使用的比较运算符。cmp 的有效值包括:<、<=、>= 和 >。
- column_list
- 要搜索包含一个或多个非空列的元素,请指定以竖线 (|) 分隔的列名的列表。如果任何列名在时间系列类型中不存在,那么将出现错误。
要搜索空元素,请将 column_list 设置为 NULL。
- flags
- 确定是否应返回隐藏的元素。tseries.h 中定义了 flags 参数的有效值。它们包括:
- TS_CLOSEST_NO_FLAGS(无特殊标志)
- TS_CLOSEST_RETNULLS_FLAGS(返回隐藏的元素)
描述
搜索算法
ts_closest_elem 如下:
- 如果 cmp 是 <=、=、== 或 >= 中的任何一个,那么搜索在 tstamp 开始。
- 如果 cmp 是 <,那么搜索会从 tstamp 之前的第一个元素开始。
- 如果 cmp 是 >,那么搜索会从 tstamp 之后的第一个元素开始。
tstamp 和
cmp 参数用于确定搜索开始的位置。搜索以
cmp 指示的方向持续进行,直到找到符合条件的元素。如果没有符合条件的元素,那么返回值为
NULL。
重要: 对于不规则的时间系列,不规则元素中的值在下一个元素出现之前保持不变。这意味着对不规则时间系列进行的任何“equals” 运算都会先查找 <=。如果 cmp 为 >= 且 <= 运算失败,那么运算将向前查找下一个元素;否则将返回 NULL。
返回结果
满足所述条件的元素,即最接近给定时间戳记的非空元素。