Skip to content

sliding_window(timeColumn, windowDuration, slideDuration)

Описание

Функция sliding_window() создает скользящее окно для агрегации данных.

Параметры

  • timeColumn: Column - столбец с временными метками
  • windowDuration: str - длительность окна (например, "5 minutes", "1 hour", "1 day")
  • slideDuration: str - шаг скольжения (например, "1 minute", "15 minutes", "1 hour")

Возвращаемое значение

Column - метка времени начала окна

Пример использования

from pyspark.sql.functions import sliding_window, count, col
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("sliding_window_example").getOrCreate()

# Создаем DataFrame с временными метками
data = [
    ("2023-01-01 10:00:00", 1),
    ("2023-01-01 10:05:00", 2),
    ("2023-01-01 10:10:00", 3),
    ("2023-01-01 10:15:00", 4),
    ("2023-01-01 10:20:00", 5)
]
df = spark.createDataFrame(data, ["timestamp", "value"])

# Преобразуем строки в метки времени
df = df.withColumn("timestamp", col("timestamp").cast("timestamp"))

# Агрегируем данные по скользящим окнам
result = df.groupBy(
    sliding_window("timestamp", "10 minutes", "5 minutes")
).agg(
    count("value").alias("count")
)
result.show(truncate=False)

# Результат:
# +------------------------------------------+-----+
# |window                                    |count|
# +------------------------------------------+-----+
# |[2023-01-01 10:00:00, 2023-01-01 10:10:00]|2    |
# |[2023-01-01 10:05:00, 2023-01-01 10:15:00]|3    |
# |[2023-01-01 10:10:00, 2023-01-01 10:20:00]|3    |
# |[2023-01-01 10:15:00, 2023-01-01 10:25:00]|2    |
# |[2023-01-01 10:20:00, 2023-01-01 10:30:00]|1    |
# +------------------------------------------+-----+

Примечания

  • Окна могут перекрываться
  • Размер окна и шаг скольжения фиксированные
  • Полезно для:
  • Анализа трендов
  • Сглаживания данных
  • Выявления паттернов
  • Связанные функции:
  • tumbling_window() - фиксированное окно
  • window() - общее окно