Bagikan melalui


session_window

Menghasilkan jendela sesi dengan kolom yang ditentukan oleh stempel waktu.

Jendela sesi adalah salah satu jendela dinamis, yang berarti panjang jendela bervariasi sesuai dengan input yang diberikan. Panjang jendela sesi didefinisikan sebagai "tanda waktu input terbaru sesi + durasi kesenjangan", jadi ketika input baru terikat ke jendela sesi saat ini, waktu akhir jendela sesi dapat diperluas sesuai dengan input baru.

Windows dapat mendukung presisi mikrosekond. Windows dalam urutan bulan tidak didukung.

Untuk kueri streaming, Anda dapat menggunakan fungsi current_timestamp untuk menghasilkan jendela pada waktu pemrosesan. gapDuration disediakan sebagai string, misalnya '1 detik', '1 hari 12 jam', '2 menit'. String interval yang valid adalah 'week', 'day', 'hour', 'minute', 'second', 'milidetik', 'microsecond'.

Ini juga bisa menjadi Kolom yang dapat dievaluasi ke durasi kesenjangan secara dinamis berdasarkan baris input.

Kolom output akan menjadi struct yang disebut 'session_window' secara default dengan kolom berlapis 'start' dan 'end', di mana 'start' dan 'end' akan menjadi dari pyspark.sql.types.TimestampType.

Untuk fungsi Databricks SQL yang sesuai, lihat session_window ekspresi pengelompokan.

Syntax

from pyspark.databricks.sql import functions as dbf

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

Parameter-parameternya

Pengaturan Tipe Description
timeColumn pyspark.sql.Column atau str Nama kolom atau kolom yang akan digunakan sebagai tanda waktu untuk jendela menurut waktu. Kolom waktu harus dari TimestampType atau TimestampNTZType.
gapDuration pyspark.sql.Column atau literal string String Python literal atau kolom yang menentukan batas waktu sesi. Ini bisa berupa nilai statis, misalnya 10 minutes, , 1 second, atau ekspresi/UDF yang menentukan durasi kesenjangan secara dinamis berdasarkan baris input.

Pengembalian Barang

pyspark.sql.Column: kolom untuk hasil komputasi.

Examples

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