series_fir()
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Применяет фильтр конечного импульсного отклика (FIR) для ряда.
Функция принимает выражение, содержащее динамический числовый массив в качестве входных данных, и применяет фильтр конечного импульсного отклика . Задав filter
коэффициенты, его можно использовать для вычисления скользящей средней, сглаживания, обнаружения изменений и многих других вариантов использования. Функция принимает столбец, содержащий динамический массив и статический динамический массив коэффициентов фильтра в качестве входных данных, и применяет фильтр к столбцу. Она выводит новый столбец динамического массива, содержащий отфильтрованные результаты.
Синтаксис
series_fir(
фильтр рядов,
[ ,
нормализация[,
центр]])
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
серия | dynamic |
✔️ | Массив числовых значений. |
filter | dynamic |
✔️ | Массив числовых значений, содержащий коэффициенты фильтра. |
normalize | bool |
Указывает, следует ли нормализовать фильтр. То есть, разделенный на сумму коэффициентов. Если фильтр содержит отрицательные значения, то нормализованное значение должно быть указано какfalse , в противном случае результат будет.null Если значение не указано, предполагается значение true по умолчанию в зависимости от наличия отрицательных значений в фильтре. Если фильтр содержит хотя бы одно отрицательное значение, то предполагается, что нормализуетсяfalse . |
|
центр | bool |
Указывает, применяется ли фильтр симметрично в период времени до и после текущей точки или в период времени с текущей точки назад. По умолчанию центр соответствует false сценарию потоковой передачи данных, чтобы мы могли применять фильтр только к текущим и старым точкам. Однако для нерегламентированной обработки его можно задать true , сохраняя его синхронизацию с временными рядами. См. приведенные ниже примеры. Этот параметр управляет задержкой группы фильтра. |
Совет
Нормализация — это удобный способ убедиться, что сумма коэффициентов составляет 1. Если нормализованоtrue
, фильтр не усиливает или затеняет ряд. Например, скользящее среднее из четырех ячеек может быть указано фильтром=[1,1,1,1], и нормализовано=true
, что проще, чем вводить [0,25,0,25.0,25,25,0,25].
Возвраты
Новый столбец динамического массива, содержащий отфильтрованные выходные данные.
Примеры
- Вычислите скользящее среднее из пяти точек, задав фильтр=[1,1,1,1] и нормализуйте=
true
(по умолчанию). Обратите внимание на эффект центра=false
(по умолчанию) и :true
range t from bin(now(), 1h) - 23h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project
id='TS',
val=dynamic([0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 40, 100, 40, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0]),
t
| extend
5h_MovingAvg=series_fir(val, dynamic([1, 1, 1, 1, 1])),
5h_MovingAvg_centered=series_fir(val, dynamic([1, 1, 1, 1, 1]), true, true)
| render timechart
Этот запрос возвращает:
5h_MovingAvg: пять точек скользящего среднего фильтра. Пик сглажен и его вершина смещена на (5 – 1)/2 = 2 ч.
5h_MovingAvg_centered: То же самое, но при задании center=true
пик остается в исходном расположении.
- Чтобы вычислить разницу между точкой и предыдущей, задайте фильтр=[1,-1].
range t from bin(now(), 1h) - 11h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project id='TS', t, value=dynamic([0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3])
| extend diff=series_fir(value, dynamic([1, -1]), false, false)
| render timechart