次の方法で共有


ウィンドウ

列を指定するタイムスタンプを指定すると、行を 1 つ以上の時間枠にバケット化します。 ウィンドウの開始は包括的ですが、ウィンドウの末尾は排他的です。たとえば、12:05 はウィンドウ [12:05,12:10) に含まれますが、 [12:00,12:05)には含まれません。 Windows ではマイクロ秒精度をサポートできます。 月単位の Windows はサポートされていません。

時間列は pyspark.sql.types.TimestampTypeである必要があります。

期間は、"1 秒"、"1 日 12 時間"、"2 分" などの文字列として提供されます。 有効な間隔文字列は、'week'、'day'、'hour'、'minute'、'second'、'millisecond'、'microsecond' です。 slideDurationが指定されていない場合、ウィンドウはタンブリング ウィンドウになります。

startTime は、ウィンドウ間隔を開始する 1970-01-01 00:00:00 UTC のオフセットです。 たとえば、時間の 15 分後に開始するタンブリング ウィンドウを 12:15-13:15、13:15-14:15 などとします。15 minutesとしてstartTimeを提供します。

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

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

構文

from pyspark.databricks.sql import functions as dbf

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

パラメーター

パラメーター タイプ Description
timeColumn pyspark.sql.Column または str 時間ごとのウィンドウ化のタイムスタンプとして使用する列または式。 time 列は TimestampType または TimestampNTZType である必要があります。
windowDuration literal string ウィンドウの幅を指定する文字列 ( 10 minutes1 secondなど)。 有効な期間識別子 org.apache.spark.unsafe.types.CalendarInterval 確認します。 期間は固定時間であり、カレンダーに応じて時間の経過と同時に変化しないことに注意してください。 たとえば、 1 day は、カレンダーの日ではなく、常に 86,400,000 ミリ秒を意味します。
slideDuration literal string, optional slideDurationごとに新しいウィンドウが生成されます。 windowDuration以下にする必要があります。 有効な期間識別子 org.apache.spark.unsafe.types.CalendarInterval 確認します。 この期間も同様に絶対であり、カレンダーによって異なるわけではありません。
startTime literal string, optional ウィンドウ間隔を開始する 1970-01-01 00:00:00 UTC のオフセット。 たとえば、時間の 15 分後に開始するタンブリング ウィンドウを 12:15-13:15、13:15-14:15 などとします。15 minutesとしてstartTimeを提供します。

返品ポリシー

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

例示

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