本函数用于计算两列数值型数据的总体协方差。
函数名: COV
输入序列: 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。
输出序列: 输出单个序列,类型为 DOUBLE。序列仅包含一个时间戳为 0、值为总体协方差的数据点。
提示:
NaN,该行数据将会被忽略;NaN。输入序列:
+-----------------------------+---------------+---------------+ | Time|root.test.d2.s1|root.test.d2.s2| +-----------------------------+---------------+---------------+ |2020-01-01T00:00:02.000+08:00| 100.0| 101.0| |2020-01-01T00:00:03.000+08:00| 101.0| null| |2020-01-01T00:00:04.000+08:00| 102.0| 101.0| |2020-01-01T00:00:06.000+08:00| 104.0| 102.0| |2020-01-01T00:00:08.000+08:00| 126.0| 102.0| |2020-01-01T00:00:10.000+08:00| 108.0| 103.0| |2020-01-01T00:00:12.000+08:00| null| 103.0| |2020-01-01T00:00:14.000+08:00| 112.0| 104.0| |2020-01-01T00:00:15.000+08:00| 113.0| null| |2020-01-01T00:00:16.000+08:00| 114.0| 104.0| |2020-01-01T00:00:18.000+08:00| 116.0| 105.0| |2020-01-01T00:00:20.000+08:00| 118.0| 105.0| |2020-01-01T00:00:22.000+08:00| 100.0| 106.0| |2020-01-01T00:00:26.000+08:00| 124.0| 108.0| |2020-01-01T00:00:28.000+08:00| 126.0| 108.0| |2020-01-01T00:00:30.000+08:00| NaN| 108.0| +-----------------------------+---------------+---------------+
用于查询的 SQL 语句:
select cov(s1,s2) from root.test.d2
输出序列:
+-----------------------------+-------------------------------------+ | Time|cov(root.test.d2.s1, root.test.d2.s2)| +-----------------------------+-------------------------------------+ |1970-01-01T08:00:00.000+08:00| 12.291666666666666| +-----------------------------+-------------------------------------+
本函数用于计算两列数值型数据的 DTW 距离。
函数名: DTW
输入序列: 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。
输出序列: 输出单个序列,类型为 DOUBLE。序列仅包含一个时间戳为 0、值为两个时间序列的 DTW 距离值。
提示:
NaN,该行数据将会被忽略;输入序列:
+-----------------------------+---------------+---------------+ | Time|root.test.d2.s1|root.test.d2.s2| +-----------------------------+---------------+---------------+ |1970-01-01T08:00:00.001+08:00| 1.0| 2.0| |1970-01-01T08:00:00.002+08:00| 1.0| 2.0| |1970-01-01T08:00:00.003+08:00| 1.0| 2.0| |1970-01-01T08:00:00.004+08:00| 1.0| 2.0| |1970-01-01T08:00:00.005+08:00| 1.0| 2.0| |1970-01-01T08:00:00.006+08:00| 1.0| 2.0| |1970-01-01T08:00:00.007+08:00| 1.0| 2.0| |1970-01-01T08:00:00.008+08:00| 1.0| 2.0| |1970-01-01T08:00:00.009+08:00| 1.0| 2.0| |1970-01-01T08:00:00.010+08:00| 1.0| 2.0| |1970-01-01T08:00:00.011+08:00| 1.0| 2.0| |1970-01-01T08:00:00.012+08:00| 1.0| 2.0| |1970-01-01T08:00:00.013+08:00| 1.0| 2.0| |1970-01-01T08:00:00.014+08:00| 1.0| 2.0| |1970-01-01T08:00:00.015+08:00| 1.0| 2.0| |1970-01-01T08:00:00.016+08:00| 1.0| 2.0| |1970-01-01T08:00:00.017+08:00| 1.0| 2.0| |1970-01-01T08:00:00.018+08:00| 1.0| 2.0| |1970-01-01T08:00:00.019+08:00| 1.0| 2.0| |1970-01-01T08:00:00.020+08:00| 1.0| 2.0| +-----------------------------+---------------+---------------+
用于查询的 SQL 语句:
select dtw(s1,s2) from root.test.d2
输出序列:
+-----------------------------+-------------------------------------+ | Time|dtw(root.test.d2.s1, root.test.d2.s2)| +-----------------------------+-------------------------------------+ |1970-01-01T08:00:00.000+08:00| 20.0| +-----------------------------+-------------------------------------+
本函数用于计算两列数值型数据的皮尔森相关系数。
函数名: PEARSON
输入序列: 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。
输出序列: 输出单个序列,类型为 DOUBLE。序列仅包含一个时间戳为 0、值为皮尔森相关系数的数据点。
提示:
NaN,该行数据将会被忽略;NaN。输入序列:
+-----------------------------+---------------+---------------+ | Time|root.test.d2.s1|root.test.d2.s2| +-----------------------------+---------------+---------------+ |2020-01-01T00:00:02.000+08:00| 100.0| 101.0| |2020-01-01T00:00:03.000+08:00| 101.0| null| |2020-01-01T00:00:04.000+08:00| 102.0| 101.0| |2020-01-01T00:00:06.000+08:00| 104.0| 102.0| |2020-01-01T00:00:08.000+08:00| 126.0| 102.0| |2020-01-01T00:00:10.000+08:00| 108.0| 103.0| |2020-01-01T00:00:12.000+08:00| null| 103.0| |2020-01-01T00:00:14.000+08:00| 112.0| 104.0| |2020-01-01T00:00:15.000+08:00| 113.0| null| |2020-01-01T00:00:16.000+08:00| 114.0| 104.0| |2020-01-01T00:00:18.000+08:00| 116.0| 105.0| |2020-01-01T00:00:20.000+08:00| 118.0| 105.0| |2020-01-01T00:00:22.000+08:00| 100.0| 106.0| |2020-01-01T00:00:26.000+08:00| 124.0| 108.0| |2020-01-01T00:00:28.000+08:00| 126.0| 108.0| |2020-01-01T00:00:30.000+08:00| NaN| 108.0| +-----------------------------+---------------+---------------+
用于查询的 SQL 语句:
select pearson(s1,s2) from root.test.d2
输出序列:
+-----------------------------+-----------------------------------------+ | Time|pearson(root.test.d2.s1, root.test.d2.s2)| +-----------------------------+-----------------------------------------+ |1970-01-01T08:00:00.000+08:00| 0.5630881927754872| +-----------------------------+-----------------------------------------+
本函数用于寻找序列中所有对称度小于阈值的对称子序列。对称度通过 DTW 计算,值越小代表序列对称性越高。
函数名: PTNSYM
输入序列: 仅支持一个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。
参数:
window:对称子序列的长度,是一个正整数,默认值为 10。threshold:对称度阈值,是一个非负数,只有对称度小于等于该值的对称子序列才会被输出。在缺省情况下,所有的子序列都会被输出。输出序列: 输出单个序列,类型为 DOUBLE。序列中的每一个数据点对应于一个对称子序列,时间戳为子序列的起始时刻,值为对称度。
输入序列:
+-----------------------------+---------------+ | Time|root.test.d1.s4| +-----------------------------+---------------+ |2021-01-01T12:00:00.000+08:00| 1.0| |2021-01-01T12:00:01.000+08:00| 2.0| |2021-01-01T12:00:02.000+08:00| 3.0| |2021-01-01T12:00:03.000+08:00| 2.0| |2021-01-01T12:00:04.000+08:00| 1.0| |2021-01-01T12:00:05.000+08:00| 1.0| |2021-01-01T12:00:06.000+08:00| 1.0| |2021-01-01T12:00:07.000+08:00| 1.0| |2021-01-01T12:00:08.000+08:00| 2.0| |2021-01-01T12:00:09.000+08:00| 3.0| |2021-01-01T12:00:10.000+08:00| 2.0| |2021-01-01T12:00:11.000+08:00| 1.0| +-----------------------------+---------------+
用于查询的 SQL 语句:
select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1
输出序列:
+-----------------------------+------------------------------------------------------+ | Time|ptnsym(root.test.d1.s4, "window"="5", "threshold"="0")| +-----------------------------+------------------------------------------------------+ |2021-01-01T12:00:00.000+08:00| 0.0| |2021-01-01T12:00:07.000+08:00| 0.0| +-----------------------------+------------------------------------------------------+
本函数用于计算两条时间序列的互相关函数值, 对离散序列而言,互相关函数可以表示为 $$CR(n) = \frac{1}{N} \sum_{m=1}^N S_1[m]S_2[m+n]$$ 常用于表征两条序列在不同对齐条件下的相似度。
函数名: XCORR
输入序列: 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。
输出序列: 输出单个序列,类型为 DOUBLE。序列中共包含$2N-1$个数据点, 其中正中心的值为两条序列按照预先对齐的结果计算的互相关系数(即等于以上公式的$CR(0)$), 前半部分的值表示将后一条输入序列向前平移时计算的互相关系数, 直至两条序列没有重合的数据点(不包含完全分离时的结果$CR(-N)=0.0$), 后半部分类似。 用公式可表示为(所有序列的索引从1开始计数): $$OS[i] = CR(-N+i) = \frac{1}{N} \sum_{m=1}^{i} S_1[m]S_2[N-i+m],\ if\ i <= N$$ $$OS[i] = CR(i-N) = \frac{1}{N} \sum_{m=1}^{2N-i} S_1[i-N+m]S_2[m],\ if\ i > N$$
提示:
null 和NaN 值会被忽略,在计算中表现为 0。输入序列:
+-----------------------------+---------------+---------------+ | Time|root.test.d1.s1|root.test.d1.s2| +-----------------------------+---------------+---------------+ |2020-01-01T00:00:01.000+08:00| null| 6| |2020-01-01T00:00:02.000+08:00| 2| 7| |2020-01-01T00:00:03.000+08:00| 3| NaN| |2020-01-01T00:00:04.000+08:00| 4| 9| |2020-01-01T00:00:05.000+08:00| 5| 10| +-----------------------------+---------------+---------------+
用于查询的 SQL 语句:
select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05
输出序列:
+-----------------------------+---------------------------------------+ | Time|xcorr(root.test.d1.s1, root.test.d1.s2)| +-----------------------------+---------------------------------------+ |1970-01-01T08:00:00.001+08:00| 0.0| |1970-01-01T08:00:00.002+08:00| 4.0| |1970-01-01T08:00:00.003+08:00| 9.6| |1970-01-01T08:00:00.004+08:00| 13.4| |1970-01-01T08:00:00.005+08:00| 20.0| |1970-01-01T08:00:00.006+08:00| 15.6| |1970-01-01T08:00:00.007+08:00| 9.2| |1970-01-01T08:00:00.008+08:00| 11.8| |1970-01-01T08:00:00.009+08:00| 6.0| +-----------------------------+---------------------------------------+