okno

Rozdělte řádky do jednoho nebo více časových oken zadaných časovým razítkem určujícím sloupec. Začátek okna je inkluzivní, ale konce okna jsou exkluzivní, například 12:05 bude v okně [12:05,12:10) , ale ne v [12:00,12:05). Systém Windows může podporovat přesnost mikrosekund. Windows v pořadí měsíců se nepodporují.

Časový sloupec musí být .pyspark.sql.types.TimestampType

Doba trvání se poskytuje jako řetězce, například 1 sekunda, 1 den 12 hodin, 2 minuty. Platné řetězce intervalů jsou "week", "day", 'hour', 'minute', 'second', 'milisekund', 'microsecond'. Pokud není slideDuration k dispozici, okna budou přeskakující okna.

Počáteční čas je posun vzhledem k 1970-01-01-01 00:00:00 UTC, se kterým se mají spustit intervaly. Například pokud chcete mít hodinové přeskakující okna, která začínají 15 minut po hodině, například 12:15-13:15, 13:15-14:15... poskytnout startTime jako 15 minutes.

Výstupní sloupec bude ve výchozím nastavení strukturou s názvem "window" s vnořenými sloupci "start" a "end", kde "start" a "end" bude mít pyspark.sql.types.TimestampTypehodnotu .

Odpovídající funkci SQL Databricks najdete v tématu window seskupování výrazů.

Syntaxe

from pyspark.sql import functions as dbf

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

Parametry

Parameter Typ Description
timeColumn pyspark.sql.Column nebo str Sloupec nebo výraz, které se mají použít jako časové razítko pro časové intervaly. Časový sloupec musí být TimestampType nebo TimestampNTZType.
windowDuration literal string Řetězec určující šířku okna, například 10 minutes, 1 second. Zkontrolujte org.apache.spark.unsafe.types.CalendarInterval platné identifikátory doby trvání. Všimněte si, že doba trvání je pevná doba a v průběhu času se v závislosti na kalendáři nijak neliší. Například 1 day vždy znamená 86 400 000 milisekund, nikoli kalendářní den.
slideDuration literal string, optional Každé okno se vygeneruje slideDuration. Musí být menší než nebo rovno hodnotě windowDuration. Zkontrolujte org.apache.spark.unsafe.types.CalendarInterval platné identifikátory doby trvání. Tato doba trvání je stejně absolutní a liší se v závislosti na kalendáři.
startTime literal string, optional Posun s ohledem na 1970-01-01 00:00:00 UTC, se kterým se mají spustit intervaly. Například pokud chcete mít hodinové přeskakující okna, která začínají 15 minut po hodině, například 12:15-13:15, 13:15-14:15... poskytnout startTime jako 15 minutes.

Návraty

pyspark.sql.Column: sloupec pro vypočítané výsledky.

Examples

import datetime
from pyspark.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()