series_periods_detect()
Область применения: ✅Microsoft Fabric✅✅
Находит наиболее значимые периоды в временных рядах.
Функция series_periods_detect() полезна для обнаружения периодических шаблонов данных, таких как ежедневные, еженедельные или ежемесячные циклы.
Синтаксис
series_periods_detect(
num_periods серии,
min_period max_period,
)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
серия | dynamic |
✔️ | Массив числовых значений, как правило, результирующий результат операторов make-series или make_list . |
min_period | real |
✔️ | Минимальная длина периода для поиска. |
max_period | real |
✔️ | Максимальная длина периода для поиска. |
num_periods | long |
✔️ | Максимальное количество возвращаемых периодов. Это число — длина выходных динамических массивов. |
Внимание
- Алгоритм может обнаруживать периоды, содержащие по крайней мере 4 точки и не более половины длины ряда.
- Задайте min_period немного ниже и max_period чуть выше периодов, которые вы ожидаете найти в временных рядах. Например, если у вас есть почасовой агрегированный сигнал, и вы ищете как ежедневные, так и еженедельные периоды (24 и 168 часов соответственно), можно задать min_period=0,8*24, max_period=1,2*168 и оставить 20% полей вокруг этих периодов.
- Входной временный ряд должен быть регулярным. То есть, агрегированный в константных ячейках, который всегда является случаем, если он был создан с помощью make-series. В противном случае выходные данные не имеют смысла.
Возвраты
Функция возвращает таблицу с двумя столбцами:
- периоды: динамический массив, содержащий периоды, найденные в единицах размера ячейки, упорядоченных по их оценкам.
- оценки: динамический массив, содержащий значения от 0 до 1. Каждый массив измеряет значение периода в соответствующей позиции в массиве периодов .
Пример
Следующий запрос внедряет моментальный снимок трафика приложения в течение одного месяца. Объем трафика агрегируется дважды в день, то есть размер ячейки составляет 12 часов. Запрос создает линейчатую диаграмму, четко показывающую шаблон в данных.
print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y
| render linechart
Вы можете запустить функцию series_periods_detect()
в той же серии, чтобы определить повторяющиеся шаблоны. Функция выполняет поиск шаблонов в указанном диапазоне периодов и возвращает два значения. Первое значение указывает на обнаруженный шаблон, длиной 14 точек с оценкой примерно 84. Другое значение равно нулю, указывающее, что не найден дополнительный шаблон.
print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y
| project series_periods_detect(y, 0.0, 50.0, 2)
Выходные данные
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14, 0] | [0.84, 0] |
Значение в series_periods_detect_y_periods_scores усечено.
Примечание.
В диаграмме также отображается ежедневный шаблон, но это не возвращается запросом, так как выборка слишком грубо (размер 12h bin). Ежедневный период 2 ячейки ниже минимального размера периода 4 пункта, необходимого алгоритмом.