Condividi tramite


session_window

Genera la finestra della sessione in base a un timestamp che specifica la colonna.

La finestra di sessione è una delle finestre dinamiche, ovvero la lunghezza della finestra varia in base agli input specificati. La lunghezza della finestra di sessione viene definita come "timestamp dell'input più recente della sessione e della durata del gap", quindi quando i nuovi input sono associati alla finestra di sessione corrente, l'ora di fine della finestra della sessione può essere espansa in base ai nuovi input.

Windows può supportare la precisione del microsecondo. Windows nell'ordine dei mesi non è supportato.

Per una query di streaming, è possibile usare la funzione current_timestamp per generare finestre in fase di elaborazione. gapDuration viene fornito come stringhe, ad esempio "1 secondo", "1 giorno 12 ore", "2 minuti". Le stringhe di intervallo valide sono 'week', 'day', 'hour', 'minute', 'second', 'millisecond', 'microsecond'.

Può anche trattarsi di una colonna che può essere valutata in modo dinamico in base alla durata del gap in base alla riga di input.

La colonna di output sarà uno struct denominato 'session_window' per impostazione predefinita con le colonne nidificate 'start' e 'end', dove 'start' e 'end' saranno di pyspark.sql.types.TimestampType.

Per la funzione SQL di Databricks corrispondente, vedere session_window Espressione di raggruppamento.

Sintassi

from pyspark.databricks.sql import functions as dbf

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

Parametri

Parametro TIPO Description
timeColumn pyspark.sql.Column o str Nome o colonna della colonna da utilizzare come timestamp per la finestra per ora. La colonna time deve essere TimestampType o TimestampNTZType.
gapDuration pyspark.sql.Column o literal string Valore letterale o colonna stringa Python che specifica il timeout della sessione. Può trattarsi di un valore statico, ad esempio 10 minutes, 1 secondo di un'espressione/funzione definita dall'utente che specifica la durata del gap in modo dinamico in base alla riga di input.

Restituzioni

pyspark.sql.Column: colonna per i risultati calcolati.

Esempi

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