series_moving_var_fl()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Aplica um filtro de variação móvel em uma série.
A função series_moving_var_fl()
é uma função definida pelo usuário (UDF) que recebe uma expressão contendo uma matriz numérica dinâmica como entrada e aplica nela um filtro de variância móvel.
Sintaxe
series_moving_var_fl(
,
y_series n [,
centro ])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
y_series | dynamic |
✔️ | Uma célula de matriz de valores numéricos. |
n | int |
✔️ | A largura do filtro de variação móvel. |
centro | bool |
Indica se a variação móvel é aplicada simetricamente em uma janela antes e depois do ponto atual ou aplicada em uma janela do ponto atual para trás. Por padrão, center é false . |
Definição de função
Você pode definir a função inserindo seu código como uma função definida por consulta ou criando-a como uma função armazenada em seu banco de dados, da seguinte maneira:
Defina a função usando a instrução let a seguir. Nenhuma permissão é necessária.
Importante
Uma instrução let não pode ser executada sozinha. Ele deve ser seguido por uma instrução de expressão tabular. Para executar um exemplo funcional de series_moving_var_fl()
, consulte Exemplo.
let series_moving_var_fl = (y_series:dynamic, n:int, center:bool=false)
{
let ey = series_fir(y_series, repeat(1, n), true, center);
let e2y = series_multiply(ey, ey);
let y2 = series_multiply(y_series, y_series);
let ey2 = series_fir(y2, repeat(1, n), true, center);
let var_series = series_subtract(ey2, e2y);
var_series
};
// Write your query to use the function here.
Exemplo
O exemplo a seguir usa o operador invoke para executar a função.
Para usar uma função definida por consulta, invoque-a após a definição da função inserida.
let series_moving_var_fl = (y_series:dynamic, n:int, center:bool=false)
{
let ey = series_fir(y_series, repeat(1, n), true, center);
let e2y = series_multiply(ey, ey);
let y2 = series_multiply(y_series, y_series);
let ey2 = series_fir(y2, repeat(1, n), true, center);
let var_series = series_subtract(ey2, e2y);
var_series
}
;
let sinewave=(x:double, period:double, gain:double=1.0, phase:double=0.0)
{
gain*sin(2*pi()/period*(x+phase))
}
;
let n=128;
let T=10;
let window=T*2;
union
(range x from 0 to n-1 step 1 | extend y=sinewave(x, T)),
(range x from n to 2*n-1 step 1 | extend y=0.0),
(range x from 2*n to 3*n-1 step 1 | extend y=sinewave(x, T)),
(range x from 3*n to 4*n-1 step 1 | extend y=(x-3.0*n)/128.0),
(range x from 4*n to 5*n-1 step 1 | extend y=sinewave(x, T))
| order by x asc
| summarize x=make_list(x), y=make_list(y)
| extend y_var=series_moving_var_fl(y, T, true)
| render linechart
Saída