blob: dfa264635bddba1426fddd741c6021698908eb30 [file] [log] [blame]
.. ################################################################################
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
################################################################################
======
Window
======
Tumble Window
-------------
Tumbling windows are consecutive, non-overlapping
windows of a specified fixed length. For example, a tumbling window of 5 minutes size groups
elements in 5 minutes intervals.
Example:
::
>>> from pyflink.table.expressions import col, lit
>>> Tumble.over(lit(10).minutes) \
... .on(col("rowtime")) \
... .alias("w")
.. currentmodule:: pyflink.table.window
.. autosummary::
:toctree: api/
Tumble.over
TumbleWithSize.on
TumbleWithSizeOnTime.alias
Sliding Window
--------------
Sliding windows have a fixed size and slide by
a specified slide interval. If the slide interval is smaller than the window size, sliding
windows are overlapping. Thus, an element can be assigned to multiple windows.
For example, a sliding window of size 15 minutes with 5 minutes sliding interval groups
elements of 15 minutes and evaluates every five minutes. Each element is contained in three
consecutive window evaluations.
Example:
::
>>> from pyflink.table.expressions import col, lit
>>> Slide.over(lit(10).minutes) \
... .every(lit(5).minutes) \
... .on(col("rowtime")) \
... .alias("w")
.. currentmodule:: pyflink.table.window
.. autosummary::
:toctree: api/
Slide.over
SlideWithSize.every
SlideWithSizeAndSlide.on
SlideWithSizeAndSlideOnTime.alias
Session Window
--------------
The boundary of session windows are defined by
intervals of inactivity, i.e., a session window is closes if no event appears for a defined
gap period.
Example:
::
>>> from pyflink.table.expressions import col, lit
>>> Session.with_gap(lit(10).minutes) \\
... .on(col("rowtime")) \\
... .alias("w")
.. currentmodule:: pyflink.table.window
.. autosummary::
:toctree: api/
Session.with_gap
SessionWithGap.on
SessionWithGapOnTime.alias
Over Window
-----------
Similar to SQL, over window aggregates compute an
aggregate for each input row over a range of its neighboring rows.
Example:
::
>>> from pyflink.table.expressions import col, UNBOUNDED_RANGE
>>> Over.partition_by(col("a")) \
... .order_by(col("rowtime")) \
... .preceding(UNBOUNDED_RANGE) \
... .alias("w")
.. currentmodule:: pyflink.table.window
.. autosummary::
:toctree: api/
Over.order_by
Over.partition_by
OverWindowPartitionedOrdered.alias
OverWindowPartitionedOrdered.preceding
OverWindowPartitionedOrderedPreceding.alias
OverWindowPartitionedOrderedPreceding.following
OverWindowPartitioned.order_by