メインコンテンツまでスキップ

ウィンドウ

タイムスタンプ指定列を指定して、行を 1 つ以上の時間ウィンドウに分割します。ウィンドウの開始は包括的ですが、ウィンドウの終了は排他的です。例:12:05 はウィンドウ[12:05,12:10)にはありますが、 [12:00,12:05)には存在しません。Windows はマイクロ秒の精度をサポートできます。月順のWindowsはサポートされていません。

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

期間は文字列として提供されます。例:「1秒」、「1日12時間」、「2分」。有効 間隔文字列は、「週」、「日」、「時間」、「分」、「秒」、「ミリ秒」、「マイクロ秒」です。slideDurationが指定されていない場合、ウィンドウはタンブリング ウィンドウになります。

startTimeは1970年1月1日00:00:00 UTCからのオフセットで、 ウィンドウ間隔。例えば、15分ごとに開始する1時間ごとのタンブリングウィンドウを作成するには 1時間過ぎ、例:12:15-13:15、13:15-14:15... startTime 15 minutesとして指定します。

出力列は、デフォルトでは「window」という構造体になり、ネストされた列は「start」になります。 および 'end' で、 'start' と 'end' はpyspark.sql.types.TimestampTypeになります。

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

構文

Python
from pyspark.databricks.sql import functions as dbf

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

パラメーター

パラメーター

Type

説明

timeColumn

pyspark.sql.Column または str

時間によるウィンドウ処理のタイムスタンプとして使用する列または式。時間列は 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... startTime 15 minutesとして指定します。

戻り値

pyspark.sql.Column: コンピュート結果の列。

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