数据预处理函数

为了方便对样本数据进行分析和处理,对数据进行平滑、滤波等预处理操作。

函数

说明

滑动平均函数

针对输入的时序曲线进行滤波,从而发现时序曲线形态。物联网设备数据采集的原始数据中,大都含有各种各样的噪声影响。通过滑动平均函数,采集相邻数据的信息,对数据曲线进行平滑,便于进行数据分析。

加权平均函数

针对输入的时序曲线进行滤波,从而发现时序曲线形态。物联网设备数据采集的原始数据中,大都含有各种各样的噪声影响。通过加权平均函数,采集相邻数据的信息并赋予不同的权重指标,对数据曲线进行平滑,便于进行数据分析。

滑动平均函数

  • 只支持华东2(上海)地域。

  • 滑动平均函数支持的最大数据量为5000万行。

  • 用于离线调度的滑动平均函数。

  • 针对输入的时序曲线进行滤波,从而发现时序曲线形态。物联网设备数据采集的原始数据中,大都含有各种各样的噪声影响。通过滑动平均函数,采集相邻数据的信息,对数据曲线进行平滑,便于进行数据分析。

函数格式

SELECT WEIGHTED_AVERAGE(num,windowSize)

输入参数

  • num:必选。double类型。数值列。

  • windowSize:必选。int类型。窗口大小,范围为1-20。

输出参数

output:double类型。第一个滑动窗口的末尾,从输入数值序列的第一个值开始。输出为(值1+ 值2 + … + 值n)/windowSize(不足windowSize则按窗口内数值的实际数量算)。

函数示例

  • 使用滑动平均函数。

    从表Values中选取num,b,c,d四列的值,并计算num列的滑动平均值,窗口长度为2。表Values的值是(1,1,1,1),(2,2,2,2),(3,3,3,3)

    SELECT MOVING_AVERAGE(num,2),b,c,d FROM Values (1,1,1,1),(2,2,2,2),(3,3,3,3) t(num,b,c,d);

    num列的数据分别是1、2、3。滑动窗口的末尾从1开始,因为第一个滑动窗口只有1,所以输出的平均值为1。窗口向后滑动,第二个滑动窗口内有数值1、2,所以输出(1+2)/2=1.5。窗口继续滑动,第三个滑动窗口内有数值2、3,所以输出(2+3)/2=2.5。

    _c0

    b

    c

    d

    1.0

    1

    1

    1

    1.5

    2

    2

    2

    2.5

    3

    3

    3

  • 指定滑动平均的计算顺序。

    如果需要指定滑动平均的计算顺序,可以使用ORDER BY和一个外部的列。本示例中,表Values的初始值是(3,3),(1,1),(2,2),在子语句中使用ORDER BY userTimestamp对表Values进行排序,排序后的表Values值是(1,1),(2,2),(3,3)。然后使用MOVING_AVERAGE函数,取第一列num的平均值。

    SELECT MOVING_AVERAGE(num,2),userTimestamp FROM 
    (SELECT * FROM Values (3,3),(1,1),(2,2) t(num,userTimestamp) ORDER BY userTimestamp);

    _c0

    userTimestamp

    1.0

    1

    1.5

    2

    2.5

    3

加权平均函数

  • 只支持华东2(上海)地域。

  • 加权平均函数支持的最大数据量为5000万行。

  • 用于离线调度的加权平均函数。

  • 针对输入的时序曲线进行滤波,从而发现时序曲线形态。物联网设备数据采集的原始数据中,大都含有各种各样的噪声影响。通过加权平均函数,采集相邻数据的信息并赋予不同的权重指标,对数据曲线进行平滑,便于进行数据分析。

函数格式

SELECT WEIGHTED_AVERAGE(num,weight,windowSize)

输入参数

  • num:必选。double类型。数值列。

  • weight:必选。double类型。权重列。

  • windowSize:必选。int类型。窗口大小,范围为1-20。

输出参数

output:double类型。第一个滑动窗口的末尾,从输入数值序列的第一个值开始。输出为(值1 × 权重1 + 值2 × 权重2 + … + 值n × 权重n)/(权重1 + 权重2 + … + 权重n)。如果窗口内数值的数量不足windowSize,则按数值的实际数量算。

函数示例

  • 使用加权平均函数。

    从表Values中选取num,weight,c,d四列的值,并计算num列的加权平均值,窗口长度为2。表Values的值是(1,1,1,1),(2,2,2,2),(3,3,3,3)

    SELECT WEIGHTED_AVERAGE(num,weight,2),c,d  FROM Values (1,1,1,1),(2,2,2,2),(3,3,3,3) t(num,weight,c,d);

    num列的数据分别是1、2、3,权重weight分别是1、2、3。滑动窗口末尾从1开始,因为第一个滑动窗口只有1,所以输出的平均值为(1x1)/1=1。窗口向后滑动一位,第二个滑动窗口内有数值1、2,所以输出(1x1+2x2)/3=5/3。窗口继续滑动一位,第三个滑动窗口内有数值(2x2+3x3)/5=2.6。

    _c0

    c

    d

    1.0

    1

    1

    1.6666666666666667

    2

    2

    2.6

    3

    3

  • 指定加权平均的计算顺序。

    如果需要指定加权平均的计算顺序,可以使用ORDER BY和一个外部的列。本示例中,表Values的初始值是(3,3,3),(1,1,1),(2,2,2),在子语句中使用ORDER BY userTimestamp对表Values进行排序,排序后的表Values值是(1,1,1),(2,2,2),(3,3,3)。然后使用WEIGHTED_AVERAGE函数,取第一列num的加权平均值。

    SELECT WEIGHTED_AVERAGE(num,weight,2),userTimestamp FROM 
    (SELECT * FROM Values (3,3,3),(1,1,1),(2,2,2) t(num,weight,userTimestamp) ORDER BY userTimestamp);

    _c1

    userTimestamp

    1.0

    1

    1.6666666666666667

    2

    2.6

    3