列を指定するタイムスタンプを指定すると、行を 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 minutes、 1 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()