次の方法で共有


session_window

列を指定するタイムスタンプを指定してセッション ウィンドウを生成します。

セッション ウィンドウは動的ウィンドウの 1 つであり、ウィンドウの長さは指定された入力に応じて変化することを意味します。 セッション ウィンドウの長さは "セッションの最新入力のタイムスタンプ + ギャップ期間" として定義されるため、新しい入力が現在のセッション ウィンドウにバインドされている場合は、新しい入力に従ってセッション ウィンドウの終了時刻を拡張できます。

Windows ではマイクロ秒精度をサポートできます。 月単位の Windows はサポートされていません。

ストリーミング クエリの場合は、関数 current_timestamp を使用して、処理時間にウィンドウを生成できます。 gapDuration は文字列として提供されます 。たとえば、"1 秒"、"1 日 12 時間"、"2 分" です。 有効な間隔文字列は、'week'、'day'、'hour'、'minute'、'second'、'millisecond'、'microsecond' です。

また、入力行に基づいて動的に期間をギャップするように評価できる列を指定することもできます。

出力列は、入れ子になった列 'start' と 'end' を持つ 'session_window' という名前の構造体になります。ここで、'start' と 'end' は pyspark.sql.types.TimestampType

対応する Databricks SQL 関数については、グループ化式session_window参照してください。

構文

from pyspark.databricks.sql import functions as dbf

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

パラメーター

パラメーター タイプ Description
timeColumn pyspark.sql.Column または str 時間別のウィンドウ化のタイムスタンプとして使用する列名または列。 time 列は TimestampType または TimestampNTZType である必要があります。
gapDuration pyspark.sql.Column または literal string セッションのタイムアウトを指定する Python 文字列リテラルまたは列。 静的な値 ( 10 minutes1 second、入力行に基づいて動的にギャップ期間を指定する式/UDF など) を指定できます。

返品ポリシー

pyspark.sql.Column: 計算結果の列。

例示

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