序列发现

ConsecutiveSequences

函数简介

本函数用于在多维严格等间隔数据中发现局部最长连续子序列。

严格等间隔数据是指数据的时间间隔是严格相等的,允许存在数据缺失(包括行缺失和值缺失),但不允许存在数据冗余和时间戳偏移。

连续子序列是指严格按照标准时间间隔等距排布,不存在任何数据缺失的子序列。如果某个连续子序列不是任何连续子序列的真子序列,那么它是局部最长的。

函数名: CONSECUTIVESEQUENCES

输入序列: 支持多个输入序列,类型可以是任意的,但要满足严格等间隔的要求。

参数:

  • gap:标准时间间隔,是一个有单位的正数。目前支持五种单位,分别是’ms’(毫秒)、’s’(秒)、’m’(分钟)、’h’(小时)和’d’(天)。在缺省情况下,函数会利用众数估计标准时间间隔。

输出序列: 输出单个序列,类型为 INT32。输出序列中的每一个数据点对应一个局部最长连续子序列,时间戳为子序列的起始时刻,值为子序列包含的数据点个数。

提示: 对于不符合要求的输入,本函数不对输出做任何保证。

使用示例

手动指定标准时间间隔

本函数可以通过gap参数手动指定标准时间间隔。需要注意的是,错误的参数设置会导致输出产生严重错误。

输入序列:

  1. +-----------------------------+---------------+---------------+
  2. | Time|root.test.d1.s1|root.test.d1.s2|
  3. +-----------------------------+---------------+---------------+
  4. |2020-01-01T00:00:00.000+08:00| 1.0| 1.0|
  5. |2020-01-01T00:05:00.000+08:00| 1.0| 1.0|
  6. |2020-01-01T00:10:00.000+08:00| 1.0| 1.0|
  7. |2020-01-01T00:20:00.000+08:00| 1.0| 1.0|
  8. |2020-01-01T00:25:00.000+08:00| 1.0| 1.0|
  9. |2020-01-01T00:30:00.000+08:00| 1.0| 1.0|
  10. |2020-01-01T00:35:00.000+08:00| 1.0| 1.0|
  11. |2020-01-01T00:40:00.000+08:00| 1.0| null|
  12. |2020-01-01T00:45:00.000+08:00| 1.0| 1.0|
  13. |2020-01-01T00:50:00.000+08:00| 1.0| 1.0|
  14. +-----------------------------+---------------+---------------+

用于查询的SQL语句:

  1. select consecutivesequences(s1,s2,'gap'='5m') from root.test.d1

输出序列:

  1. +-----------------------------+------------------------------------------------------------------+
  2. | Time|consecutivesequences(root.test.d1.s1, root.test.d1.s2, "gap"="5m")|
  3. +-----------------------------+------------------------------------------------------------------+
  4. |2020-01-01T00:00:00.000+08:00| 3|
  5. |2020-01-01T00:20:00.000+08:00| 4|
  6. |2020-01-01T00:45:00.000+08:00| 2|
  7. +-----------------------------+------------------------------------------------------------------+
自动估计标准时间间隔

gap参数缺省时,本函数可以利用众数估计标准时间间隔,得到同样的结果。因此,这种用法更受推荐。

输入序列同上,用于查询的SQL语句如下:

  1. select consecutivesequences(s1,s2) from root.test.d1

输出序列:

  1. +-----------------------------+------------------------------------------------------+
  2. | Time|consecutivesequences(root.test.d1.s1, root.test.d1.s2)|
  3. +-----------------------------+------------------------------------------------------+
  4. |2020-01-01T00:00:00.000+08:00| 3|
  5. |2020-01-01T00:20:00.000+08:00| 4|
  6. |2020-01-01T00:45:00.000+08:00| 2|
  7. +-----------------------------+------------------------------------------------------+

ConsecutiveWindows

函数简介

本函数用于在多维严格等间隔数据中发现指定长度的连续窗口。

严格等间隔数据是指数据的时间间隔是严格相等的,允许存在数据缺失(包括行缺失和值缺失),但不允许存在数据冗余和时间戳偏移。

连续窗口是指严格按照标准时间间隔等距排布,不存在任何数据缺失的子序列。

函数名: CONSECUTIVEWINDOWS

输入序列: 支持多个输入序列,类型可以是任意的,但要满足严格等间隔的要求。

参数:

  • gap:标准时间间隔,是一个有单位的正数。目前支持五种单位,分别是 ‘ms’(毫秒)、’s’(秒)、’m’(分钟)、’h’(小时)和’d’(天)。在缺省情况下,函数会利用众数估计标准时间间隔。
  • length:序列长度,是一个有单位的正数。目前支持五种单位,分别是 ‘ms’(毫秒)、’s’(秒)、’m’(分钟)、’h’(小时)和’d’(天)。该参数不允许缺省。

输出序列: 输出单个序列,类型为 INT32。输出序列中的每一个数据点对应一个指定长度连续子序列,时间戳为子序列的起始时刻,值为子序列包含的数据点个数。

提示: 对于不符合要求的输入,本函数不对输出做任何保证。

使用示例

输入序列:

  1. +-----------------------------+---------------+---------------+
  2. | Time|root.test.d1.s1|root.test.d1.s2|
  3. +-----------------------------+---------------+---------------+
  4. |2020-01-01T00:00:00.000+08:00| 1.0| 1.0|
  5. |2020-01-01T00:05:00.000+08:00| 1.0| 1.0|
  6. |2020-01-01T00:10:00.000+08:00| 1.0| 1.0|
  7. |2020-01-01T00:20:00.000+08:00| 1.0| 1.0|
  8. |2020-01-01T00:25:00.000+08:00| 1.0| 1.0|
  9. |2020-01-01T00:30:00.000+08:00| 1.0| 1.0|
  10. |2020-01-01T00:35:00.000+08:00| 1.0| 1.0|
  11. |2020-01-01T00:40:00.000+08:00| 1.0| null|
  12. |2020-01-01T00:45:00.000+08:00| 1.0| 1.0|
  13. |2020-01-01T00:50:00.000+08:00| 1.0| 1.0|
  14. +-----------------------------+---------------+---------------+

用于查询的SQL语句:

  1. select consecutivewindows(s1,s2,'length'='10m') from root.test.d1

输出序列:

  1. +-----------------------------+--------------------------------------------------------------------+
  2. | Time|consecutivewindows(root.test.d1.s1, root.test.d1.s2, "length"="10m")|
  3. +-----------------------------+--------------------------------------------------------------------+
  4. |2020-01-01T00:00:00.000+08:00| 3|
  5. |2020-01-01T00:20:00.000+08:00| 3|
  6. |2020-01-01T00:25:00.000+08:00| 3|
  7. +-----------------------------+--------------------------------------------------------------------+