预测函数

更新时间:

本文档主要介绍了预测函数(Predictors)的语法结构、语法说明以及使用示例。

HOLT_WINTERS()

使用Holt-Winters的季节性方法返回N个预测的field value。

HOLT_WINTERS()可用于:

  • 预测时间什么时候会超过给定的阈值。

  • 将预测值与实际值进行比较,检测数据中的异常。

语法

SELECT HOLT_WINTERS[_WITH-FIT](<function>(<field_key>),<N>,<S>)[INTO_clause] FROM_clause [WHERE_clause] GROUP_BY_clause [ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]

语法描述

HOLT_WINTERS(function(field_key),N,S)返回field key对应的N个季节性调整的预测field value。

N个预测值出现的时间间隔跟group by time时间间隔相同。如果您的GROUP BY time()时间间隔是6m并且N等于3,那么您将会得到3个时间间隔为6分钟的预测值。

S是一个季节性模式参数,并且根据GROUP BY time()时间间隔限定一个季节性模式的长度。如果您的GROUP BY time()时间间隔是2m并且S等于3,那么这个季节性模式每六分钟出现一次,也就是每三个数据点。如果您不希望季节性调整您的预测值,请将S设置为01

HOLT_WINTERS_WITH_FIT(function(field_key),N,S)除了返回field key对应的N个季节性调整的预测field value,还返回拟合值。

HOLT_WINTERS()HOLT_WINTERS_WITH_FIT()处理以相同的时间间隔出现的数据;嵌套的InfluxQL函数和GROUP BY time()子句确保Holt-Winters函数能够对常规数据进行操作。

HOLT_WINTERS()HOLT_WINTERS_WITH_FIT()支持数据类型为int64和float64的field value。

示例:预测指定field key的field value

原始数据示例一使用了Chronograf来可视化数据。该示例重点关注NOAA_water_database数据集的如下数据:

SELECT "water_level" FROM "NOAA_water_database"."autogen"."h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-22 22:12:00' AND time <='2015-08-28 03:00:00'

p259159步骤一:匹配原始数据的趋势编写一个GROUP BY time()查询,使得它匹配原始water_level数据的总体趋势。这里,我们使用了FIRST()函数:

SELECT FIRST("water_level") FROM "NOAA_water_database"."autogen"."h2o_feet" WHERE "location"='santa_monica'and time >='2015-08-22 22:12:00'and time <='2015-08-28 03:00:00' GROUP BY time(379m,348m)

GROUP BY time()子句中,第一个参数(379m)匹配water_level数据中每个波峰和波谷之间发生的时间长度,第二个参数(348m)是一个偏移间隔,它通过改变TSDB For InfluxDB®的默认GROUP BY time()边界来匹配原始数据的时间范围。

蓝线显示了查询结果:222步骤二:确定季节性模式使用步骤一中查询的信息确定数据中的季节性模式。

关注下图中的蓝线,water_level数据中的模式大约每25小时15分钟重复一次。每个季节有四个数据点,所以4是季节性模式参数。hw-second-step-1-2步骤三:应用HOLT_WINTERS()函数在查询中加入Holt-Winters函数。这里,我们使用HOLT_WINTERS_WITH_FIT()来查看拟合值和预测值:

SELECT HOLT_WINTERS_WITH_FIT(FIRST("water_level"),10,4) FROM "NOAA_water_database"."autogen"."h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-22 22:12:00' AND time <='2015-08-28 03:00:00' GROUP BY time(379m,348m)

HOLT_WINTERS_WITH_FIT()函数中,第一个参数(10)请求10个预测的field value。每个预测的数据点相距379m,与GROUP BY time()子句中的第一个参数相同。HOLT_WINTERS_WITH_FIT()函数中的第二个参数(4)是我们在上一步骤中确定的季节性模式。

蓝线显示了查询结果:hw-third-step-1-2

HOLT_WINTERS()的常见问题

问题一:HOLT_WINTERS()和收到的数据点少于”N”个

在某些情况下,用户可能会收到比参数N请求的更少的预测数据点。当数学计算不稳定和不能预测更多数据点时,这种情况就会发生。这意味着该数据集不适合使用HOLT_WINTERS(),或者,季节性调整参数是无效的并且是算法混乱。