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


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 пункта, необходимого алгоритмом.