session_window

Vygeneruje okno relace s časovým razítkem určujícím sloupec.

Okno relace je jedním z dynamických oken, což znamená, že délka okna se liší podle zadaných vstupů. Délka okna relace je definována jako "časové razítko posledního vstupu relace + doba trvání mezery", takže pokud jsou nové vstupy svázané s aktuálním oknem relace, lze koncový čas okna relace rozšířit podle nových vstupů.

Systém Windows může podporovat přesnost mikrosekund. Windows v pořadí měsíců se nepodporují.

U streamovacího dotazu můžete funkci current_timestamp použít k vygenerování oken v době zpracování. gapDuration 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'.

Může se jednat také o sloupec, který se dá vyhodnotit tak, aby se doba trvání dynamicky vyhodnocovala na základě vstupního řádku.

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

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

Syntaxe

from pyspark.sql import functions as dbf

dbf.session_window(timeColumn=<timeColumn>, gapDuration=<gapDuration>)

Parametry

Parameter Typ Description
timeColumn pyspark.sql.Column nebo str Název sloupce nebo sloupec, které se mají použít jako časové razítko pro časové intervaly. Časový sloupec musí být TimestampType nebo TimestampNTZType.
gapDuration pyspark.sql.Column nebo literal string Řetězcový literál pythonu nebo sloupec určující časový limit relace. Může to být statická hodnota, například 10 minutes, 1 secondnebo výraz/UDF, který určuje dobu trvání mezery dynamicky na základě vstupního řádku.

Návraty

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

Examples

from pyspark.sql import functions as dbf
df = spark.createDataFrame([('2016-03-11 09:00:07', 1)], ['dt', 'v'])
df2 = df.groupBy(dbf.session_window('dt', '5 seconds')).agg(dbf.sum('v'))
df2.show(truncate=False)
df2.printSchema()