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


окно

Контейнеризируйте строки в одно или несколько периодов времени с указанием метки времени, указывающей столбец. Запуск окна включительно, но окончания окна являются эксклюзивными, например 12:05, будут находиться в окне [12:05,12:10) , но не в [12:00,12:05). Windows может поддерживать точность микросекунда. Windows в порядке месяцев не поддерживается.

Столбец времени должен иметь значение pyspark.sql.types.TimestampType.

Длительность предоставляется в виде строк, например "1 секунда", "1 день 12 часов", "2 минуты". Допустимые строки интервала: "неделя", "день", "час", "минута", "вторая", "миллисекунда", "микросекунды". slideDuration Если это не указано, окна будут переворачиваться.

StartTime — это смещение относительно 1970-01-01 00:00:00 UTC, с которыми следует запускать интервалы окна. Например, чтобы иметь почасовые падающие окна, начинающиеся за 15 минут за час, например 12:15-13:15, 13:15-14:15... укажите startTime как 15 minutes.

Выходной столбец будет структурой под названием "окно" по умолчанию с вложенными столбцами "start" и "end", где "start" и "end" будет иметь pyspark.sql.types.TimestampTypeзначение .

Для соответствующей функции Databricks SQL см window . выражение группировки.

Синтаксис

from pyspark.databricks.sql import functions as dbf

dbf.window(timeColumn=<timeColumn>, windowDuration=<windowDuration>, slideDuration=<slideDuration>, startTime=<startTime>)

Параметры

Параметр Тип Description
timeColumn pyspark.sql.Column или str Столбец или выражение, используемое в качестве метки времени для окна по времени. Столбец времени должен иметь значение TimestampType или TimestampNTZType.
windowDuration literal string Строка, указывающая ширину окна, например 10 minutes, 1 second. Проверьте org.apache.spark.unsafe.types.CalendarInterval допустимые идентификаторы длительности. Обратите внимание, что длительность является фиксированной продолжительностью времени и не зависит от времени в соответствии с календарем. Например, 1 day всегда означает 86 400 000 миллисекунда, а не день календаря.
slideDuration literal string, optional Каждое окно будет создано в slideDurationновом окне. Должно быть меньше или равно windowDuration. Проверьте org.apache.spark.unsafe.types.CalendarInterval допустимые идентификаторы длительности. Эта длительность также является абсолютной и не зависит от календаря.
startTime literal string, optional Смещение относительно 1970-01-01 00:00:00 UTC, с которыми следует запускать интервалы окна. Например, чтобы иметь почасовые падающие окна, начинающиеся за 15 минут за час, например 12:15-13:15, 13:15-14:15... укажите startTime как 15 minutes.

Возвраты

pyspark.sql.Column: столбец для вычисляемых результатов.

Примеры

import datetime
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(datetime.datetime(2016, 3, 11, 9, 0, 7), 1)], ['dt', 'v'])
df2 = df.groupBy(dbf.window('dt', '5 seconds')).agg(dbf.sum('v'))
df2.show(truncate=False)
df2.printSchema()