Поделиться через


series_fir()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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пик остается в исходном расположении.

Серий fir.

  • Чтобы вычислить разницу между точкой и предыдущей, задайте фильтр=[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

Серия fir 2.