Delen via


venster

Bucketize rijen in één of meer tijdvensters op basis van een kolom die een tijdstempel specificeert. Het begin van het venster is inclusief, maar de venstereinden zijn exclusief, bijvoorbeeld 12:05 uur in het venster [12:05,12:10) , maar niet in [12:00,12:05). Windows kan microsecondenprecisie ondersteunen. Windows in de volgorde van maanden wordt niet ondersteund.

De tijdkolom moet van pyspark.sql.types.TimestampType.

De duur wordt opgegeven als tekenreeksen, bijvoorbeeld '1 seconde', '1 dag 12 uur', '2 minuten'. Geldige intervaltekenreeksen zijn 'week', 'dag', 'uur', 'minuut', 'seconde', 'milliseconden', 'microseconden'. Als het slideDuration niet is opgegeven, zijn de vensters tumblingvensters.

De startTime is de offset met betrekking tot 1970-01-01 00:00:00 UTC waarmee intervallen van het venster moeten worden gestart. Als u bijvoorbeeld elk uur tumblingvensters wilt hebben die 15 minuten voorbij het uur beginnen, bijvoorbeeld 12:15-13:15, 13:15-14:15... bieden startTime als 15 minutes.

De uitvoerkolom is standaard een struct genaamd 'window' met de geneste kolommen 'start' en 'end', waarbij 'start' en 'end' van zijn pyspark.sql.types.TimestampType.

Zie de groeperingsexpressie voor de bijbehorende Databricks SQL-functiewindow.

Syntaxis

from pyspark.databricks.sql import functions as dbf

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

Parameterwaarden

Kenmerk Typologie Description
timeColumn pyspark.sql.Column of str De kolom of de expressie die moet worden gebruikt als tijdstempel voor vensters op tijd. De tijdkolom moet van TimestampType of TimestampNTZType zijn.
windowDuration literal string Een tekenreeks die de breedte van het venster aangeeft, bijvoorbeeld 10 minutes. 1 second Controleer op org.apache.spark.unsafe.types.CalendarInterval geldige duur-id's. Houd er rekening mee dat de duur een vaste tijdsduur is en niet in de loop van de tijd varieert volgens een kalender. Betekent bijvoorbeeld 1 day altijd 86.400.000 milliseconden, niet een kalenderdag.
slideDuration literal string, optional Er wordt elke slideDurationdag een nieuw venster gegenereerd. Moet kleiner zijn dan of gelijk zijn aan de windowDuration. Controleer op org.apache.spark.unsafe.types.CalendarInterval geldige duur-id's. Deze duur is eveneens absoluut en verschilt niet afhankelijk van een kalender.
startTime literal string, optional De offset met betrekking tot 1970-01-01 00:00:00 UTC waarmee de tijdsintervallen van het venster moeten worden gestart. Als u bijvoorbeeld elk uur tumblingvensters wilt hebben die 15 minuten voorbij het uur beginnen, bijvoorbeeld 12:15-13:15, 13:15-14:15... bieden startTime als 15 minutes.

Retouren

pyspark.sql.Column: de kolom voor berekende resultaten.

Voorbeelden

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()