series_dbl_exp_smoothing_fl()

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

对序列应用双指数平滑滤波器。

函数 series_dbl_exp_smoothing_fl() 是一个用户定义的函数 (UDF),它接受一个包含动态数值数组的表达式作为输入,并应用二次指数平滑滤波器。 当序列中存在趋势时,此函数优于 series_exp_smoothing_fl() 函数,后者会实现基本指数平滑滤波器。

语法

series_dbl_exp_smoothing_fl(y_series [, alpha [, beta ]])

详细了解语法约定

参数

客户 类型​​ 必需 说明
y_series dynamic ✔️ 数值的数组。
alpha real 范围 [0-1] 中的一个值,指定最后一个点相对于之前的点的权重(即 1 - alpha)。 默认值为 0.5。
beta real 范围 [0-1] 中的一个值,指定最后一个斜率相对于之前的斜率的权重(即 1 - beta)。 默认值为 0.5。

函数定义

可以通过将函数的代码嵌入为查询定义的函数,或将其创建为数据库中的存储函数来定义函数,如下所示:

使用以下 let 语句定义函数。 不需要任何权限。

重要

let 语句不能独立运行。 它必须后跟一个表格表达式语句。 若要运行 series_dbl_exp_smoothing_fl() 的工作示例,请参阅示例

let series_dbl_exp_smoothing_fl = (y_series:dynamic, alpha:double=0.5, beta:double=0.5)
{
    series_iir(y_series, pack_array(alpha, alpha*(beta-1)), pack_array(1, alpha*(1+beta)-2, 1-alpha))
};
// Write your query to use the function here.

示例

若要使用查询定义的函数,请在嵌入的函数定义后调用它。

let series_dbl_exp_smoothing_fl = (y_series:dynamic, alpha:double=0.5, beta:double=0.5)
{
    series_iir(y_series, pack_array(alpha, alpha*(beta-1)), pack_array(1, alpha*(1+beta)-2, 1-alpha))
};
range x from 1 to 50 step 1
| extend y = x + rand()*10
| summarize x = make_list(x), y = make_list(y)
| extend dbl_exp_smooth_y = series_dbl_exp_smoothing_fl(y, 0.2, 0.4) 
| render linechart

输出

此图显示人工序列的双指数平滑。