其中,ts 代表待查询的时间序列,flag 为标志位,可以设置为 0 或 1 两个值。0 为缺省值,无论第一个元素是否为空,都会返回该元素的时间戳记。如设置为 1则返回第一个(最后一个)非空的元素。
返回值为时间系列中的时间戳记,其值为 DATETIME YEAR TO FRACTION(5)。如下所示为用法示例
输出结果如下所示
即返回了电表号为 1 的电表的第一个元素和最后一个元素的时间戳记。
TSContainerLock
TSContainerLock 过程控制是否多个会话可以同时写入一个容器。其函数原型如下所示
其中,ts 代表待查询的时间序列,flag 为标志位,可以设置为 0 或 1 两个值。缺省情况下,多个会话可以同时写入一个容器。通过将flag参数设置为1,可以阻止多个会话写入一个容器。在单个会话写入一个容器并且 flags 参数设置为 1 时,数据装入速度会更快。如果应用程序强制一次一个会话写入一个容器,可以将flags 参数设置为 1 以提高性能。如下图所示:
该语句将会锁住相应的容器,可以将写入容器 ctn_sm0 的会话的数量限制为 1。
12.1版本中提出了滚动窗口容器的概念。现在可以通过指定何时删除过时数据来控制容器中存储的时间系列数据量。创建一个滚动窗口容器,其中包含存储在多个空间中的多个分区。配置一个滚动窗口容器来定义每个分区的时间间隔,以及允许的分区数;例如,12个分区,其中每个分区存储一个月的数据。为新月份插入数据时,将创建新分区,如果分区数超过了活动窗口允许的最大值,那么最旧的分区将变为休眠分区。可以指定何时销毁休眠分区。在之前的版本中,由于不存在滚动窗口的概念,必须手动删除过时的数据。
要创建滚动窗口容器,需要在运行 TSContainerCreate函数时指定分区的大小。指定活动和休眠窗口的最大大小。启用旧分区的自动删除。指定用于存储分区的多个空间。该函数的函数原型如下所示:
其中,window_origin为允许用于滚动窗口容器的第一个时间戳记。如果时间系列的原点早于容器的原点,滚动窗口容器会拒绝时间系列值。window_interval为每个分区中存储其数据的时间范围。缺省情况下,窗口时间间隔为一个月,这意味着每个窗口分区包含一个日历月的数据。active_windowsize为活动窗口中的最大分区数,其中,0为缺省值,表示无大小限制。而一个正整数表示活动窗口中的最大分区数。dormant_windowsize为休眠窗口中的最大分区数。如下所示为创建一个滚动窗口容器,其中活动窗口和休眠窗口均最多包含3 个分区。
要更改滚动窗口容器的属性或布局,可以使用 TSContainerManage函数。可以更改窗口大小,附加或分离分区,销毁分区,更改分区是否自动销毁,以及更改分区的扩展数据块大小。该函数的函数原型如下所示:
下面以实际例子介绍如何创建和管理滚动窗口容器:
创建滚动窗口容器并插入示例数据
以下示例创建滚动窗口容器并插入示例数据:
在上例中,将创建名为 readings_container_test 的滚动窗口容器,该容器位于 rootdbs 上,存储的时间序列数据的类型为meter_row_type_test,容器的原点为 2010-01-01 00:00:00.00000。活动窗口大小和休眠窗口大小均为 2,且无法再放入休眠窗口中的分区不能自动销毁。
分离分区
以下示例将分区从活动窗口移至休眠窗口:
在上例中,将把 2010-01-15 和 2010-01-16 的数据分离到休眠窗口,此时活动窗口中不再有数据。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31715-3.html
咬了伊拉克还理直气壮的威胁不让人家找帮手打狗
打
吴亦凡