You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2024/09/02 14:55:47 UTC

(datafusion-python) branch asf-staging updated (75e0773 -> 92c3506)

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a change to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/datafusion-python.git


 discard 75e0773  Publish built docs triggered by 90f5b5b355d79b56ae3607b7b0cdeb09b67e5121
     new 92c3506  Publish built docs triggered by 57eb9596e0a3d6205bd3e94e83854111145572e6

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (75e0773)
            \
             N -- N -- N   refs/heads/asf-staging (92c3506)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 _sources/autoapi/datafusion/context/index.rst.txt  |  4 +--
 _sources/autoapi/datafusion/expr/index.rst.txt     |  2 +-
 .../autoapi/datafusion/functions/index.rst.txt     | 10 +++---
 _sources/autoapi/datafusion/index.rst.txt          |  6 ++--
 _sources/autoapi/datafusion/udf/index.rst.txt      |  4 +--
 .../common-operations/expressions.rst.txt          |  2 +-
 _static/theme_overrides.css                        |  2 +-
 autoapi/datafusion/catalog/index.html              |  2 +-
 autoapi/datafusion/context/index.html              |  6 ++--
 autoapi/datafusion/dataframe/index.html            |  2 +-
 autoapi/datafusion/expr/index.html                 |  4 +--
 autoapi/datafusion/functions/index.html            | 20 ++++++------
 autoapi/datafusion/index.html                      |  8 ++---
 autoapi/datafusion/input/base/index.html           |  2 +-
 autoapi/datafusion/input/index.html                |  2 +-
 autoapi/datafusion/input/location/index.html       |  2 +-
 autoapi/datafusion/object_store/index.html         |  2 +-
 autoapi/datafusion/record_batch/index.html         |  2 +-
 autoapi/datafusion/substrait/index.html            |  2 +-
 autoapi/datafusion/udf/index.html                  |  6 ++--
 autoapi/index.html                                 |  2 +-
 contributor-guide/introduction.html                |  2 +-
 genindex.html                                      |  2 +-
 index.html                                         |  2 +-
 py-modindex.html                                   |  2 +-
 search.html                                        |  2 +-
 searchindex.js                                     |  2 +-
 user-guide/basics.html                             |  2 +-
 user-guide/common-operations/aggregations.html     | 28 ++++++++---------
 user-guide/common-operations/basic-info.html       | 36 +++++++++++-----------
 user-guide/common-operations/expressions.html      |  4 +--
 user-guide/common-operations/functions.html        | 24 +++++++--------
 user-guide/common-operations/index.html            |  2 +-
 user-guide/common-operations/joins.html            |  6 ++--
 .../common-operations/select-and-filter.html       |  4 +--
 user-guide/common-operations/udf-and-udfa.html     |  2 +-
 user-guide/common-operations/windows.html          |  4 +--
 user-guide/configuration.html                      |  2 +-
 user-guide/introduction.html                       |  2 +-
 user-guide/io/arrow.html                           |  2 +-
 user-guide/io/avro.html                            |  2 +-
 user-guide/io/csv.html                             |  2 +-
 user-guide/io/index.html                           |  2 +-
 user-guide/io/json.html                            |  2 +-
 user-guide/io/parquet.html                         |  2 +-
 user-guide/sql.html                                |  2 +-
 46 files changed, 117 insertions(+), 117 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org


(datafusion-python) 01/01: Publish built docs triggered by 57eb9596e0a3d6205bd3e94e83854111145572e6

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/datafusion-python.git

commit 92c350664a615cba2f87f43cfa717909659adef2
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Mon Sep 2 14:55:43 2024 +0000

    Publish built docs triggered by 57eb9596e0a3d6205bd3e94e83854111145572e6
---
 _sources/autoapi/datafusion/context/index.rst.txt  |   4 +-
 _sources/autoapi/datafusion/expr/index.rst.txt     |  70 +++-
 .../autoapi/datafusion/functions/index.rst.txt     | 229 ++++++++++-
 _sources/autoapi/datafusion/index.rst.txt          |  74 +++-
 _sources/autoapi/datafusion/udf/index.rst.txt      |   6 +-
 .../common-operations/aggregations.rst.txt         |   2 +
 .../common-operations/expressions.rst.txt          |   2 +-
 .../user-guide/common-operations/windows.rst.txt   | 187 +++++++--
 _static/theme_overrides.css                        |   2 +-
 autoapi/datafusion/catalog/index.html              |   2 +-
 autoapi/datafusion/context/index.html              |   6 +-
 autoapi/datafusion/dataframe/index.html            |   2 +-
 autoapi/datafusion/expr/index.html                 | 129 +++++-
 autoapi/datafusion/functions/index.html            | 433 ++++++++++++++++++---
 autoapi/datafusion/index.html                      | 133 ++++++-
 autoapi/datafusion/input/base/index.html           |   2 +-
 autoapi/datafusion/input/index.html                |   2 +-
 autoapi/datafusion/input/location/index.html       |   2 +-
 autoapi/datafusion/object_store/index.html         |   2 +-
 autoapi/datafusion/record_batch/index.html         |   2 +-
 autoapi/datafusion/substrait/index.html            |   2 +-
 autoapi/datafusion/udf/index.html                  |   8 +-
 autoapi/index.html                                 |   2 +-
 contributor-guide/introduction.html                |   2 +-
 genindex.html                                      |  82 +++-
 index.html                                         |   2 +-
 objects.inv                                        | Bin 4805 -> 4948 bytes
 py-modindex.html                                   |   2 +-
 search.html                                        |   2 +-
 searchindex.js                                     |   2 +-
 user-guide/basics.html                             |   2 +-
 user-guide/common-operations/aggregations.html     |  38 +-
 user-guide/common-operations/basic-info.html       |  36 +-
 user-guide/common-operations/expressions.html      |   4 +-
 user-guide/common-operations/functions.html        |  24 +-
 user-guide/common-operations/index.html            |   9 +-
 user-guide/common-operations/joins.html            |   8 +-
 .../common-operations/select-and-filter.html       |   4 +-
 user-guide/common-operations/udf-and-udfa.html     |   2 +-
 user-guide/common-operations/windows.html          | 348 ++++++++++++++---
 user-guide/configuration.html                      |   2 +-
 user-guide/introduction.html                       |   2 +-
 user-guide/io/arrow.html                           |   2 +-
 user-guide/io/avro.html                            |   2 +-
 user-guide/io/csv.html                             |   2 +-
 user-guide/io/index.html                           |   2 +-
 user-guide/io/json.html                            |   2 +-
 user-guide/io/parquet.html                         |   2 +-
 user-guide/sql.html                                |   2 +-
 49 files changed, 1616 insertions(+), 272 deletions(-)

diff --git a/_sources/autoapi/datafusion/context/index.rst.txt b/_sources/autoapi/datafusion/context/index.rst.txt
index b520f26..99a1b4c 100644
--- a/_sources/autoapi/datafusion/context/index.rst.txt
+++ b/_sources/autoapi/datafusion/context/index.rst.txt
@@ -362,7 +362,7 @@ Module Contents
 
    Example usage:
 
-   The following example demostrates how to use the context to execute
+   The following example demonstrates how to use the context to execute
    a query against a CSV data source using the :py:class:`DataFrame` API::
 
        from datafusion import SessionContext
@@ -717,7 +717,7 @@ Module Contents
 
    .. py:method:: session_id() -> str
 
-      Retrun an id that uniquely identifies this :py:class:`SessionContext`.
+      Return an id that uniquely identifies this :py:class:`SessionContext`.
 
 
 
diff --git a/_sources/autoapi/datafusion/expr/index.rst.txt b/_sources/autoapi/datafusion/expr/index.rst.txt
index a8dadf1..0dc38f5 100644
--- a/_sources/autoapi/datafusion/expr/index.rst.txt
+++ b/_sources/autoapi/datafusion/expr/index.rst.txt
@@ -306,6 +306,32 @@ Module Contents
 
 
 
+   .. py:method:: distinct() -> ExprFuncBuilder
+
+      Only evaluate distinct values for an aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: filter(filter: Expr) -> ExprFuncBuilder
+
+      Filter an aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: is_not_null() -> Expr
+
+      Returns ``True`` if this expression is not null.
+
+
+
    .. py:method:: is_null() -> Expr
 
       Returns ``True`` if this expression is null.
@@ -322,6 +348,36 @@ Module Contents
 
 
 
+   .. py:method:: null_treatment(null_treatment: datafusion.common.NullTreatment) -> ExprFuncBuilder
+
+      Set the treatment for ``null`` values for a window or aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: order_by(*exprs: Expr) -> ExprFuncBuilder
+
+      Set the ordering for a window or aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: partition_by(*partition_by: Expr) -> ExprFuncBuilder
+
+      Set the partitioning for a window function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
    .. py:method:: python_value() -> Any
 
       Extracts the Expr value into a PyObject.
@@ -391,6 +447,16 @@ Module Contents
 
 
 
+   .. py:method:: window_frame(window_frame: WindowFrame) -> ExprFuncBuilder
+
+      Set the frame fora  window function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
    .. py:attribute:: __radd__
 
 
@@ -415,14 +481,14 @@ Module Contents
    .. py:attribute:: expr
 
 
-.. py:class:: WindowFrame(units: str, start_bound: int | None, end_bound: int | None)
+.. py:class:: WindowFrame(units: str, start_bound: Optional[Any], end_bound: Optional[Any])
 
    Defines a window frame for performing window operations.
 
    Construct a window frame using the given parameters.
 
    :param units: Should be one of ``rows``, ``range``, or ``groups``.
-   :param start_bound: Sets the preceeding bound. Must be >= 0. If none, this
+   :param start_bound: Sets the preceding bound. Must be >= 0. If none, this
                        will be set to unbounded. If unit type is ``groups``, this
                        parameter must be set.
    :param end_bound: Sets the following bound. Must be >= 0. If none, this
diff --git a/_sources/autoapi/datafusion/functions/index.rst.txt b/_sources/autoapi/datafusion/functions/index.rst.txt
index 087157b..26f779b 100644
--- a/_sources/autoapi/datafusion/functions/index.rst.txt
+++ b/_sources/autoapi/datafusion/functions/index.rst.txt
@@ -93,6 +93,7 @@ Functions
    datafusion.functions.covar
    datafusion.functions.covar_pop
    datafusion.functions.covar_samp
+   datafusion.functions.cume_dist
    datafusion.functions.current_date
    datafusion.functions.current_time
    datafusion.functions.date_bin
@@ -102,6 +103,7 @@ Functions
    datafusion.functions.datetrunc
    datafusion.functions.decode
    datafusion.functions.degrees
+   datafusion.functions.dense_rank
    datafusion.functions.digest
    datafusion.functions.encode
    datafusion.functions.ends_with
@@ -118,8 +120,10 @@ Functions
    datafusion.functions.initcap
    datafusion.functions.isnan
    datafusion.functions.iszero
+   datafusion.functions.lag
    datafusion.functions.last_value
    datafusion.functions.lcm
+   datafusion.functions.lead
    datafusion.functions.left
    datafusion.functions.length
    datafusion.functions.levenshtein
@@ -167,16 +171,19 @@ Functions
    datafusion.functions.named_struct
    datafusion.functions.nanvl
    datafusion.functions.now
+   datafusion.functions.ntile
    datafusion.functions.nullif
    datafusion.functions.octet_length
    datafusion.functions.order_by
    datafusion.functions.overlay
+   datafusion.functions.percent_rank
    datafusion.functions.pi
    datafusion.functions.pow
    datafusion.functions.power
    datafusion.functions.radians
    datafusion.functions.random
    datafusion.functions.range
+   datafusion.functions.rank
    datafusion.functions.regexp_like
    datafusion.functions.regexp_match
    datafusion.functions.regexp_replace
@@ -194,6 +201,7 @@ Functions
    datafusion.functions.reverse
    datafusion.functions.right
    datafusion.functions.round
+   datafusion.functions.row_number
    datafusion.functions.rpad
    datafusion.functions.rtrim
    datafusion.functions.sha224
@@ -570,12 +578,12 @@ Module Contents
 
 .. py:function:: bool_and(arg: datafusion.expr.Expr, distinct: bool = False) -> datafusion.expr.Expr
 
-   Computes the boolean AND of the arugment.
+   Computes the boolean AND of the argument.
 
 
 .. py:function:: bool_or(arg: datafusion.expr.Expr, distinct: bool = False) -> datafusion.expr.Expr
 
-   Computes the boolean OR of the arguement.
+   Computes the boolean OR of the argument.
 
 
 .. py:function:: btrim(arg: datafusion.expr.Expr) -> datafusion.expr.Expr
@@ -638,7 +646,7 @@ Module Contents
 
    Concatenates the list ``args`` with the separator.
 
-   ``NULL`` arugments are ignored. ``separator`` should not be ``NULL``.
+   ``NULL`` arguments are ignored. ``separator`` should not be ``NULL``.
 
 
 .. py:function:: corr(value1: datafusion.expr.Expr, value2: datafusion.expr.Expr, distinct: bool = False) -> datafusion.expr.Expr
@@ -688,6 +696,28 @@ Module Contents
    Computes the sample covariance.
 
 
+.. py:function:: cume_dist(partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a cumulative distribution window function.
+
+   This window function is similar to :py:func:`rank` except that the returned values
+   are the ratio of the row number to the total numebr of rows. Here is an example of a
+   dataframe with a window ordered by descending ``points`` and the associated
+   cumulative distribution::
+
+       +--------+-----------+
+       | points | cume_dist |
+       +--------+-----------+
+       | 100    | 0.5       |
+       | 100    | 0.5       |
+       | 50     | 0.75      |
+       | 25     | 1.0       |
+       +--------+-----------+
+
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
 .. py:function:: current_date() -> datafusion.expr.Expr
 
    Returns current UTC date as a Date32 value.
@@ -737,6 +767,27 @@ Module Contents
    Converts the argument from radians to degrees.
 
 
+.. py:function:: dense_rank(partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a dense_rank window function.
+
+   This window function is similar to :py:func:`rank` except that the returned values
+   will be consecutive. Here is an example of a dataframe with a window ordered by
+   descending ``points`` and the associated dense rank::
+
+       +--------+------------+
+       | points | dense_rank |
+       +--------+------------+
+       | 100    | 1          |
+       | 100    | 1          |
+       | 50     | 2          |
+       | 25     | 3          |
+       +--------+------------+
+
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
 .. py:function:: digest(value: datafusion.expr.Expr, method: datafusion.expr.Expr) -> datafusion.expr.Expr
 
    Computes the binary hash of an expression using the specified algorithm.
@@ -757,7 +808,7 @@ Module Contents
 
 .. py:function:: exp(arg: datafusion.expr.Expr) -> datafusion.expr.Expr
 
-   Returns the exponential of the arugment.
+   Returns the exponential of the argument.
 
 
 .. py:function:: factorial(arg: datafusion.expr.Expr) -> datafusion.expr.Expr
@@ -775,7 +826,7 @@ Module Contents
    The string list is a string composed of substrings separated by ``,`` characters.
 
 
-.. py:function:: first_value(arg: datafusion.expr.Expr, distinct: bool = False, filter: bool = None, order_by: datafusion.expr.Expr | None = None, null_treatment: datafusion._internal.common.NullTreatment | None = None) -> datafusion.expr.Expr
+.. py:function:: first_value(arg: datafusion.expr.Expr, distinct: bool = False, filter: Optional[bool] = None, order_by: Optional[list[datafusion.expr.Expr]] = None, null_treatment: Optional[datafusion._internal.common.NullTreatment] = None) -> datafusion.expr.Expr
 
    Returns the first value in a group of values.
 
@@ -830,16 +881,78 @@ Module Contents
    Returns true if a given number is +0.0 or -0.0 otherwise returns false.
 
 
-.. py:function:: last_value(arg: datafusion.expr.Expr, distinct: bool = False, filter: bool = None, order_by: datafusion.expr.Expr | None = None, null_treatment: datafusion._internal.common.NullTreatment | None = None) -> datafusion.expr.Expr
+.. py:function:: lag(arg: datafusion.expr.Expr, shift_offset: int = 1, default_value: Optional[Any] = None, partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a lag window function.
+
+   Lag operation will return the argument that is in the previous shift_offset-th row
+   in the partition. For example ``lag(col("b"), shift_offset=3, default_value=5)``
+   will return the 3rd previous value in column ``b``. At the beginnig of the
+   partition, where no values can be returned it will return the default value of 5.
+
+   Here is an example of both the ``lag`` and :py:func:`datafusion.functions.lead`
+   functions on a simple DataFrame::
+
+       +--------+------+-----+
+       | points | lead | lag |
+       +--------+------+-----+
+       | 100    | 100  |     |
+       | 100    | 50   | 100 |
+       | 50     | 25   | 100 |
+       | 25     |      | 50  |
+       +--------+------+-----+
+
+   :param arg: Value to return
+   :param shift_offset: Number of rows before the current row.
+   :param default_value: Value to return if shift_offet row does not exist.
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
+.. py:function:: last_value(arg: datafusion.expr.Expr, distinct: bool = False, filter: Optional[bool] = None, order_by: Optional[list[datafusion.expr.Expr]] = None, null_treatment: Optional[datafusion._internal.common.NullTreatment] = None) -> datafusion.expr.Expr
 
    Returns the last value in a group of values.
 
+   To set parameters on this expression, use ``.order_by()``, ``.distinct()``,
+   ``.filter()``, or ``.null_treatment()``.
+
 
 .. py:function:: lcm(x: datafusion.expr.Expr, y: datafusion.expr.Expr) -> datafusion.expr.Expr
 
    Returns the least common multiple.
 
 
+.. py:function:: lead(arg: datafusion.expr.Expr, shift_offset: int = 1, default_value: Optional[Any] = None, partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a lead window function.
+
+   Lead operation will return the argument that is in the next shift_offset-th row in
+   the partition. For example ``lead(col("b"), shift_offset=3, default_value=5)`` will
+   return the 3rd following value in column ``b``. At the end of the partition, where
+   no futher values can be returned it will return the default value of 5.
+
+   Here is an example of both the ``lead`` and :py:func:`datafusion.functions.lag`
+   functions on a simple DataFrame::
+
+       +--------+------+-----+
+       | points | lead | lag |
+       +--------+------+-----+
+       | 100    | 100  |     |
+       | 100    | 50   | 100 |
+       | 50     | 25   | 100 |
+       | 25     |      | 50  |
+       +--------+------+-----+
+
+   To set window function parameters use the window builder approach described in the
+   ref:`_window_functions` online documentation.
+
+   :param arg: Value to return
+   :param shift_offset: Number of rows following the current row.
+   :param default_value: Value to return if shift_offet row does not exist.
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
 .. py:function:: left(string: datafusion.expr.Expr, n: datafusion.expr.Expr) -> datafusion.expr.Expr
 
    Returns the first ``n`` characters in the ``string``.
@@ -1099,7 +1212,7 @@ Module Contents
 
 .. py:function:: max(arg: datafusion.expr.Expr, distinct: bool = False) -> datafusion.expr.Expr
 
-   Returns the maximum value of the arugment.
+   Returns the maximum value of the argument.
 
 
 .. py:function:: md5(arg: datafusion.expr.Expr) -> datafusion.expr.Expr
@@ -1124,7 +1237,7 @@ Module Contents
    Returns the minimum value of the argument.
 
 
-.. py:function:: named_struct(name_pairs: list[str, datafusion.expr.Expr]) -> datafusion.expr.Expr
+.. py:function:: named_struct(name_pairs: list[tuple[str, datafusion.expr.Expr]]) -> datafusion.expr.Expr
 
    Returns a struct with the given names and arguments pairs.
 
@@ -1141,6 +1254,31 @@ Module Contents
    This will use the same value for all instances of now() in same statement.
 
 
+.. py:function:: ntile(groups: int, partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a n-tile window function.
+
+   This window function orders the window frame into a give number of groups based on
+   the ordering criteria. It then returns which group the current row is assigned to.
+   Here is an example of a dataframe with a window ordered by descending ``points``
+   and the associated n-tile function::
+
+       +--------+-------+
+       | points | ntile |
+       +--------+-------+
+       | 120    | 1     |
+       | 100    | 1     |
+       | 80     | 2     |
+       | 60     | 2     |
+       | 40     | 3     |
+       | 20     | 3     |
+       +--------+-------+
+
+   :param groups: Number of groups for the n-tile to be divided into.
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
 .. py:function:: nullif(expr1: datafusion.expr.Expr, expr2: datafusion.expr.Expr) -> datafusion.expr.Expr
 
    Returns NULL if expr1 equals expr2; otherwise it returns expr1.
@@ -1166,6 +1304,28 @@ Module Contents
    extends for ``length`` characters with new substring.
 
 
+.. py:function:: percent_rank(partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a percent_rank window function.
+
+   This window function is similar to :py:func:`rank` except that the returned values
+   are the percentage from 0.0 to 1.0 from first to last. Here is an example of a
+   dataframe with a window ordered by descending ``points`` and the associated percent
+   rank::
+
+       +--------+--------------+
+       | points | percent_rank |
+       +--------+--------------+
+       | 100    | 0.0          |
+       | 100    | 0.0          |
+       | 50     | 0.666667     |
+       | 25     | 1.0          |
+       +--------+--------------+
+
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
 .. py:function:: pi() -> datafusion.expr.Expr
 
    Returns an approximate value of π.
@@ -1198,6 +1358,32 @@ Module Contents
    Create a list of values in the range between start and stop.
 
 
+.. py:function:: rank(partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a rank window function.
+
+   Returns the rank based upon the window order. Consecutive equal values will receive
+   the same rank, but the next different value will not be consecutive but rather the
+   number of rows that preceed it plus one. This is similar to Olympic medals. If two
+   people tie for gold, the next place is bronze. There would be no silver medal. Here
+   is an example of a dataframe with a window ordered by descending ``points`` and the
+   associated rank.
+
+   You should set ``order_by`` to produce meaningful results::
+
+       +--------+------+
+       | points | rank |
+       +--------+------+
+       | 100    | 1    |
+       | 100    | 1    |
+       | 50     | 3    |
+       | 25     | 4    |
+       +--------+------+
+
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
 .. py:function:: regexp_like(string: datafusion.expr.Expr, regex: datafusion.expr.Expr, flags: datafusion.expr.Expr | None = None) -> datafusion.expr.Expr
 
    Find if any regular expression (regex) matches exist.
@@ -1303,6 +1489,27 @@ Module Contents
    ``round(lit(125.2345), lit(-2))`` would yield a value of ``100.0``.
 
 
+.. py:function:: row_number(partition_by: Optional[list[datafusion.expr.Expr]] = None, order_by: Optional[list[datafusion.expr.Expr]] = None) -> datafusion.expr.Expr
+
+   Create a row number window function.
+
+   Returns the row number of the window function.
+
+   Here is an example of the ``row_number`` on a simple DataFrame::
+
+       +--------+------------+
+       | points | row number |
+       +--------+------------+
+       | 100    | 1          |
+       | 100    | 2          |
+       | 50     | 3          |
+       | 25     | 4          |
+       +--------+------------+
+
+   :param partition_by: Expressions to partition the window frame on.
+   :param order_by: Set ordering within the window frame.
+
+
 .. py:function:: rpad(string: datafusion.expr.Expr, count: datafusion.expr.Expr, characters: datafusion.expr.Expr | None = None) -> datafusion.expr.Expr
 
    Add right padding to a string.
@@ -1524,4 +1731,10 @@ Module Contents
 
    Creates a new Window function expression.
 
+   This interface will soon be deprecated. Instead of using this interface,
+   users should call the window functions directly. For example, to perform a
+   lag use::
+
+       df.select(functions.lag(col("a")).partition_by(col("b")).build())
+
 
diff --git a/_sources/autoapi/datafusion/index.rst.txt b/_sources/autoapi/datafusion/index.rst.txt
index a804238..ee1908b 100644
--- a/_sources/autoapi/datafusion/index.rst.txt
+++ b/_sources/autoapi/datafusion/index.rst.txt
@@ -113,7 +113,7 @@ Package Contents
       :abstractmethod:
 
 
-      Evalute an array of values and update state.
+      Evaluate an array of values and update state.
 
 
 
@@ -126,7 +126,7 @@ Package Contents
 
    Instantiate a user defined aggregate function (UDAF).
 
-   See :py:func:`udaf` for a convenience function and arugment
+   See :py:func:`udaf` for a convenience function and argument
    descriptions.
 
 
@@ -380,6 +380,32 @@ Package Contents
 
 
 
+   .. py:method:: distinct() -> ExprFuncBuilder
+
+      Only evaluate distinct values for an aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: filter(filter: Expr) -> ExprFuncBuilder
+
+      Filter an aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: is_not_null() -> Expr
+
+      Returns ``True`` if this expression is not null.
+
+
+
    .. py:method:: is_null() -> Expr
 
       Returns ``True`` if this expression is null.
@@ -396,6 +422,36 @@ Package Contents
 
 
 
+   .. py:method:: null_treatment(null_treatment: datafusion.common.NullTreatment) -> ExprFuncBuilder
+
+      Set the treatment for ``null`` values for a window or aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: order_by(*exprs: Expr) -> ExprFuncBuilder
+
+      Set the ordering for a window or aggregate function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
+   .. py:method:: partition_by(*partition_by: Expr) -> ExprFuncBuilder
+
+      Set the partitioning for a window function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
    .. py:method:: python_value() -> Any
 
       Extracts the Expr value into a PyObject.
@@ -465,6 +521,16 @@ Package Contents
 
 
 
+   .. py:method:: window_frame(window_frame: WindowFrame) -> ExprFuncBuilder
+
+      Set the frame fora  window function.
+
+      This function will create an :py:class:`ExprFuncBuilder` that can be used to
+      set parameters for either window or aggregate functions. If used on any other
+      type of expression, an error will be generated when ``build()`` is called.
+
+
+
    .. py:attribute:: __radd__
 
 
@@ -927,14 +993,14 @@ Package Contents
    .. py:attribute:: table
 
 
-.. py:class:: WindowFrame(units: str, start_bound: int | None, end_bound: int | None)
+.. py:class:: WindowFrame(units: str, start_bound: Optional[Any], end_bound: Optional[Any])
 
    Defines a window frame for performing window operations.
 
    Construct a window frame using the given parameters.
 
    :param units: Should be one of ``rows``, ``range``, or ``groups``.
-   :param start_bound: Sets the preceeding bound. Must be >= 0. If none, this
+   :param start_bound: Sets the preceding bound. Must be >= 0. If none, this
                        will be set to unbounded. If unit type is ``groups``, this
                        parameter must be set.
    :param end_bound: Sets the following bound. Must be >= 0. If none, this
diff --git a/_sources/autoapi/datafusion/udf/index.rst.txt b/_sources/autoapi/datafusion/udf/index.rst.txt
index 17310f2..39676f7 100644
--- a/_sources/autoapi/datafusion/udf/index.rst.txt
+++ b/_sources/autoapi/datafusion/udf/index.rst.txt
@@ -65,7 +65,7 @@ Module Contents
       :abstractmethod:
 
 
-      Evalute an array of values and update state.
+      Evaluate an array of values and update state.
 
 
 
@@ -78,7 +78,7 @@ Module Contents
 
    Instantiate a user defined aggregate function (UDAF).
 
-   See :py:func:`udaf` for a convenience function and arugment
+   See :py:func:`udaf` for a convenience function and argument
    descriptions.
 
 
@@ -159,7 +159,7 @@ Module Contents
    .. py:attribute:: _udf
 
 
-.. py:class:: Volatility
+.. py:class:: Volatility(*args, **kwds)
 
    Bases: :py:obj:`enum.Enum`
 
diff --git a/_sources/user-guide/common-operations/aggregations.rst.txt b/_sources/user-guide/common-operations/aggregations.rst.txt
index b920212..7ad4022 100644
--- a/_sources/user-guide/common-operations/aggregations.rst.txt
+++ b/_sources/user-guide/common-operations/aggregations.rst.txt
@@ -15,6 +15,8 @@
 .. specific language governing permissions and limitations
 .. under the License.
 
+.. _aggregation:
+
 Aggregation
 ============
 
diff --git a/_sources/user-guide/common-operations/expressions.rst.txt b/_sources/user-guide/common-operations/expressions.rst.txt
index c8f8b8f..e35234c 100644
--- a/_sources/user-guide/common-operations/expressions.rst.txt
+++ b/_sources/user-guide/common-operations/expressions.rst.txt
@@ -21,7 +21,7 @@ Expressions
 ===========
 
 In DataFusion an expression is an abstraction that represents a computation.
-Expressions are used as the primary inputs and ouputs for most functions within
+Expressions are used as the primary inputs and outputs for most functions within
 DataFusion. As such, expressions can be combined to create expression trees, a
 concept shared across most compilers and databases.
 
diff --git a/_sources/user-guide/common-operations/windows.rst.txt b/_sources/user-guide/common-operations/windows.rst.txt
index 5ef3c98..6091768 100644
--- a/_sources/user-guide/common-operations/windows.rst.txt
+++ b/_sources/user-guide/common-operations/windows.rst.txt
@@ -15,13 +15,16 @@
 .. specific language governing permissions and limitations
 .. under the License.
 
+.. _window_functions:
+
 Window Functions
 ================
 
-In this section you will learn about window functions. A window function utilizes values from one or multiple rows to
-produce a result for each individual row, unlike an aggregate function that provides a single value for multiple rows.
+In this section you will learn about window functions. A window function utilizes values from one or
+multiple rows to produce a result for each individual row, unlike an aggregate function that
+provides a single value for multiple rows.
 
-The functionality of window functions in DataFusion is supported by the dedicated :py:func:`~datafusion.functions.window` function.
+The window functions are availble in the :py:mod:`~datafusion.functions` module.
 
 We'll use the pokemon dataset (from Ritchie Vink) in the following examples.
 
@@ -40,20 +43,25 @@ We'll use the pokemon dataset (from Ritchie Vink) in the following examples.
     ctx = SessionContext()
     df = ctx.read_csv("pokemon.csv")
 
-Here is an example that shows how to compare each pokemons’s attack power with the average attack power in its ``"Type 1"``
+Here is an example that shows how you can compare each pokemon's speed to the speed of the
+previous row in the DataFrame.
 
 .. ipython:: python
 
     df.select(
         col('"Name"'),
-        col('"Attack"'),
-        f.alias(
-            f.window("avg", [col('"Attack"')], partition_by=[col('"Type 1"')]),
-            "Average Attack",
-        )
+        col('"Speed"'),
+        f.lag(col('"Speed"')).alias("Previous Speed")
     )
 
-You can also control the order in which rows are processed by window functions by providing
+Setting Parameters
+------------------
+
+
+Ordering
+^^^^^^^^
+
+You can control the order in which rows are processed by window functions by providing
 a list of ``order_by`` functions for the ``order_by`` parameter.
 
 .. ipython:: python
@@ -61,33 +69,150 @@ a list of ``order_by`` functions for the ``order_by`` parameter.
     df.select(
         col('"Name"'),
         col('"Attack"'),
-        f.alias(
-            f.window(
-                "rank",
-                [],
-                partition_by=[col('"Type 1"')],
-                order_by=[f.order_by(col('"Attack"'))],
-            ),
-            "rank",
-        ),
+        col('"Type 1"'),
+        f.rank(
+            partition_by=[col('"Type 1"')],
+            order_by=[col('"Attack"').sort(ascending=True)],
+        ).alias("rank"),
+    ).sort(col('"Type 1"'), col('"Attack"'))
+
+Partitions
+^^^^^^^^^^
+
+A window function can take a list of ``partition_by`` columns similar to an
+:ref:`Aggregation Function<aggregation>`. This will cause the window values to be evaluated
+independently for each of the partitions. In the example above, we found the rank of each
+Pokemon per ``Type 1`` partitions. We can see the first couple of each partition if we do
+the following:
+
+.. ipython:: python
+
+    df.select(
+        col('"Name"'),
+        col('"Attack"'),
+        col('"Type 1"'),
+        f.rank(
+            partition_by=[col('"Type 1"')],
+            order_by=[col('"Attack"').sort(ascending=True)],
+        ).alias("rank"),
+    ).filter(col("rank") < lit(3)).sort(col('"Type 1"'), col("rank"))
+
+Window Frame
+^^^^^^^^^^^^
+
+When using aggregate functions, the Window Frame of defines the rows over which it operates.
+If you do not specify a Window Frame, the frame will be set depending on the following
+criteria.
+
+* If an ``order_by`` clause is set, the default window frame is defined as the rows between
+  unbounded preceeding and the current row.
+* If an ``order_by`` is not set, the default frame is defined as the rows betwene unbounded
+  and unbounded following (the entire partition).
+
+Window Frames are defined by three parameters: unit type, starting bound, and ending bound.
+
+The unit types available are:
+
+* Rows: The starting and ending boundaries are defined by the number of rows relative to the
+  current row.
+* Range: When using Range, the ``order_by`` clause must have exactly one term. The boundaries
+  are defined bow how close the rows are to the value of the expression in the ``order_by``
+  parameter.
+* Groups: A "group" is the set of all rows that have equivalent values for all terms in the
+  ``order_by`` clause.
+
+In this example we perform a "rolling average" of the speed of the current Pokemon and the
+two preceeding rows.
+
+.. ipython:: python
+
+    from datafusion.expr import WindowFrame
+
+    df.select(
+        col('"Name"'),
+        col('"Speed"'),
+        f.window("avg",
+            [col('"Speed"')],
+            order_by=[col('"Speed"')],
+            window_frame=WindowFrame("rows", 2, 0)
+        ).alias("Previous Speed")
+    )
+
+Null Treatment
+^^^^^^^^^^^^^^
+
+When using aggregate functions as window functions, it is often useful to specify how null values
+should be treated. In order to do this you need to use the builder function. In future releases
+we expect this to be simplified in the interface.
+
+One common usage for handling nulls is the case where you want to find the last value up to the
+current row. In the following example we demonstrate how setting the null treatment to ignore
+nulls will fill in with the value of the most recent non-null row. To do this, we also will set
+the window frame so that we only process up to the current row.
+
+In this example, we filter down to one specific type of Pokemon that does have some entries in
+it's ``Type 2`` column that are null.
+
+.. ipython:: python
+
+    from datafusion.common import NullTreatment
+
+    df.filter(col('"Type 1"') ==  lit("Bug")).select(
+        '"Name"',
+        '"Type 2"',
+        f.window("last_value", [col('"Type 2"')])
+            .window_frame(WindowFrame("rows", None, 0))
+            .order_by(col('"Speed"'))
+            .null_treatment(NullTreatment.IGNORE_NULLS)
+            .build()
+            .alias("last_wo_null"),
+        f.window("last_value", [col('"Type 2"')])
+            .window_frame(WindowFrame("rows", None, 0))
+            .order_by(col('"Speed"'))
+            .null_treatment(NullTreatment.RESPECT_NULLS)
+            .build()
+            .alias("last_with_null")
+    )
+
+Aggregate Functions
+-------------------
+
+You can use any :ref:`Aggregation Function<aggregation>` as a window function. Currently
+aggregate functions must use the deprecated
+:py:func:`datafusion.functions.window` API but this should be resolved in
+DataFusion 42.0 (`Issue Link <https://github.com/apache/datafusion-python/issues/833>`_). Here
+is an example that shows how to compare each pokemons’s attack power with the average attack
+power in its ``"Type 1"`` using the :py:func:`datafusion.functions.avg` function.
+
+.. ipython:: python
+    :okwarning:
+
+    df.select(
+        col('"Name"'),
+        col('"Attack"'),
+        col('"Type 1"'),
+        f.window("avg", [col('"Attack"')])
+            .partition_by(col('"Type 1"'))
+            .build()
+            .alias("Average Attack"),
     )
 
+Available Functions
+-------------------
+
 The possible window functions are:
 
 1. Rank Functions
-    - rank
-    - dense_rank
-    - row_number
-    - ntile
+    - :py:func:`datafusion.functions.rank`
+    - :py:func:`datafusion.functions.dense_rank`
+    - :py:func:`datafusion.functions.ntile`
+    - :py:func:`datafusion.functions.row_number`
 
 2. Analytical Functions
-    - cume_dist
-    - percent_rank
-    - lag
-    - lead
-    - first_value
-    - last_value
-    - nth_value
+    - :py:func:`datafusion.functions.cume_dist`
+    - :py:func:`datafusion.functions.percent_rank`
+    - :py:func:`datafusion.functions.lag`
+    - :py:func:`datafusion.functions.lead`
 
 3. Aggregate Functions
-    - All aggregate functions can be used as window functions.
+    - All :ref:`Aggregation Functions<aggregation>` can be used as window functions.
diff --git a/_static/theme_overrides.css b/_static/theme_overrides.css
index 1e972cc..aaa40fb 100644
--- a/_static/theme_overrides.css
+++ b/_static/theme_overrides.css
@@ -56,7 +56,7 @@ a.navbar-brand img {
 
 
 /* This is the bootstrap CSS style for "table-striped". Since the theme does
-not yet provide an easy way to configure this globaly, it easier to simply
+not yet provide an easy way to configure this globally, it easier to simply
 include this snippet here than updating each table in all rst files to
 add ":class: table-striped" */
 
diff --git a/autoapi/datafusion/catalog/index.html b/autoapi/datafusion/catalog/index.html
index 3bfcdcc..1662bed 100644
--- a/autoapi/datafusion/catalog/index.html
+++ b/autoapi/datafusion/catalog/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/context/index.html b/autoapi/datafusion/context/index.html
index 01307ef..da54866 100644
--- a/autoapi/datafusion/context/index.html
+++ b/autoapi/datafusion/context/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -1435,7 +1435,7 @@ engine.</p>
 </dd>
 </dl>
 <p>Example usage:</p>
-<p>The following example demostrates how to use the context to execute
+<p>The following example demonstrates how to use the context to execute
 a query against a CSV data source using the <code class="xref py py-class docutils literal notranslate"><span class="pre">DataFrame</span></code> API:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">datafusion</span> <span class="kn">import</span> <span class="n">SessionContext</span>
 
@@ -1890,7 +1890,7 @@ register it into the session using the given name.</p>
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.context.SessionContext.session_id">
 <span class="sig-name descname"><span class="pre">session_id</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#datafusion.context.SessionContext.session_id" title="Link to this definition">¶</a></dt>
-<dd><p>Retrun an id that uniquely identifies this <a class="reference internal" href="#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">SessionContext</span></code></a>.</p>
+<dd><p>Return an id that uniquely identifies this <a class="reference internal" href="#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">SessionContext</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
diff --git a/autoapi/datafusion/dataframe/index.html b/autoapi/datafusion/dataframe/index.html
index ef06ecd..866b46a 100644
--- a/autoapi/datafusion/dataframe/index.html
+++ b/autoapi/datafusion/dataframe/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/expr/index.html b/autoapi/datafusion/expr/index.html
index c0e1d8e..22b278b 100644
--- a/autoapi/datafusion/expr/index.html
+++ b/autoapi/datafusion/expr/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -623,6 +623,33 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.distinct">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.distinct()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.filter">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.filter()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.is_not_null">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.is_not_null()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.expr.Expr.is_null">
        <code class="docutils literal notranslate">
@@ -641,6 +668,33 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.null_treatment">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.null_treatment()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.order_by">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.order_by()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.partition_by">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.partition_by()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.expr.Expr.python_value">
        <code class="docutils literal notranslate">
@@ -713,6 +767,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.window_frame">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.window_frame()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.expr.Expr.__radd__">
        <code class="docutils literal notranslate">
@@ -1827,6 +1890,30 @@
 <p>This name will not include any CAST expressions.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.distinct">
+<span class="sig-name descname"><span class="pre">distinct</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">ExprFuncBuilder</span></span></span><a class="headerlink" href="#datafusion.expr.Expr.distinct" title="Link to this definition">¶</a></dt>
+<dd><p>Only evaluate distinct values for an aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.filter">
+<span class="sig-name descname"><span class="pre">filter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">Expr</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2 [...]
+<dd><p>Filter an aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.is_not_null">
+<span class="sig-name descname"><span class="pre">is_not_null</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.expr.Expr.is_not_null" title="Link to this definition">¶</a></dt>
+<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">True</span></code> if this expression is not null.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.expr.Expr.is_null">
 <span class="sig-name descname"><span class="pre">is_null</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.expr.Expr.is_null" title="Link to this definition">¶</a></dt>
@@ -1840,6 +1927,33 @@
 <p><code class="docutils literal notranslate"><span class="pre">value</span></code> must be a valid PyArrow scalar value or easily castable to one.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.null_treatment">
+<span class="sig-name descname"><span class="pre">null_treatment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">null_treatment</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">datafusion.common.NullTreatment</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><sp [...]
+<dd><p>Set the treatment for <code class="docutils literal notranslate"><span class="pre">null</span></code> values for a window or aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.order_by">
+<span class="sig-name descname"><span class="pre">order_by</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">exprs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">Expr</span></a></span></em><span class="sig-paren">)</span> <span cla [...]
+<dd><p>Set the ordering for a window or aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.partition_by">
+<span class="sig-name descname"><span class="pre">partition_by</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">partition_by</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">Expr</span></a></span></em><span class="sig-paren">)</span [...]
+<dd><p>Set the partitioning for a window function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.expr.Expr.python_value">
 <span class="sig-name descname"><span class="pre">python_value</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#datafusion.expr.Expr.python_value" title="Link to this definition">¶</a></dt>
@@ -1916,6 +2030,15 @@ SqlType Enum which this expression represents.</p>
 <p>Ex: <code class="docutils literal notranslate"><span class="pre">IsNotNull</span></code>, <code class="docutils literal notranslate"><span class="pre">Literal</span></code>, <code class="docutils literal notranslate"><span class="pre">BinaryExpr</span></code>, etc</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.window_frame">
+<span class="sig-name descname"><span class="pre">window_frame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">window_frame</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.expr.WindowFrame" title="datafusion.expr.WindowFrame"><span class="pre">WindowFrame</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return">< [...]
+<dd><p>Set the frame fora  window function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
 <dl class="py attribute">
 <dt class="sig sig-object py" id="datafusion.expr.Expr.__radd__">
 <span class="sig-name descname"><span class="pre">__radd__</span></span><a class="headerlink" href="#datafusion.expr.Expr.__radd__" title="Link to this definition">¶</a></dt>
@@ -1960,14 +2083,14 @@ SqlType Enum which this expression represents.</p>
 
 <dl class="py class">
 <dt class="sig sig-object py" id="datafusion.expr.WindowFrame">
-<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">datafusion.expr.</span></span><span class="sig-name descname"><span class="pre">WindowFrame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">units</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class=" [...]
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">datafusion.expr.</span></span><span class="sig-name descname"><span class="pre">WindowFrame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">units</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class=" [...]
 <dd><p>Defines a window frame for performing window operations.</p>
 <p>Construct a window frame using the given parameters.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters<span class="colon">:</span></dt>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>units</strong> – Should be one of <code class="docutils literal notranslate"><span class="pre">rows</span></code>, <code class="docutils literal notranslate"><span class="pre">range</span></code>, or <code class="docutils literal notranslate"><span class="pre">groups</span></code>.</p></li>
-<li><p><strong>start_bound</strong> – Sets the preceeding bound. Must be &gt;= 0. If none, this
+<li><p><strong>start_bound</strong> – Sets the preceding bound. Must be &gt;= 0. If none, this
 will be set to unbounded. If unit type is <code class="docutils literal notranslate"><span class="pre">groups</span></code>, this
 parameter must be set.</p></li>
 <li><p><strong>end_bound</strong> – Sets the following bound. Must be &gt;= 0. If none, this
diff --git a/autoapi/datafusion/functions/index.html b/autoapi/datafusion/functions/index.html
index 5e53dcc..d85c91e 100644
--- a/autoapi/datafusion/functions/index.html
+++ b/autoapi/datafusion/functions/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -1066,6 +1066,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.cume_dist">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       cume_dist()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.current_date">
      <code class="docutils literal notranslate">
@@ -1147,6 +1156,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.dense_rank">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       dense_rank()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.digest">
      <code class="docutils literal notranslate">
@@ -1291,6 +1309,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.lag">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       lag()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.last_value">
      <code class="docutils literal notranslate">
@@ -1309,6 +1336,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.lead">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       lead()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.left">
      <code class="docutils literal notranslate">
@@ -1732,6 +1768,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.ntile">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       ntile()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.nullif">
      <code class="docutils literal notranslate">
@@ -1768,6 +1813,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.percent_rank">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       percent_rank()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.pi">
      <code class="docutils literal notranslate">
@@ -1822,6 +1876,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.rank">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       rank()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.regexp_like">
      <code class="docutils literal notranslate">
@@ -1975,6 +2038,15 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.functions.row_number">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       row_number()
+      </span>
+     </code>
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.functions.rpad">
      <code class="docutils literal notranslate">
@@ -2528,10 +2600,10 @@
 <td><p>Computes the bitwise XOR of the argument.</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.bool_and" title="datafusion.functions.bool_and"><code class="xref py py-obj docutils literal notranslate"><span class="pre">bool_and</span></code></a>(→ datafusion.expr.Expr)</p></td>
-<td><p>Computes the boolean AND of the arugment.</p></td>
+<td><p>Computes the boolean AND of the argument.</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.bool_or" title="datafusion.functions.bool_or"><code class="xref py py-obj docutils literal notranslate"><span class="pre">bool_or</span></code></a>(→ datafusion.expr.Expr)</p></td>
-<td><p>Computes the boolean OR of the arguement.</p></td>
+<td><p>Computes the boolean OR of the argument.</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.btrim" title="datafusion.functions.btrim"><code class="xref py py-obj docutils literal notranslate"><span class="pre">btrim</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Removes all characters, spaces by default, from both sides of a string.</p></td>
@@ -2593,33 +2665,39 @@
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.covar_samp" title="datafusion.functions.covar_samp"><code class="xref py py-obj docutils literal notranslate"><span class="pre">covar_samp</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the sample covariance.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.current_date" title="datafusion.functions.current_date"><code class="xref py py-obj docutils literal notranslate"><span class="pre">current_date</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.cume_dist" title="datafusion.functions.cume_dist"><code class="xref py py-obj docutils literal notranslate"><span class="pre">cume_dist</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a cumulative distribution window function.</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.current_date" title="datafusion.functions.current_date"><code class="xref py py-obj docutils literal notranslate"><span class="pre">current_date</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns current UTC date as a Date32 value.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.current_time" title="datafusion.functions.current_time"><code class="xref py py-obj docutils literal notranslate"><span class="pre">current_time</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.current_time" title="datafusion.functions.current_time"><code class="xref py py-obj docutils literal notranslate"><span class="pre">current_time</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns current UTC time as a Time64 value.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.date_bin" title="datafusion.functions.date_bin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">date_bin</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.date_bin" title="datafusion.functions.date_bin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">date_bin</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Coerces an arbitrary timestamp to the start of the nearest specified interval.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.date_part" title="datafusion.functions.date_part"><code class="xref py py-obj docutils literal notranslate"><span class="pre">date_part</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.date_part" title="datafusion.functions.date_part"><code class="xref py py-obj docutils literal notranslate"><span class="pre">date_part</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Extracts a subfield from the date.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.date_trunc" title="datafusion.functions.date_trunc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">date_trunc</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.date_trunc" title="datafusion.functions.date_trunc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">date_trunc</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Truncates the date to a specified level of precision.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.datepart" title="datafusion.functions.datepart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">datepart</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.datepart" title="datafusion.functions.datepart"><code class="xref py py-obj docutils literal notranslate"><span class="pre">datepart</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Return a specified part of a date.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.datetrunc" title="datafusion.functions.datetrunc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">datetrunc</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.datetrunc" title="datafusion.functions.datetrunc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">datetrunc</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Truncates the date to a specified level of precision.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.decode" title="datafusion.functions.decode"><code class="xref py py-obj docutils literal notranslate"><span class="pre">decode</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.decode" title="datafusion.functions.decode"><code class="xref py py-obj docutils literal notranslate"><span class="pre">decode</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Decode the <code class="docutils literal notranslate"><span class="pre">input</span></code>, using the <code class="docutils literal notranslate"><span class="pre">encoding</span></code>. encoding can be base64 or hex.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.degrees" title="datafusion.functions.degrees"><code class="xref py py-obj docutils literal notranslate"><span class="pre">degrees</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.degrees" title="datafusion.functions.degrees"><code class="xref py py-obj docutils literal notranslate"><span class="pre">degrees</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Converts the argument from radians to degrees.</p></td>
 </tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.dense_rank" title="datafusion.functions.dense_rank"><code class="xref py py-obj docutils literal notranslate"><span class="pre">dense_rank</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a dense_rank window function.</p></td>
+</tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.digest" title="datafusion.functions.digest"><code class="xref py py-obj docutils literal notranslate"><span class="pre">digest</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the binary hash of an expression using the specified algorithm.</p></td>
 </tr>
@@ -2630,7 +2708,7 @@
 <td><p>Returns true if the <code class="docutils literal notranslate"><span class="pre">string</span></code> ends with the <code class="docutils literal notranslate"><span class="pre">suffix</span></code>, false otherwise.</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.exp" title="datafusion.functions.exp"><code class="xref py py-obj docutils literal notranslate"><span class="pre">exp</span></code></a>(→ datafusion.expr.Expr)</p></td>
-<td><p>Returns the exponential of the arugment.</p></td>
+<td><p>Returns the exponential of the argument.</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.factorial" title="datafusion.functions.factorial"><code class="xref py py-obj docutils literal notranslate"><span class="pre">factorial</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns the factorial of the argument.</p></td>
@@ -2668,12 +2746,18 @@
 <tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.iszero" title="datafusion.functions.iszero"><code class="xref py py-obj docutils literal notranslate"><span class="pre">iszero</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns true if a given number is +0.0 or -0.0 otherwise returns false.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.last_value" title="datafusion.functions.last_value"><code class="xref py py-obj docutils literal notranslate"><span class="pre">last_value</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.lag" title="datafusion.functions.lag"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lag</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a lag window function.</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.last_value" title="datafusion.functions.last_value"><code class="xref py py-obj docutils literal notranslate"><span class="pre">last_value</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns the last value in a group of values.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.lcm" title="datafusion.functions.lcm"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lcm</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.lcm" title="datafusion.functions.lcm"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lcm</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns the least common multiple.</p></td>
 </tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.lead" title="datafusion.functions.lead"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lead</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a lead window function.</p></td>
+</tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.left" title="datafusion.functions.left"><code class="xref py py-obj docutils literal notranslate"><span class="pre">left</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns the first <code class="docutils literal notranslate"><span class="pre">n</span></code> characters in the <code class="docutils literal notranslate"><span class="pre">string</span></code>.</p></td>
 </tr>
@@ -2792,7 +2876,7 @@
 <td><p>Make a date from year, month and day component parts.</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.max" title="datafusion.functions.max"><code class="xref py py-obj docutils literal notranslate"><span class="pre">max</span></code></a>(→ datafusion.expr.Expr)</p></td>
-<td><p>Returns the maximum value of the arugment.</p></td>
+<td><p>Returns the maximum value of the argument.</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.md5" title="datafusion.functions.md5"><code class="xref py py-obj docutils literal notranslate"><span class="pre">md5</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes an MD5 128-bit checksum for a string expression.</p></td>
@@ -2815,18 +2899,24 @@
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.now" title="datafusion.functions.now"><code class="xref py py-obj docutils literal notranslate"><span class="pre">now</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns the current timestamp in nanoseconds.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.nullif" title="datafusion.functions.nullif"><code class="xref py py-obj docutils literal notranslate"><span class="pre">nullif</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.ntile" title="datafusion.functions.ntile"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ntile</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a n-tile window function.</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.nullif" title="datafusion.functions.nullif"><code class="xref py py-obj docutils literal notranslate"><span class="pre">nullif</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns NULL if expr1 equals expr2; otherwise it returns expr1.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.octet_length" title="datafusion.functions.octet_length"><code class="xref py py-obj docutils literal notranslate"><span class="pre">octet_length</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.octet_length" title="datafusion.functions.octet_length"><code class="xref py py-obj docutils literal notranslate"><span class="pre">octet_length</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns the number of bytes of a string.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.order_by" title="datafusion.functions.order_by"><code class="xref py py-obj docutils literal notranslate"><span class="pre">order_by</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.order_by" title="datafusion.functions.order_by"><code class="xref py py-obj docutils literal notranslate"><span class="pre">order_by</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Creates a new sort expression.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.overlay" title="datafusion.functions.overlay"><code class="xref py py-obj docutils literal notranslate"><span class="pre">overlay</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.overlay" title="datafusion.functions.overlay"><code class="xref py py-obj docutils literal notranslate"><span class="pre">overlay</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Replace a substring with a new substring.</p></td>
 </tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.percent_rank" title="datafusion.functions.percent_rank"><code class="xref py py-obj docutils literal notranslate"><span class="pre">percent_rank</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a percent_rank window function.</p></td>
+</tr>
 <tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.pi" title="datafusion.functions.pi"><code class="xref py py-obj docutils literal notranslate"><span class="pre">pi</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns an approximate value of π.</p></td>
 </tr>
@@ -2845,57 +2935,63 @@
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.range" title="datafusion.functions.range"><code class="xref py py-obj docutils literal notranslate"><span class="pre">range</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Create a list of values in the range between start and stop.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regexp_like" title="datafusion.functions.regexp_like"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regexp_like</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.rank" title="datafusion.functions.rank"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rank</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a rank window function.</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regexp_like" title="datafusion.functions.regexp_like"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regexp_like</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Find if any regular expression (regex) matches exist.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regexp_match" title="datafusion.functions.regexp_match"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regexp_match</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regexp_match" title="datafusion.functions.regexp_match"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regexp_match</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Perform regular expression (regex) matching.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regexp_replace" title="datafusion.functions.regexp_replace"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regexp_replace</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regexp_replace" title="datafusion.functions.regexp_replace"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regexp_replace</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Replaces substring(s) matching a PCRE-like regular expression.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_avgx" title="datafusion.functions.regr_avgx"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_avgx</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_avgx" title="datafusion.functions.regr_avgx"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_avgx</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the average of the independent variable <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_avgy" title="datafusion.functions.regr_avgy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_avgy</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_avgy" title="datafusion.functions.regr_avgy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_avgy</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the average of the dependent variable <code class="docutils literal notranslate"><span class="pre">y</span></code>.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_count" title="datafusion.functions.regr_count"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_count</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_count" title="datafusion.functions.regr_count"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_count</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Counts the number of rows in which both expressions are not null.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_intercept" title="datafusion.functions.regr_intercept"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_intercept</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_intercept" title="datafusion.functions.regr_intercept"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_intercept</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the intercept from the linear regression.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_r2" title="datafusion.functions.regr_r2"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_r2</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_r2" title="datafusion.functions.regr_r2"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_r2</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the R-squared value from linear regression.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_slope" title="datafusion.functions.regr_slope"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_slope</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_slope" title="datafusion.functions.regr_slope"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_slope</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the slope from linear regression.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_sxx" title="datafusion.functions.regr_sxx"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_sxx</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_sxx" title="datafusion.functions.regr_sxx"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_sxx</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the sum of squares of the independent variable <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_sxy" title="datafusion.functions.regr_sxy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_sxy</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_sxy" title="datafusion.functions.regr_sxy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_sxy</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the sum of products of pairs of numbers.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.regr_syy" title="datafusion.functions.regr_syy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_syy</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.regr_syy" title="datafusion.functions.regr_syy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">regr_syy</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Computes the sum of squares of the dependent variable <code class="docutils literal notranslate"><span class="pre">y</span></code>.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.repeat" title="datafusion.functions.repeat"><code class="xref py py-obj docutils literal notranslate"><span class="pre">repeat</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.repeat" title="datafusion.functions.repeat"><code class="xref py py-obj docutils literal notranslate"><span class="pre">repeat</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Repeats the <code class="docutils literal notranslate"><span class="pre">string</span></code> to <code class="docutils literal notranslate"><span class="pre">n</span></code> times.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.replace" title="datafusion.functions.replace"><code class="xref py py-obj docutils literal notranslate"><span class="pre">replace</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.replace" title="datafusion.functions.replace"><code class="xref py py-obj docutils literal notranslate"><span class="pre">replace</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Replaces all occurrences of <code class="docutils literal notranslate"><span class="pre">from_val</span></code> with <code class="docutils literal notranslate"><span class="pre">to_val</span></code> in the <code class="docutils literal notranslate"><span class="pre">string</span></code>.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.reverse" title="datafusion.functions.reverse"><code class="xref py py-obj docutils literal notranslate"><span class="pre">reverse</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.reverse" title="datafusion.functions.reverse"><code class="xref py py-obj docutils literal notranslate"><span class="pre">reverse</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Reverse the string argument.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.right" title="datafusion.functions.right"><code class="xref py py-obj docutils literal notranslate"><span class="pre">right</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.right" title="datafusion.functions.right"><code class="xref py py-obj docutils literal notranslate"><span class="pre">right</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Returns the last <code class="docutils literal notranslate"><span class="pre">n</span></code> characters in the <code class="docutils literal notranslate"><span class="pre">string</span></code>.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.round" title="datafusion.functions.round"><code class="xref py py-obj docutils literal notranslate"><span class="pre">round</span></code></a>() → datafusion.expr.Expr)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.round" title="datafusion.functions.round"><code class="xref py py-obj docutils literal notranslate"><span class="pre">round</span></code></a>() → datafusion.expr.Expr)</p></td>
 <td><p>Round the argument to the nearest integer.</p></td>
 </tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.functions.row_number" title="datafusion.functions.row_number"><code class="xref py py-obj docutils literal notranslate"><span class="pre">row_number</span></code></a>(→ datafusion.expr.Expr)</p></td>
+<td><p>Create a row number window function.</p></td>
+</tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.functions.rpad" title="datafusion.functions.rpad"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rpad</span></code></a>(→ datafusion.expr.Expr)</p></td>
 <td><p>Add right padding to a string.</p></td>
 </tr>
@@ -3404,13 +3500,13 @@ be filled with the given <code class="docutils literal notranslate"><span class=
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.bool_and">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">bool_and</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusio [...]
-<dd><p>Computes the boolean AND of the arugment.</p>
+<dd><p>Computes the boolean AND of the argument.</p>
 </dd></dl>
 
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.bool_or">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">bool_or</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion [...]
-<dd><p>Computes the boolean OR of the arguement.</p>
+<dd><p>Computes the boolean OR of the argument.</p>
 </dd></dl>
 
 <dl class="py function">
@@ -3481,7 +3577,7 @@ detailed usage.</p>
 <dt class="sig sig-object py" id="datafusion.functions.concat_ws">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">concat_ws</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">separator</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class=" [...]
 <dd><p>Concatenates the list <code class="docutils literal notranslate"><span class="pre">args</span></code> with the separator.</p>
-<p><code class="docutils literal notranslate"><span class="pre">NULL</span></code> arugments are ignored. <code class="docutils literal notranslate"><span class="pre">separator</span></code> should not be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>.</p>
+<p><code class="docutils literal notranslate"><span class="pre">NULL</span></code> arguments are ignored. <code class="docutils literal notranslate"><span class="pre">separator</span></code> should not be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>.</p>
 </dd></dl>
 
 <dl class="py function">
@@ -3539,6 +3635,34 @@ detailed usage.</p>
 <dd><p>Computes the sample covariance.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.cume_dist">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">cume_dist</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">partition_by</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../expr/i [...]
+<dd><p>Create a cumulative distribution window function.</p>
+<p>This window function is similar to <a class="reference internal" href="#datafusion.functions.rank" title="datafusion.functions.rank"><code class="xref py py-func docutils literal notranslate"><span class="pre">rank()</span></code></a> except that the returned values
+are the ratio of the row number to the total numebr of rows. Here is an example of a
+dataframe with a window ordered by descending <code class="docutils literal notranslate"><span class="pre">points</span></code> and the associated
+cumulative distribution:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+-----------+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">cume_dist</span> <span class="o">|</span>
+<span class="o">+--------+-----------+</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mf">0.5</span>       <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mf">0.5</span>       <span class="o">|</span>
+<span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mf">0.75</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span> <span class="mf">1.0</span>       <span class="o">|</span>
+<span class="o">+--------+-----------+</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.current_date">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">current_date</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion.expr.Expr</span></ [...]
@@ -3595,6 +3719,33 @@ detailed usage.</p>
 <dd><p>Converts the argument from radians to degrees.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.dense_rank">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">dense_rank</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">partition_by</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../expr/ [...]
+<dd><p>Create a dense_rank window function.</p>
+<p>This window function is similar to <a class="reference internal" href="#datafusion.functions.rank" title="datafusion.functions.rank"><code class="xref py py-func docutils literal notranslate"><span class="pre">rank()</span></code></a> except that the returned values
+will be consecutive. Here is an example of a dataframe with a window ordered by
+descending <code class="docutils literal notranslate"><span class="pre">points</span></code> and the associated dense rank:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+------------+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">dense_rank</span> <span class="o">|</span>
+<span class="o">+--------+------------+</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">1</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">1</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mi">2</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span> <span class="mi">3</span>          <span class="o">|</span>
+<span class="o">+--------+------------+</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.digest">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">digest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusio [...]
@@ -3618,7 +3769,7 @@ blake2b, and blake3.</p>
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.exp">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">exp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion.exp [...]
-<dd><p>Returns the exponential of the arugment.</p>
+<dd><p>Returns the exponential of the argument.</p>
 </dd></dl>
 
 <dl class="py function">
@@ -3638,7 +3789,7 @@ blake2b, and blake3.</p>
 
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.first_value">
-<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">first_value</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafu [...]
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">first_value</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafu [...]
 <dd><p>Returns the first value in a group of values.</p>
 </dd></dl>
 
@@ -3699,10 +3850,45 @@ characters to lowercase.</p>
 <dd><p>Returns true if a given number is +0.0 or -0.0 otherwise returns false.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.lag">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">lag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion.exp [...]
+<dd><p>Create a lag window function.</p>
+<p>Lag operation will return the argument that is in the previous shift_offset-th row
+in the partition. For example <code class="docutils literal notranslate"><span class="pre">lag(col(&quot;b&quot;),</span> <span class="pre">shift_offset=3,</span> <span class="pre">default_value=5)</span></code>
+will return the 3rd previous value in column <code class="docutils literal notranslate"><span class="pre">b</span></code>. At the beginnig of the
+partition, where no values can be returned it will return the default value of 5.</p>
+<p>Here is an example of both the <code class="docutils literal notranslate"><span class="pre">lag</span></code> and <a class="reference internal" href="#datafusion.functions.lead" title="datafusion.functions.lead"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.lead()</span></code></a>
+functions on a simple DataFrame:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+------+-----+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">lead</span> <span class="o">|</span> <span class="n">lag</span> <span class="o">|</span>
+<span class="o">+--------+------+-----+</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">100</span>  <span class="o">|</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">50</span>   <span class="o">|</span> <span class="mi">100</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mi">25</span>   <span class="o">|</span> <span class="mi">100</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span>      <span class="o">|</span> <span class="mi">50</span>  <span class="o">|</span>
+<span class="o">+--------+------+-----+</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>arg</strong> – Value to return</p></li>
+<li><p><strong>shift_offset</strong> – Number of rows before the current row.</p></li>
+<li><p><strong>default_value</strong> – Value to return if shift_offet row does not exist.</p></li>
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.last_value">
-<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">last_value</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafus [...]
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">last_value</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafus [...]
 <dd><p>Returns the last value in a group of values.</p>
+<p>To set parameters on this expression, use <code class="docutils literal notranslate"><span class="pre">.order_by()</span></code>, <code class="docutils literal notranslate"><span class="pre">.distinct()</span></code>,
+<code class="docutils literal notranslate"><span class="pre">.filter()</span></code>, or <code class="docutils literal notranslate"><span class="pre">.null_treatment()</span></code>.</p>
 </dd></dl>
 
 <dl class="py function">
@@ -3711,6 +3897,41 @@ characters to lowercase.</p>
 <dd><p>Returns the least common multiple.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.lead">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">lead</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion.ex [...]
+<dd><p>Create a lead window function.</p>
+<p>Lead operation will return the argument that is in the next shift_offset-th row in
+the partition. For example <code class="docutils literal notranslate"><span class="pre">lead(col(&quot;b&quot;),</span> <span class="pre">shift_offset=3,</span> <span class="pre">default_value=5)</span></code> will
+return the 3rd following value in column <code class="docutils literal notranslate"><span class="pre">b</span></code>. At the end of the partition, where
+no futher values can be returned it will return the default value of 5.</p>
+<p>Here is an example of both the <code class="docutils literal notranslate"><span class="pre">lead</span></code> and <a class="reference internal" href="#datafusion.functions.lag" title="datafusion.functions.lag"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.lag()</span></code></a>
+functions on a simple DataFrame:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+------+-----+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">lead</span> <span class="o">|</span> <span class="n">lag</span> <span class="o">|</span>
+<span class="o">+--------+------+-----+</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">100</span>  <span class="o">|</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">50</span>   <span class="o">|</span> <span class="mi">100</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mi">25</span>   <span class="o">|</span> <span class="mi">100</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span>      <span class="o">|</span> <span class="mi">50</span>  <span class="o">|</span>
+<span class="o">+--------+------+-----+</span>
+</pre></div>
+</div>
+<p>To set window function parameters use the window builder approach described in the
+ref:<cite>_window_functions</cite> online documentation.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>arg</strong> – Value to return</p></li>
+<li><p><strong>shift_offset</strong> – Number of rows following the current row.</p></li>
+<li><p><strong>default_value</strong> – Value to return if shift_offet row does not exist.</p></li>
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.left">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">left</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion [...]
@@ -3981,7 +4202,7 @@ truncated (on the right).</p>
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.max">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">max</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion.exp [...]
-<dd><p>Returns the maximum value of the arugment.</p>
+<dd><p>Returns the maximum value of the argument.</p>
 </dd></dl>
 
 <dl class="py function">
@@ -4011,7 +4232,7 @@ truncated (on the right).</p>
 
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.named_struct">
-<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">named_struct</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"> [...]
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">named_struct</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p [...]
 <dd><p>Returns a struct with the given names and arguments pairs.</p>
 </dd></dl>
 
@@ -4028,6 +4249,37 @@ truncated (on the right).</p>
 <p>This will use the same value for all instances of now() in same statement.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.ntile">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">ntile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">groups</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">partition_by</span></span><span cla [...]
+<dd><p>Create a n-tile window function.</p>
+<p>This window function orders the window frame into a give number of groups based on
+the ordering criteria. It then returns which group the current row is assigned to.
+Here is an example of a dataframe with a window ordered by descending <code class="docutils literal notranslate"><span class="pre">points</span></code>
+and the associated n-tile function:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+-------+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">ntile</span> <span class="o">|</span>
+<span class="o">+--------+-------+</span>
+<span class="o">|</span> <span class="mi">120</span>    <span class="o">|</span> <span class="mi">1</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">1</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">80</span>     <span class="o">|</span> <span class="mi">2</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">60</span>     <span class="o">|</span> <span class="mi">2</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">40</span>     <span class="o">|</span> <span class="mi">3</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">20</span>     <span class="o">|</span> <span class="mi">3</span>     <span class="o">|</span>
+<span class="o">+--------+-------+</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>groups</strong> – Number of groups for the n-tile to be divided into.</p></li>
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.nullif">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">nullif</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">expr1</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusio [...]
@@ -4055,6 +4307,34 @@ truncated (on the right).</p>
 extends for <code class="docutils literal notranslate"><span class="pre">length</span></code> characters with new substring.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.percent_rank">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">percent_rank</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">partition_by</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../exp [...]
+<dd><p>Create a percent_rank window function.</p>
+<p>This window function is similar to <a class="reference internal" href="#datafusion.functions.rank" title="datafusion.functions.rank"><code class="xref py py-func docutils literal notranslate"><span class="pre">rank()</span></code></a> except that the returned values
+are the percentage from 0.0 to 1.0 from first to last. Here is an example of a
+dataframe with a window ordered by descending <code class="docutils literal notranslate"><span class="pre">points</span></code> and the associated percent
+rank:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+--------------+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">percent_rank</span> <span class="o">|</span>
+<span class="o">+--------+--------------+</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mf">0.0</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mf">0.0</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mf">0.666667</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span> <span class="mf">1.0</span>          <span class="o">|</span>
+<span class="o">+--------+--------------+</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.pi">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">pi</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion.expr.Expr</span></a></span>< [...]
@@ -4092,6 +4372,37 @@ extends for <code class="docutils literal notranslate"><span class="pre">length<
 <dd><p>Create a list of values in the range between start and stop.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.rank">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">rank</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">partition_by</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../expr/index. [...]
+<dd><p>Create a rank window function.</p>
+<p>Returns the rank based upon the window order. Consecutive equal values will receive
+the same rank, but the next different value will not be consecutive but rather the
+number of rows that preceed it plus one. This is similar to Olympic medals. If two
+people tie for gold, the next place is bronze. There would be no silver medal. Here
+is an example of a dataframe with a window ordered by descending <code class="docutils literal notranslate"><span class="pre">points</span></code> and the
+associated rank.</p>
+<p>You should set <code class="docutils literal notranslate"><span class="pre">order_by</span></code> to produce meaningful results:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+------+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">rank</span> <span class="o">|</span>
+<span class="o">+--------+------+</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mi">3</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span> <span class="mi">4</span>    <span class="o">|</span>
+<span class="o">+--------+------+</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.regexp_like">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">regexp_like</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">dat [...]
@@ -4207,6 +4518,32 @@ decimal places. You can specify a negative number of decimal places. For example
 <code class="docutils literal notranslate"><span class="pre">round(lit(125.2345),</span> <span class="pre">lit(-2))</span></code> would yield a value of <code class="docutils literal notranslate"><span class="pre">100.0</span></code>.</p>
 </dd></dl>
 
+<dl class="py function">
+<dt class="sig sig-object py" id="datafusion.functions.row_number">
+<span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">row_number</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">partition_by</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../expr/ [...]
+<dd><p>Create a row number window function.</p>
+<p>Returns the row number of the window function.</p>
+<p>Here is an example of the <code class="docutils literal notranslate"><span class="pre">row_number</span></code> on a simple DataFrame:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+--------+------------+</span>
+<span class="o">|</span> <span class="n">points</span> <span class="o">|</span> <span class="n">row</span> <span class="n">number</span> <span class="o">|</span>
+<span class="o">+--------+------------+</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">1</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="mi">2</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mi">3</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span> <span class="mi">4</span>          <span class="o">|</span>
+<span class="o">+--------+------------+</span>
+</pre></div>
+</div>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters<span class="colon">:</span></dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>partition_by</strong> – Expressions to partition the window frame on.</p></li>
+<li><p><strong>order_by</strong> – Set ordering within the window frame.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.functions.rpad">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">rpad</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../expr/index.html#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">datafusion [...]
@@ -4455,6 +4792,12 @@ detailed usage.</p>
 <dt class="sig sig-object py" id="datafusion.functions.window">
 <span class="sig-prename descclassname"><span class="pre">datafusion.functions.</span></span><span class="sig-name descname"><span class="pre">window</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><s [...]
 <dd><p>Creates a new Window function expression.</p>
+<p>This interface will soon be deprecated. Instead of using this interface,
+users should call the window functions directly. For example, to perform a
+lag use:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">functions</span><span class="o">.</span><span class="n">lag</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s2">&quot;a&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">partition_by</span><span class="p">(</span><span [...]
+</pre></div>
+</div>
 </dd></dl>
 
 </section>
diff --git a/autoapi/datafusion/index.html b/autoapi/datafusion/index.html
index 9bd509e..b0d90b3 100644
--- a/autoapi/datafusion/index.html
+++ b/autoapi/datafusion/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -752,6 +752,33 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.distinct">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.distinct()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.filter">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.filter()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.is_not_null">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.is_not_null()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.Expr.is_null">
        <code class="docutils literal notranslate">
@@ -770,6 +797,33 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.null_treatment">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.null_treatment()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.order_by">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.order_by()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.partition_by">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.partition_by()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.Expr.python_value">
        <code class="docutils literal notranslate">
@@ -842,6 +896,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.window_frame">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.window_frame()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.Expr.__radd__">
        <code class="docutils literal notranslate">
@@ -1581,7 +1644,7 @@ See <a class="reference external" href="https://datafusion.apache.org/python">ht
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.Accumulator.update">
 <em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">pyarrow.Array</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2 [...]
-<dd><p>Evalute an array of values and update state.</p>
+<dd><p>Evaluate an array of values and update state.</p>
 </dd></dl>
 
 </dd></dl>
@@ -1593,7 +1656,7 @@ See <a class="reference external" href="https://datafusion.apache.org/python">ht
 <p>Aggregate UDFs operate on a group of rows and return a single value. See
 also <a class="reference internal" href="#datafusion.ScalarUDF" title="datafusion.ScalarUDF"><code class="xref py py-class docutils literal notranslate"><span class="pre">ScalarUDF</span></code></a> for operating on a row by row basis.</p>
 <p>Instantiate a user defined aggregate function (UDAF).</p>
-<p>See <a class="reference internal" href="#datafusion.AggregateUDF.udaf" title="datafusion.AggregateUDF.udaf"><code class="xref py py-func docutils literal notranslate"><span class="pre">udaf()</span></code></a> for a convenience function and arugment
+<p>See <a class="reference internal" href="#datafusion.AggregateUDF.udaf" title="datafusion.AggregateUDF.udaf"><code class="xref py py-func docutils literal notranslate"><span class="pre">udaf()</span></code></a> for a convenience function and argument
 descriptions.</p>
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.AggregateUDF.__call__">
@@ -1838,6 +1901,30 @@ aggregation or window function calls.</p>
 <p>This name will not include any CAST expressions.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.distinct">
+<span class="sig-name descname"><span class="pre">distinct</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">ExprFuncBuilder</span></span></span><a class="headerlink" href="#datafusion.Expr.distinct" title="Link to this definition">¶</a></dt>
+<dd><p>Only evaluate distinct values for an aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.filter">
+<span class="sig-name descname"><span class="pre">filter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filter</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.Expr" title="datafusion.Expr"><span class="pre">Expr</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span [...]
+<dd><p>Filter an aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.is_not_null">
+<span class="sig-name descname"><span class="pre">is_not_null</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.Expr" title="datafusion.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.Expr.is_not_null" title="Link to this definition">¶</a></dt>
+<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">True</span></code> if this expression is not null.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.Expr.is_null">
 <span class="sig-name descname"><span class="pre">is_null</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.Expr" title="datafusion.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.Expr.is_null" title="Link to this definition">¶</a></dt>
@@ -1851,6 +1938,33 @@ aggregation or window function calls.</p>
 <p><code class="docutils literal notranslate"><span class="pre">value</span></code> must be a valid PyArrow scalar value or easily castable to one.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.null_treatment">
+<span class="sig-name descname"><span class="pre">null_treatment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">null_treatment</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">datafusion.common.NullTreatment</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><sp [...]
+<dd><p>Set the treatment for <code class="docutils literal notranslate"><span class="pre">null</span></code> values for a window or aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.order_by">
+<span class="sig-name descname"><span class="pre">order_by</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">exprs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.Expr" title="datafusion.Expr"><span class="pre">Expr</span></a></span></em><span class="sig-paren">)</span> <span class="sig-re [...]
+<dd><p>Set the ordering for a window or aggregate function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.partition_by">
+<span class="sig-name descname"><span class="pre">partition_by</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">partition_by</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.Expr" title="datafusion.Expr"><span class="pre">Expr</span></a></span></em><span class="sig-paren">)</span> <span cl [...]
+<dd><p>Set the partitioning for a window function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.Expr.python_value">
 <span class="sig-name descname"><span class="pre">python_value</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#datafusion.Expr.python_value" title="Link to this definition">¶</a></dt>
@@ -1927,6 +2041,15 @@ SqlType Enum which this expression represents.</p>
 <p>Ex: <code class="docutils literal notranslate"><span class="pre">IsNotNull</span></code>, <code class="docutils literal notranslate"><span class="pre">Literal</span></code>, <code class="docutils literal notranslate"><span class="pre">BinaryExpr</span></code>, etc</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.window_frame">
+<span class="sig-name descname"><span class="pre">window_frame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">window_frame</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#datafusion.WindowFrame" title="datafusion.WindowFrame"><span class="pre">WindowFrame</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class [...]
+<dd><p>Set the frame fora  window function.</p>
+<p>This function will create an <code class="xref py py-class docutils literal notranslate"><span class="pre">ExprFuncBuilder</span></code> that can be used to
+set parameters for either window or aggregate functions. If used on any other
+type of expression, an error will be generated when <code class="docutils literal notranslate"><span class="pre">build()</span></code> is called.</p>
+</dd></dl>
+
 <dl class="py attribute">
 <dt class="sig sig-object py" id="datafusion.Expr.__radd__">
 <span class="sig-name descname"><span class="pre">__radd__</span></span><a class="headerlink" href="#datafusion.Expr.__radd__" title="Link to this definition">¶</a></dt>
@@ -2508,14 +2631,14 @@ automatically created.</p>
 
 <dl class="py class">
 <dt class="sig sig-object py" id="datafusion.WindowFrame">
-<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">WindowFrame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">units</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-p [...]
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">WindowFrame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">units</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-p [...]
 <dd><p>Defines a window frame for performing window operations.</p>
 <p>Construct a window frame using the given parameters.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters<span class="colon">:</span></dt>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>units</strong> – Should be one of <code class="docutils literal notranslate"><span class="pre">rows</span></code>, <code class="docutils literal notranslate"><span class="pre">range</span></code>, or <code class="docutils literal notranslate"><span class="pre">groups</span></code>.</p></li>
-<li><p><strong>start_bound</strong> – Sets the preceeding bound. Must be &gt;= 0. If none, this
+<li><p><strong>start_bound</strong> – Sets the preceding bound. Must be &gt;= 0. If none, this
 will be set to unbounded. If unit type is <code class="docutils literal notranslate"><span class="pre">groups</span></code>, this
 parameter must be set.</p></li>
 <li><p><strong>end_bound</strong> – Sets the following bound. Must be &gt;= 0. If none, this
diff --git a/autoapi/datafusion/input/base/index.html b/autoapi/datafusion/input/base/index.html
index 481ea63..856c2fa 100644
--- a/autoapi/datafusion/input/base/index.html
+++ b/autoapi/datafusion/input/base/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/input/index.html b/autoapi/datafusion/input/index.html
index 1940cf6..1fe87e2 100644
--- a/autoapi/datafusion/input/index.html
+++ b/autoapi/datafusion/input/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/input/location/index.html b/autoapi/datafusion/input/location/index.html
index 38162d7..ba2f734 100644
--- a/autoapi/datafusion/input/location/index.html
+++ b/autoapi/datafusion/input/location/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/object_store/index.html b/autoapi/datafusion/object_store/index.html
index 397a51c..2fbd57c 100644
--- a/autoapi/datafusion/object_store/index.html
+++ b/autoapi/datafusion/object_store/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/record_batch/index.html b/autoapi/datafusion/record_batch/index.html
index 3885bda..cc27859 100644
--- a/autoapi/datafusion/record_batch/index.html
+++ b/autoapi/datafusion/record_batch/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/substrait/index.html b/autoapi/datafusion/substrait/index.html
index ae8bc69..1fe338e 100644
--- a/autoapi/datafusion/substrait/index.html
+++ b/autoapi/datafusion/substrait/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/autoapi/datafusion/udf/index.html b/autoapi/datafusion/udf/index.html
index dcc70f5..cc87a68 100644
--- a/autoapi/datafusion/udf/index.html
+++ b/autoapi/datafusion/udf/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -632,7 +632,7 @@
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.udf.Accumulator.update">
 <em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">pyarrow.Array</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2 [...]
-<dd><p>Evalute an array of values and update state.</p>
+<dd><p>Evaluate an array of values and update state.</p>
 </dd></dl>
 
 </dd></dl>
@@ -644,7 +644,7 @@
 <p>Aggregate UDFs operate on a group of rows and return a single value. See
 also <a class="reference internal" href="#datafusion.udf.ScalarUDF" title="datafusion.udf.ScalarUDF"><code class="xref py py-class docutils literal notranslate"><span class="pre">ScalarUDF</span></code></a> for operating on a row by row basis.</p>
 <p>Instantiate a user defined aggregate function (UDAF).</p>
-<p>See <a class="reference internal" href="#datafusion.udf.AggregateUDF.udaf" title="datafusion.udf.AggregateUDF.udaf"><code class="xref py py-func docutils literal notranslate"><span class="pre">udaf()</span></code></a> for a convenience function and arugment
+<p>See <a class="reference internal" href="#datafusion.udf.AggregateUDF.udaf" title="datafusion.udf.AggregateUDF.udaf"><code class="xref py py-func docutils literal notranslate"><span class="pre">udaf()</span></code></a> for a convenience function and argument
 descriptions.</p>
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.udf.AggregateUDF.__call__">
@@ -735,7 +735,7 @@ function.</p></li>
 
 <dl class="py class">
 <dt class="sig sig-object py" id="datafusion.udf.Volatility">
-<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">datafusion.udf.</span></span><span class="sig-name descname"><span class="pre">Volatility</span></span><a class="headerlink" href="#datafusion.udf.Volatility" title="Link to this definition">¶</a></dt>
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">datafusion.udf.</span></span><span class="sig-name descname"><span class="pre">Volatility</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n">< [...]
 <dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">enum.Enum</span></code></p>
 <p>Defines how stable or volatile a function is.</p>
 <p>When setting the volatility of a function, you can either pass this
diff --git a/autoapi/index.html b/autoapi/index.html
index e4a0e9d..4f6715b 100644
--- a/autoapi/index.html
+++ b/autoapi/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/contributor-guide/introduction.html b/contributor-guide/introduction.html
index 89357ad..387eb2e 100644
--- a/contributor-guide/introduction.html
+++ b/contributor-guide/introduction.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/genindex.html b/genindex.html
index 454ab70..557cc81 100644
--- a/genindex.html
+++ b/genindex.html
@@ -24,7 +24,7 @@
     <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -878,6 +878,8 @@
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.CrossJoin">CrossJoin (in module datafusion.expr)</a>
 </li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.ctx">ctx (datafusion.context.SessionContext attribute)</a>
+</li>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.cume_dist">cume_dist() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.current_date">current_date() (in module datafusion.functions)</a>
 </li>
@@ -1015,6 +1017,8 @@
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.decode">decode() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.degrees">degrees() (in module datafusion.functions)</a>
+</li>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.dense_rank">dense_rank() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.deregister_table">deregister_table() (datafusion.context.SessionContext method)</a>
 </li>
@@ -1039,7 +1043,13 @@
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Distinct">Distinct (in module datafusion.expr)</a>
 </li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.distinct">distinct() (datafusion.dataframe.DataFrame method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.Expr.distinct">(datafusion.Expr method)</a>
 </li>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.distinct">(datafusion.expr.Expr method)</a>
+</li>
+      </ul></li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.DropTable">DropTable (in module datafusion.expr)</a>
 </li>
   </ul></td>
@@ -1113,7 +1123,13 @@
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Filter">Filter (in module datafusion.expr)</a>
 </li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.filter">filter() (datafusion.dataframe.DataFrame method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.Expr.filter">(datafusion.Expr method)</a>
+</li>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.filter">(datafusion.expr.Expr method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.find_in_set">find_in_set() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.first_value">first_value() (in module datafusion.functions)</a>
@@ -1121,11 +1137,11 @@
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.flatten">flatten() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.floor">floor() (in module datafusion.functions)</a>
-</li>
-      <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.WindowFrameBound.frame_bound">frame_bound (datafusion.expr.WindowFrameBound attribute)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.WindowFrameBound.frame_bound">frame_bound (datafusion.expr.WindowFrameBound attribute)</a>
+</li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.from_arrow">from_arrow() (datafusion.context.SessionContext method)</a>
 </li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.from_arrow_table">from_arrow_table() (datafusion.context.SessionContext method)</a>
@@ -1208,14 +1224,20 @@
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.WindowFrameBound.is_following">is_following() (datafusion.expr.WindowFrameBound method)</a>
 </li>
-      <li><a href="autoapi/datafusion/index.html#datafusion.Expr.is_null">is_null() (datafusion.Expr method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Expr.is_not_null">is_not_null() (datafusion.Expr method)</a>
 
       <ul>
-        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.is_null">(datafusion.expr.Expr method)</a>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.is_not_null">(datafusion.expr.Expr method)</a>
 </li>
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Expr.is_null">is_null() (datafusion.Expr method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.is_null">(datafusion.expr.Expr method)</a>
+</li>
+      </ul></li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.WindowFrameBound.is_preceding">is_preceding() (datafusion.expr.WindowFrameBound method)</a>
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.WindowFrameBound.is_unbounded">is_unbounded() (datafusion.expr.WindowFrameBound method)</a>
@@ -1274,9 +1296,13 @@
 <h2 id="L">L</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.lag">lag() (in module datafusion.functions)</a>
+</li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.last_value">last_value() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.lcm">lcm() (in module datafusion.functions)</a>
+</li>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.lead">lead() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.left">left() (in module datafusion.functions)</a>
 </li>
@@ -1321,11 +1347,11 @@
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.list_push_back">list_push_back() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.list_push_front">list_push_front() (in module datafusion.functions)</a>
-</li>
-      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.list_remove">list_remove() (in module datafusion.functions)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.list_remove">list_remove() (in module datafusion.functions)</a>
+</li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.list_remove_all">list_remove_all() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.list_remove_n">list_remove_n() (in module datafusion.functions)</a>
@@ -1457,10 +1483,10 @@
       </ul></li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.nanvl">nanvl() (in module datafusion.functions)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Negative">Negative (in module datafusion.expr)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/record_batch/index.html#datafusion.record_batch.RecordBatchStream.next">next() (datafusion.record_batch.RecordBatchStream method)</a>
 
       <ul>
@@ -1471,6 +1497,14 @@
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.now">now() (in module datafusion.functions)</a>
 </li>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.ntile">ntile() (in module datafusion.functions)</a>
+</li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Expr.null_treatment">null_treatment() (datafusion.Expr method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.null_treatment">(datafusion.expr.Expr method)</a>
+</li>
+      </ul></li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.nullif">nullif() (in module datafusion.functions)</a>
 </li>
   </ul></td>
@@ -1491,8 +1525,14 @@
       </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.order_by">order_by() (in module datafusion.functions)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Expr.order_by">order_by() (datafusion.Expr method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.order_by">(datafusion.expr.Expr method)</a>
 </li>
+        <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.order_by">(in module datafusion.functions)</a>
+</li>
+      </ul></li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.CaseBuilder.otherwise">otherwise() (datafusion.expr.CaseBuilder method)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.overlay">overlay() (in module datafusion.functions)</a>
@@ -1503,18 +1543,26 @@
 <h2 id="P">P</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Expr.partition_by">partition_by() (datafusion.Expr method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.partition_by">(datafusion.expr.Expr method)</a>
+</li>
+      </ul></li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Partitioning">Partitioning (in module datafusion.expr)</a>
+</li>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.percent_rank">percent_rank() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.pi">pi() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Placeholder">Placeholder (in module datafusion.expr)</a>
 </li>
       <li><a href="autoapi/datafusion/substrait/index.html#datafusion.substrait.Plan">Plan (class in datafusion.substrait)</a>
-</li>
-      <li><a href="autoapi/datafusion/substrait/index.html#datafusion.substrait.Plan.plan_internal">plan_internal (datafusion.substrait.Plan attribute)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="autoapi/datafusion/substrait/index.html#datafusion.substrait.Plan.plan_internal">plan_internal (datafusion.substrait.Plan attribute)</a>
+</li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.pow">pow() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.power">power() (in module datafusion.functions)</a>
@@ -1540,6 +1588,8 @@
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.random">random() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.range">range() (in module datafusion.functions)</a>
+</li>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.rank">rank() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/record_batch/index.html#datafusion.record_batch.RecordBatchStream.rbs">rbs (datafusion.record_batch.RecordBatchStream attribute)</a>
 
@@ -1656,6 +1706,8 @@
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.right">right() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.round">round() (in module datafusion.functions)</a>
+</li>
+      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.row_number">row_number() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.rpad">rpad() (in module datafusion.functions)</a>
 </li>
@@ -1971,6 +2023,12 @@
 
       <ul>
         <li><a href="autoapi/datafusion/index.html#datafusion.WindowFrame.window_frame">(datafusion.WindowFrame attribute)</a>
+</li>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Expr.window_frame">window_frame() (datafusion.Expr method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.window_frame">(datafusion.expr.Expr method)</a>
 </li>
       </ul></li>
       <li><a href="autoapi/datafusion/index.html#datafusion.WindowFrame">WindowFrame (class in datafusion)</a>
diff --git a/index.html b/index.html
index 297c73a..2a7d1dd 100644
--- a/index.html
+++ b/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/objects.inv b/objects.inv
index 1e0a607..b6981eb 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/py-modindex.html b/py-modindex.html
index 4966cf8..d59214f 100644
--- a/py-modindex.html
+++ b/py-modindex.html
@@ -24,7 +24,7 @@
     <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/search.html b/search.html
index 2b5a3ee..9e78b9b 100644
--- a/search.html
+++ b/search.html
@@ -24,7 +24,7 @@
     <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/searchindex.js b/searchindex.js
index 8e43f74..c50d054 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"API Reference": [[13, null]], "Aggregation": [[17, null]], "Arrow": [[28, null]], "Attributes": [[3, "attributes"], [5, "attributes"], [9, "attributes"], [12, "attributes"]], "Avro": [[29, null]], "Basic Operations": [[18, null]], "Boolean": [[19, "boolean"]], "CSV": [[30, null]], "Classes": [[0, "classes"], [1, "classes"], [2, "classes"], [3, "classes"], [5, "classes"], [6, "classes"], [8, "classes"], [10, "classes"], [11, "classes"], [12, "classes"]], "C [...]
\ No newline at end of file
+Search.setIndex({"alltitles": {"API Reference": [[13, null]], "Aggregate Functions": [[25, "aggregate-functions"]], "Aggregation": [[17, null]], "Arrow": [[28, null]], "Attributes": [[3, "attributes"], [5, "attributes"], [9, "attributes"], [12, "attributes"]], "Available Functions": [[25, "available-functions"]], "Avro": [[29, null]], "Basic Operations": [[18, null]], "Boolean": [[19, "boolean"]], "CSV": [[30, null]], "Classes": [[0, "classes"], [1, "classes"], [2, "classes"], [3, "class [...]
\ No newline at end of file
diff --git a/user-guide/basics.html b/user-guide/basics.html
index 4830631..7dee547 100644
--- a/user-guide/basics.html
+++ b/user-guide/basics.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/common-operations/aggregations.html b/user-guide/common-operations/aggregations.html
index 48f15c0..f4afdcc 100644
--- a/user-guide/common-operations/aggregations.html
+++ b/user-guide/common-operations/aggregations.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -362,7 +362,7 @@
               <div>
                 
   <section id="aggregation">
-<h1>Aggregation<a class="headerlink" href="#aggregation" title="Link to this heading">¶</a></h1>
+<span id="id1"></span><h1>Aggregation<a class="headerlink" href="#aggregation" title="Link to this heading">¶</a></h1>
 <p>An aggregate or aggregation is a function where the values of multiple rows are processed together to form a single summary value.
 For performing an aggregation, DataFusion provides the <a class="reference internal" href="../../autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.aggregate" title="datafusion.dataframe.DataFrame.aggregate"><code class="xref py py-func docutils literal notranslate"><span class="pre">aggregate()</span></code></a></p>
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">1</span><span class="p">]:</span> <span class="kn">from</span> <span class="nn">datafusion</span> <span class="kn">import</span> <span class="n">SessionContext</span>
@@ -400,7 +400,7 @@ For performing an aggregation, DataFusion provides the <a class="reference inter
 <span class="o">+----------------------------+--------------------------+------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">approx_distinct</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> <span class="o">|</span> <span class="n">approx_median</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">d</span><span class="p">)</span> <span class="o">|</span> <span class="n">approx_percentile_cont</span><span class="p">(</span><span class="n">foo_ [...]
 <span class="o">+----------------------------+--------------------------+------------------------------------------------+</span>
-<span class="o">|</span> <span class="mi">8</span>                          <span class="o">|</span> <span class="mf">0.4324629160344956</span>       <span class="o">|</span> <span class="mf">0.4324629160344956</span>                             <span class="o">|</span>
+<span class="o">|</span> <span class="mi">8</span>                          <span class="o">|</span> <span class="mf">0.18318258799922482</span>      <span class="o">|</span> <span class="mf">0.18318258799922482</span>                            <span class="o">|</span>
 <span class="o">+----------------------------+--------------------------+------------------------------------------------+</span>
 </pre></div>
 </div>
@@ -409,28 +409,28 @@ the <code class="code docutils literal notranslate"><span class="pre">group_by</
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">12</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">aggregate</span><span class="p">([</span><span class="n">col_a</span><span class="p">],</span> <span class="p">[</span><span class="n">f</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">col_c</s [...]
 <span class="n">Out</span><span class="p">[</span><span class="mi">12</span><span class="p">]:</span> 
 <span class="n">DataFrame</span><span class="p">()</span>
-<span class="o">+-----+----------------+--------------------+----------------------+</span>
-<span class="o">|</span> <span class="n">a</span>   <span class="o">|</span> <span class="nb">sum</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> <span class="o">|</span> <span class="nb">max</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">d</span><span class="p">)</span>     <span class="o">|</span> <span class="nb">min</span><span class="p">(</span><s [...]
-<span class="o">+-----+----------------+--------------------+----------------------+</span>
-<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="mi">255</span>            <span class="o">|</span> <span class="mf">0.9099653871772082</span> <span class="o">|</span> <span class="mf">0.054149397012223544</span> <span class="o">|</span>
-<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="mi">112</span>            <span class="o">|</span> <span class="mf">0.5139738583272621</span> <span class="o">|</span> <span class="mf">0.4186091425839046</span>   <span class="o">|</span>
-<span class="o">+-----+----------------+--------------------+----------------------+</span>
+<span class="o">+-----+----------------+---------------------+---------------------+</span>
+<span class="o">|</span> <span class="n">a</span>   <span class="o">|</span> <span class="nb">sum</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> <span class="o">|</span> <span class="nb">max</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">d</span><span class="p">)</span>      <span class="o">|</span> <span class="nb">min</span><span class="p">(</span>< [...]
+<span class="o">+-----+----------------+---------------------+---------------------+</span>
+<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="mi">275</span>            <span class="o">|</span> <span class="mf">0.9722540742734894</span>  <span class="o">|</span> <span class="mf">0.08879517985092555</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="mi">47</span>             <span class="o">|</span> <span class="mf">0.29316636364425297</span> <span class="o">|</span> <span class="mf">0.10721512027143953</span> <span class="o">|</span>
+<span class="o">+-----+----------------+---------------------+---------------------+</span>
 </pre></div>
 </div>
 <p>More than one column can be used for grouping</p>
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">13</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">aggregate</span><span class="p">([</span><span class="n">col_a</span><span class="p">,</span> <span class="n">col_b</span><span class="p">],</span> <span class="p">[</span><span class="n">f</span><span class="o">.</span><span class="n">sum</ [...]
 <span class="n">Out</span><span class="p">[</span><span class="mi">13</span><span class="p">]:</span> 
 <span class="n">DataFrame</span><span class="p">()</span>
-<span class="o">+-----+-------+----------------+----------------------+----------------------+</span>
-<span class="o">|</span> <span class="n">a</span>   <span class="o">|</span> <span class="n">b</span>     <span class="o">|</span> <span class="nb">sum</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> <span class="o">|</span> <span class="nb">max</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">d</span><span class="p">)</span>       <span class="o">|</spa [...]
-<span class="o">+-----+-------+----------------+----------------------+----------------------+</span>
-<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="n">three</span> <span class="o">|</span> <span class="mi">59</span>             <span class="o">|</span> <span class="mf">0.5139738583272621</span>   <span class="o">|</span> <span class="mf">0.5139738583272621</span>   <span class="o">|</span>
-<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="n">three</span> <span class="o">|</span> <span class="mi">26</span>             <span class="o">|</span> <span class="mf">0.054149397012223544</span> <span class="o">|</span> <span class="mf">0.054149397012223544</span> <span class="o">|</span>
-<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="n">one</span>   <span class="o">|</span> <span class="mi">151</span>            <span class="o">|</span> <span class="mf">0.9047266102733398</span>   <span class="o">|</span> <span class="mf">0.7511496845644656</span>   <span class="o">|</span>
-<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="n">one</span>   <span class="o">|</span> <span class="mi">2</span>              <span class="o">|</span> <span class="mf">0.4251059153933998</span>   <span class="o">|</span> <span class="mf">0.4251059153933998</span>   <span class="o">|</span>
-<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="n">two</span>   <span class="o">|</span> <span class="mi">78</span>             <span class="o">|</span> <span class="mf">0.9099653871772082</span>   <span class="o">|</span> <span class="mf">0.188493695424385</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="n">two</span>   <span class="o">|</span> <span class="mi">51</span>             <span class="o">|</span> <span class="mf">0.4186091425839046</span>   <span class="o">|</span> <span class="mf">0.4186091425839046</span>   <span class="o">|</span>
-<span class="o">+-----+-------+----------------+----------------------+----------------------+</span>
+<span class="o">+-----+-------+----------------+---------------------+---------------------+</span>
+<span class="o">|</span> <span class="n">a</span>   <span class="o">|</span> <span class="n">b</span>     <span class="o">|</span> <span class="nb">sum</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> <span class="o">|</span> <span class="nb">max</span><span class="p">(</span><span class="n">foo_bar</span><span class="o">.</span><span class="n">d</span><span class="p">)</span>      <span class="o">|</span [...]
+<span class="o">+-----+-------+----------------+---------------------+---------------------+</span>
+<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="n">one</span>   <span class="o">|</span> <span class="mi">89</span>             <span class="o">|</span> <span class="mf">0.9722540742734894</span>  <span class="o">|</span> <span class="mf">0.08879517985092555</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="n">one</span>   <span class="o">|</span> <span class="mi">9</span>              <span class="o">|</span> <span class="mf">0.29316636364425297</span> <span class="o">|</span> <span class="mf">0.29316636364425297</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="n">two</span>   <span class="o">|</span> <span class="mi">105</span>            <span class="o">|</span> <span class="mf">0.7048395640006924</span>  <span class="o">|</span> <span class="mf">0.6404562273785752</span>  <span class="o">|</span>
+<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="n">two</span>   <span class="o">|</span> <span class="mi">32</span>             <span class="o">|</span> <span class="mf">0.10721512027143953</span> <span class="o">|</span> <span class="mf">0.10721512027143953</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">bar</span> <span class="o">|</span> <span class="n">three</span> <span class="o">|</span> <span class="mi">6</span>              <span class="o">|</span> <span class="mf">0.18318258799922482</span> <span class="o">|</span> <span class="mf">0.18318258799922482</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">foo</span> <span class="o">|</span> <span class="n">three</span> <span class="o">|</span> <span class="mi">81</span>             <span class="o">|</span> <span class="mf">0.13603826301022437</span> <span class="o">|</span> <span class="mf">0.13603826301022437</span> <span class="o">|</span>
+<span class="o">+-----+-------+----------------+---------------------+---------------------+</span>
 </pre></div>
 </div>
 </section>
diff --git a/user-guide/common-operations/basic-info.html b/user-guide/common-operations/basic-info.html
index fe59ec7..ea4c7d5 100644
--- a/user-guide/common-operations/basic-info.html
+++ b/user-guide/common-operations/basic-info.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -384,11 +384,11 @@
 <span class="o">+-----+---------+--------+--------+</span>
 <span class="o">|</span> <span class="n">nrs</span> <span class="o">|</span> <span class="n">names</span>   <span class="o">|</span> <span class="n">random</span> <span class="o">|</span> <span class="n">groups</span> <span class="o">|</span>
 <span class="o">+-----+---------+--------+--------+</span>
-<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span>  <span class="o">|</span> <span class="mi">791</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>    <span class="o">|</span> <span class="mi">383</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">3</span>   <span class="o">|</span> <span class="n">java</span>    <span class="o">|</span> <span class="mi">303</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">4</span>   <span class="o">|</span> <span class="n">haskell</span> <span class="o">|</span> <span class="mi">697</span>    <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">5</span>   <span class="o">|</span> <span class="n">go</span>      <span class="o">|</span> <span class="mi">529</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span>  <span class="o">|</span> <span class="mi">147</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>    <span class="o">|</span> <span class="mi">52</span>     <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">3</span>   <span class="o">|</span> <span class="n">java</span>    <span class="o">|</span> <span class="mi">473</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">4</span>   <span class="o">|</span> <span class="n">haskell</span> <span class="o">|</span> <span class="mi">395</span>    <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">5</span>   <span class="o">|</span> <span class="n">go</span>      <span class="o">|</span> <span class="mi">954</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
 <span class="o">+-----+---------+--------+--------+</span>
 </pre></div>
 </div>
@@ -399,8 +399,8 @@
 <span class="o">+-----+--------+--------+--------+</span>
 <span class="o">|</span> <span class="n">nrs</span> <span class="o">|</span> <span class="n">names</span>  <span class="o">|</span> <span class="n">random</span> <span class="o">|</span> <span class="n">groups</span> <span class="o">|</span>
 <span class="o">+-----+--------+--------+--------+</span>
-<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span> <span class="o">|</span> <span class="mi">791</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>   <span class="o">|</span> <span class="mi">383</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span> <span class="o">|</span> <span class="mi">147</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>   <span class="o">|</span> <span class="mi">52</span>     <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
 <span class="o">+-----+--------+--------+--------+</span>
 </pre></div>
 </div>
@@ -418,11 +418,11 @@ passing them to an Arrow table, and then converting them to a pandas DataFrame.<
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">8</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">to_pandas</span><span class="p">()</span>
 <span class="n">Out</span><span class="p">[</span><span class="mi">8</span><span class="p">]:</span> 
    <span class="n">nrs</span>    <span class="n">names</span>  <span class="n">random</span> <span class="n">groups</span>
-<span class="mi">0</span>    <span class="mi">1</span>   <span class="n">python</span>     <span class="mi">791</span>      <span class="n">A</span>
-<span class="mi">1</span>    <span class="mi">2</span>     <span class="n">ruby</span>     <span class="mi">383</span>      <span class="n">A</span>
-<span class="mi">2</span>    <span class="mi">3</span>     <span class="n">java</span>     <span class="mi">303</span>      <span class="n">B</span>
-<span class="mi">3</span>    <span class="mi">4</span>  <span class="n">haskell</span>     <span class="mi">697</span>      <span class="n">C</span>
-<span class="mi">4</span>    <span class="mi">5</span>       <span class="n">go</span>     <span class="mi">529</span>      <span class="n">B</span>
+<span class="mi">0</span>    <span class="mi">1</span>   <span class="n">python</span>     <span class="mi">147</span>      <span class="n">A</span>
+<span class="mi">1</span>    <span class="mi">2</span>     <span class="n">ruby</span>      <span class="mi">52</span>      <span class="n">A</span>
+<span class="mi">2</span>    <span class="mi">3</span>     <span class="n">java</span>     <span class="mi">473</span>      <span class="n">B</span>
+<span class="mi">3</span>    <span class="mi">4</span>  <span class="n">haskell</span>     <span class="mi">395</span>      <span class="n">C</span>
+<span class="mi">4</span>    <span class="mi">5</span>       <span class="n">go</span>     <span class="mi">954</span>      <span class="n">B</span>
 </pre></div>
 </div>
 <p><a class="reference internal" href="../../autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.describe" title="datafusion.dataframe.DataFrame.describe"><code class="xref py py-func docutils literal notranslate"><span class="pre">describe()</span></code></a> shows a quick statistic summary of your data:</p>
@@ -434,11 +434,11 @@ passing them to an Arrow table, and then converting them to a pandas DataFrame.<
 <span class="o">+------------+--------------------+-------+--------------------+--------+</span>
 <span class="o">|</span> <span class="n">count</span>      <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="mi">5</span>     <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="mi">5</span>      <span class="o">|</span>
 <span class="o">|</span> <span class="n">null_count</span> <span class="o">|</span> <span class="mf">0.0</span>                <span class="o">|</span> <span class="mi">0</span>     <span class="o">|</span> <span class="mf">0.0</span>                <span class="o">|</span> <span class="mi">0</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="n">mean</span>       <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">540.6</span>              <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
-<span class="o">|</span> <span class="n">std</span>        <span class="o">|</span> <span class="mf">1.5811388300841898</span> <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">205.29685823217073</span> <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
-<span class="o">|</span> <span class="nb">min</span>        <span class="o">|</span> <span class="mf">1.0</span>                <span class="o">|</span> <span class="n">go</span>    <span class="o">|</span> <span class="mf">303.0</span>              <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="nb">max</span>        <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="n">ruby</span>  <span class="o">|</span> <span class="mf">791.0</span>              <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="n">median</span>     <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">529.0</span>              <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
+<span class="o">|</span> <span class="n">mean</span>       <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">404.2</span>              <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
+<span class="o">|</span> <span class="n">std</span>        <span class="o">|</span> <span class="mf">1.5811388300841898</span> <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">352.59566077874524</span> <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
+<span class="o">|</span> <span class="nb">min</span>        <span class="o">|</span> <span class="mf">1.0</span>                <span class="o">|</span> <span class="n">go</span>    <span class="o">|</span> <span class="mf">52.0</span>               <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="nb">max</span>        <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="n">ruby</span>  <span class="o">|</span> <span class="mf">954.0</span>              <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="n">median</span>     <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">395.0</span>              <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
 <span class="o">+------------+--------------------+-------+--------------------+--------+</span>
 </pre></div>
 </div>
diff --git a/user-guide/common-operations/expressions.html b/user-guide/common-operations/expressions.html
index 4e94620..fbd7906 100644
--- a/user-guide/common-operations/expressions.html
+++ b/user-guide/common-operations/expressions.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -389,7 +389,7 @@
   <section id="expressions">
 <span id="id1"></span><h1>Expressions<a class="headerlink" href="#expressions" title="Link to this heading">¶</a></h1>
 <p>In DataFusion an expression is an abstraction that represents a computation.
-Expressions are used as the primary inputs and ouputs for most functions within
+Expressions are used as the primary inputs and outputs for most functions within
 DataFusion. As such, expressions can be combined to create expression trees, a
 concept shared across most compilers and databases.</p>
 <section id="column">
diff --git a/user-guide/common-operations/functions.html b/user-guide/common-operations/functions.html
index 9ee6fa6..c2f3391 100644
--- a/user-guide/common-operations/functions.html
+++ b/user-guide/common-operations/functions.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -405,7 +405,7 @@ In here we will cover some of the more popular use cases. If you want to view al
    <span class="o">...</span><span class="p">:</span> <span class="s2">&quot;pokemon.csv&quot;</span><span class="p">,</span>
    <span class="o">...</span><span class="p">:</span> <span class="p">)</span>
    <span class="o">...</span><span class="p">:</span> 
-<span class="n">Out</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span> <span class="p">(</span><span class="s1">&#39;pokemon.csv&#39;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">http</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">HTTPMessage</span> <span class="n">at</span> <span class="mh">0x7f8e60f05d10</span><span class="o">&gt;</span><span class="p">)</span>
+<span class="n">Out</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span> <span class="p">(</span><span class="s1">&#39;pokemon.csv&#39;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">http</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">HTTPMessage</span> <span class="n">at</span> <span class="mh">0x7f3a2a025950</span><span class="o">&gt;</span><span class="p">)</span>
 
 <span class="n">In</span> <span class="p">[</span><span class="mi">4</span><span class="p">]:</span> <span class="n">ctx</span> <span class="o">=</span> <span class="n">SessionContext</span><span class="p">()</span>
 
@@ -479,16 +479,16 @@ In here we will cover some of the more popular use cases. If you want to view al
 <span class="o">+--------------------------------+</span>
 <span class="o">|</span> <span class="n">now</span><span class="p">()</span>                          <span class="o">|</span>
 <span class="o">+--------------------------------+</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">08</span><span class="o">-</span><span class="mi">30</span><span class="n">T21</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="mf">40.062457495</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2024</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="n">T14</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mf">37.438416328</span><span class="n">Z</span> <span class="o">|</span>
 <span class="o">+--------------------------------+</span>
 </pre></div>
 </div>
diff --git a/user-guide/common-operations/index.html b/user-guide/common-operations/index.html
index fb0f2fe..3be7ae9 100644
--- a/user-guide/common-operations/index.html
+++ b/user-guide/common-operations/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -391,7 +391,12 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="aggregations.html">Aggregation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="windows.html">Window Functions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="windows.html">Window Functions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="windows.html#setting-parameters">Setting Parameters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="windows.html#aggregate-functions">Aggregate Functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="windows.html#available-functions">Available Functions</a></li>
+</ul>
+</li>
 <li class="toctree-l1"><a class="reference internal" href="udf-and-udfa.html">User Defined Functions</a></li>
 </ul>
 </div>
diff --git a/user-guide/common-operations/joins.html b/user-guide/common-operations/joins.html
index 617be98..3a0a6e9 100644
--- a/user-guide/common-operations/joins.html
+++ b/user-guide/common-operations/joins.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -433,8 +433,8 @@ will be included in the resulting DataFrame.</p>
 <span class="o">+-------------+----------+----+-----------+</span>
 <span class="o">|</span> <span class="n">customer_id</span> <span class="o">|</span> <span class="n">customer</span> <span class="o">|</span> <span class="nb">id</span> <span class="o">|</span> <span class="n">name</span>      <span class="o">|</span>
 <span class="o">+-------------+----------+----+-----------+</span>
-<span class="o">|</span> <span class="mi">1</span>           <span class="o">|</span> <span class="n">Alice</span>    <span class="o">|</span> <span class="mi">1</span>  <span class="o">|</span> <span class="n">CityCabs</span>  <span class="o">|</span>
 <span class="o">|</span> <span class="mi">2</span>           <span class="o">|</span> <span class="n">Bob</span>      <span class="o">|</span> <span class="mi">2</span>  <span class="o">|</span> <span class="n">MetroRide</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1</span>           <span class="o">|</span> <span class="n">Alice</span>    <span class="o">|</span> <span class="mi">1</span>  <span class="o">|</span> <span class="n">CityCabs</span>  <span class="o">|</span>
 <span class="o">+-------------+----------+----+-----------+</span>
 </pre></div>
 </div>
@@ -452,9 +452,9 @@ values for the corresponding columns.</p>
 <span class="o">+-------------+----------+----+-----------+</span>
 <span class="o">|</span> <span class="n">customer_id</span> <span class="o">|</span> <span class="n">customer</span> <span class="o">|</span> <span class="nb">id</span> <span class="o">|</span> <span class="n">name</span>      <span class="o">|</span>
 <span class="o">+-------------+----------+----+-----------+</span>
+<span class="o">|</span> <span class="mi">1</span>           <span class="o">|</span> <span class="n">Alice</span>    <span class="o">|</span> <span class="mi">1</span>  <span class="o">|</span> <span class="n">CityCabs</span>  <span class="o">|</span>
 <span class="o">|</span> <span class="mi">2</span>           <span class="o">|</span> <span class="n">Bob</span>      <span class="o">|</span> <span class="mi">2</span>  <span class="o">|</span> <span class="n">MetroRide</span> <span class="o">|</span>
 <span class="o">|</span> <span class="mi">3</span>           <span class="o">|</span> <span class="n">Charlie</span>  <span class="o">|</span>    <span class="o">|</span>           <span class="o">|</span>
-<span class="o">|</span> <span class="mi">1</span>           <span class="o">|</span> <span class="n">Alice</span>    <span class="o">|</span> <span class="mi">1</span>  <span class="o">|</span> <span class="n">CityCabs</span>  <span class="o">|</span>
 <span class="o">+-------------+----------+----+-----------+</span>
 </pre></div>
 </div>
@@ -487,8 +487,8 @@ omitting duplicates with multiple matches in the right table.</p>
 <span class="o">+-------------+----------+</span>
 <span class="o">|</span> <span class="n">customer_id</span> <span class="o">|</span> <span class="n">customer</span> <span class="o">|</span>
 <span class="o">+-------------+----------+</span>
-<span class="o">|</span> <span class="mi">2</span>           <span class="o">|</span> <span class="n">Bob</span>      <span class="o">|</span>
 <span class="o">|</span> <span class="mi">1</span>           <span class="o">|</span> <span class="n">Alice</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2</span>           <span class="o">|</span> <span class="n">Bob</span>      <span class="o">|</span>
 <span class="o">+-------------+----------+</span>
 </pre></div>
 </div>
diff --git a/user-guide/common-operations/select-and-filter.html b/user-guide/common-operations/select-and-filter.html
index c2d2676..e17bbc9 100644
--- a/user-guide/common-operations/select-and-filter.html
+++ b/user-guide/common-operations/select-and-filter.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -373,7 +373,7 @@
 <span class="n">In</span> <span class="p">[</span><span class="mi">3</span><span class="p">]:</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">urlretrieve</span><span class="p">(</span><span class="s2">&quot;https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2021-01.parquet&quot;</span><span class="p">,</span>
    <span class="o">...</span><span class="p">:</span>                            <span class="s2">&quot;yellow_trip_data.parquet&quot;</span><span class="p">)</span>
    <span class="o">...</span><span class="p">:</span> 
-<span class="n">Out</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span> <span class="p">(</span><span class="s1">&#39;yellow_trip_data.parquet&#39;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">http</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">HTTPMessage</span> <span class="n">at</span> <span class="mh">0x7f8e60f47dd0</span><span class="o">&gt;</span><span class="p">)</span>
+<span class="n">Out</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span> <span class="p">(</span><span class="s1">&#39;yellow_trip_data.parquet&#39;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">http</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">HTTPMessage</span> <span class="n">at</span> <span class="mh">0x7f3a20f42110</span><span class="o">&gt;</span><span class="p">)</span>
 
 <span class="n">In</span> <span class="p">[</span><span class="mi">4</span><span class="p">]:</span> <span class="n">ctx</span> <span class="o">=</span> <span class="n">SessionContext</span><span class="p">()</span>
 
diff --git a/user-guide/common-operations/udf-and-udfa.html b/user-guide/common-operations/udf-and-udfa.html
index 5914656..24ce24e 100644
--- a/user-guide/common-operations/udf-and-udfa.html
+++ b/user-guide/common-operations/udf-and-udfa.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/common-operations/windows.html b/user-guide/common-operations/windows.html
index f81d314..fd713a9 100644
--- a/user-guide/common-operations/windows.html
+++ b/user-guide/common-operations/windows.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
@@ -339,9 +339,51 @@
               
               <div class="toc-item">
                 
+<div class="tocsection onthispage pt-5 pb-3">
+    <i class="fas fa-list"></i> On this page
+</div>
 
 <nav id="bd-toc-nav">
-    
+    <ul class="visible nav section-nav flex-column">
+ <li class="toc-h2 nav-item toc-entry">
+  <a class="reference internal nav-link" href="#setting-parameters">
+   Setting Parameters
+  </a>
+  <ul class="visible nav section-nav flex-column">
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#ordering">
+     Ordering
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#partitions">
+     Partitions
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#window-frame">
+     Window Frame
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#null-treatment">
+     Null Treatment
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toc-h2 nav-item toc-entry">
+  <a class="reference internal nav-link" href="#aggregate-functions">
+   Aggregate Functions
+  </a>
+ </li>
+ <li class="toc-h2 nav-item toc-entry">
+  <a class="reference internal nav-link" href="#available-functions">
+   Available Functions
+  </a>
+ </li>
+</ul>
+
 </nav>
               </div>
               
@@ -362,10 +404,11 @@
               <div>
                 
   <section id="window-functions">
-<h1>Window Functions<a class="headerlink" href="#window-functions" title="Link to this heading">¶</a></h1>
-<p>In this section you will learn about window functions. A window function utilizes values from one or multiple rows to
-produce a result for each individual row, unlike an aggregate function that provides a single value for multiple rows.</p>
-<p>The functionality of window functions in DataFusion is supported by the dedicated <a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.window" title="datafusion.functions.window"><code class="xref py py-func docutils literal notranslate"><span class="pre">window()</span></code></a> function.</p>
+<span id="id1"></span><h1>Window Functions<a class="headerlink" href="#window-functions" title="Link to this heading">¶</a></h1>
+<p>In this section you will learn about window functions. A window function utilizes values from one or
+multiple rows to produce a result for each individual row, unlike an aggregate function that
+provides a single value for multiple rows.</p>
+<p>The window functions are availble in the <a class="reference internal" href="../../autoapi/datafusion/functions/index.html#module-datafusion.functions" title="datafusion.functions"><code class="xref py py-mod docutils literal notranslate"><span class="pre">functions</span></code></a> module.</p>
 <p>We’ll use the pokemon dataset (from Ritchie Vink) in the following examples.</p>
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">1</span><span class="p">]:</span> <span class="kn">import</span> <span class="nn">urllib.request</span>
 
@@ -380,108 +423,285 @@ produce a result for each individual row, unlike an aggregate function that prov
    <span class="o">...</span><span class="p">:</span>     <span class="s2">&quot;pokemon.csv&quot;</span><span class="p">,</span>
    <span class="o">...</span><span class="p">:</span> <span class="p">)</span>
    <span class="o">...</span><span class="p">:</span> 
-<span class="n">Out</span><span class="p">[</span><span class="mi">5</span><span class="p">]:</span> <span class="p">(</span><span class="s1">&#39;pokemon.csv&#39;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">http</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">HTTPMessage</span> <span class="n">at</span> <span class="mh">0x7f8e60fc6f10</span><span class="o">&gt;</span><span class="p">)</span>
+<span class="n">Out</span><span class="p">[</span><span class="mi">5</span><span class="p">]:</span> <span class="p">(</span><span class="s1">&#39;pokemon.csv&#39;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">http</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">HTTPMessage</span> <span class="n">at</span> <span class="mh">0x7f3a20f51590</span><span class="o">&gt;</span><span class="p">)</span>
 
 <span class="n">In</span> <span class="p">[</span><span class="mi">6</span><span class="p">]:</span> <span class="n">ctx</span> <span class="o">=</span> <span class="n">SessionContext</span><span class="p">()</span>
 
 <span class="n">In</span> <span class="p">[</span><span class="mi">7</span><span class="p">]:</span> <span class="n">df</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">&quot;pokemon.csv&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
-<p>Here is an example that shows how to compare each pokemons’s attack power with the average attack power in its <code class="docutils literal notranslate"><span class="pre">&quot;Type</span> <span class="pre">1&quot;</span></code></p>
+<p>Here is an example that shows how you can compare each pokemon’s speed to the speed of the
+previous row in the DataFrame.</p>
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">8</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span>
    <span class="o">...</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Name&quot;&#39;</span><span class="p">),</span>
-   <span class="o">...</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">),</span>
-   <span class="o">...</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span>
-   <span class="o">...</span><span class="p">:</span>         <span class="n">f</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;avg&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">)],</span> <span class="n">partition_by</span><span class="o">=</span><span class="p">[</span><span class="n">col</span><sp [...]
-   <span class="o">...</span><span class="p">:</span>         <span class="s2">&quot;Average Attack&quot;</span><span class="p">,</span>
-   <span class="o">...</span><span class="p">:</span>     <span class="p">)</span>
+   <span class="o">...</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Speed&quot;&#39;</span><span class="p">),</span>
+   <span class="o">...</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">lag</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Speed&quot;&#39;</span><span class="p">))</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">&quot;Previous Speed&quot;</span><span class="p">)</span>
    <span class="o">...</span><span class="p">:</span> <span class="p">)</span>
    <span class="o">...</span><span class="p">:</span> 
 <span class="n">Out</span><span class="p">[</span><span class="mi">8</span><span class="p">]:</span> 
 <span class="n">DataFrame</span><span class="p">()</span>
-<span class="o">+------------+--------+--------------------+</span>
-<span class="o">|</span> <span class="n">Name</span>       <span class="o">|</span> <span class="n">Attack</span> <span class="o">|</span> <span class="n">Average</span> <span class="n">Attack</span>     <span class="o">|</span>
-<span class="o">+------------+--------+--------------------+</span>
-<span class="o">|</span> <span class="n">Jynx</span>       <span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mf">50.0</span>               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Articuno</span>   <span class="o">|</span> <span class="mi">85</span>     <span class="o">|</span> <span class="mf">67.5</span>               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Farfetch</span><span class="s1">&#39;d | 65     | 65.0               |</span>
-<span class="o">|</span> <span class="n">Jigglypuff</span> <span class="o">|</span> <span class="mi">45</span>     <span class="o">|</span> <span class="mf">55.0</span>               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Rattata</span>    <span class="o">|</span> <span class="mi">56</span>     <span class="o">|</span> <span class="mf">55.333333333333336</span> <span class="o">|</span>
-<span class="o">|</span> <span class="n">Raticate</span>   <span class="o">|</span> <span class="mi">81</span>     <span class="o">|</span> <span class="mf">61.75</span>              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Spearow</span>    <span class="o">|</span> <span class="mi">60</span>     <span class="o">|</span> <span class="mf">61.4</span>               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Fearow</span>     <span class="o">|</span> <span class="mi">90</span>     <span class="o">|</span> <span class="mf">66.16666666666667</span>  <span class="o">|</span>
-<span class="o">|</span> <span class="n">Doduo</span>      <span class="o">|</span> <span class="mi">85</span>     <span class="o">|</span> <span class="mf">68.85714285714286</span>  <span class="o">|</span>
-<span class="o">|</span> <span class="n">Wigglytuff</span> <span class="o">|</span> <span class="mi">70</span>     <span class="o">|</span> <span class="mf">69.0</span>               <span class="o">|</span>
-<span class="o">+------------+--------+--------------------+</span>
+<span class="o">+---------------------------+-------+----------------+</span>
+<span class="o">|</span> <span class="n">Name</span>                      <span class="o">|</span> <span class="n">Speed</span> <span class="o">|</span> <span class="n">Previous</span> <span class="n">Speed</span> <span class="o">|</span>
+<span class="o">+---------------------------+-------+----------------+</span>
+<span class="o">|</span> <span class="n">Bulbasaur</span>                 <span class="o">|</span> <span class="mi">45</span>    <span class="o">|</span>                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Ivysaur</span>                   <span class="o">|</span> <span class="mi">60</span>    <span class="o">|</span> <span class="mi">45</span>             <span class="o">|</span>
+<span class="o">|</span> <span class="n">Venusaur</span>                  <span class="o">|</span> <span class="mi">80</span>    <span class="o">|</span> <span class="mi">60</span>             <span class="o">|</span>
+<span class="o">|</span> <span class="n">VenusaurMega</span> <span class="n">Venusaur</span>     <span class="o">|</span> <span class="mi">80</span>    <span class="o">|</span> <span class="mi">80</span>             <span class="o">|</span>
+<span class="o">|</span> <span class="n">Charmander</span>                <span class="o">|</span> <span class="mi">65</span>    <span class="o">|</span> <span class="mi">80</span>             <span class="o">|</span>
+<span class="o">|</span> <span class="n">Charmeleon</span>                <span class="o">|</span> <span class="mi">80</span>    <span class="o">|</span> <span class="mi">65</span>             <span class="o">|</span>
+<span class="o">|</span> <span class="n">Charizard</span>                 <span class="o">|</span> <span class="mi">100</span>   <span class="o">|</span> <span class="mi">80</span>             <span class="o">|</span>
+<span class="o">|</span> <span class="n">CharizardMega</span> <span class="n">Charizard</span> <span class="n">X</span> <span class="o">|</span> <span class="mi">100</span>   <span class="o">|</span> <span class="mi">100</span>            <span class="o">|</span>
+<span class="o">|</span> <span class="n">CharizardMega</span> <span class="n">Charizard</span> <span class="n">Y</span> <span class="o">|</span> <span class="mi">100</span>   <span class="o">|</span> <span class="mi">100</span>            <span class="o">|</span>
+<span class="o">|</span> <span class="n">Squirtle</span>                  <span class="o">|</span> <span class="mi">43</span>    <span class="o">|</span> <span class="mi">100</span>            <span class="o">|</span>
+<span class="o">+---------------------------+-------+----------------+</span>
 </pre></div>
 </div>
-<p>You can also control the order in which rows are processed by window functions by providing
+<section id="setting-parameters">
+<h2>Setting Parameters<a class="headerlink" href="#setting-parameters" title="Link to this heading">¶</a></h2>
+<section id="ordering">
+<h3>Ordering<a class="headerlink" href="#ordering" title="Link to this heading">¶</a></h3>
+<p>You can control the order in which rows are processed by window functions by providing
 a list of <code class="docutils literal notranslate"><span class="pre">order_by</span></code> functions for the <code class="docutils literal notranslate"><span class="pre">order_by</span></code> parameter.</p>
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">9</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span>
    <span class="o">...</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Name&quot;&#39;</span><span class="p">),</span>
    <span class="o">...</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">),</span>
-   <span class="o">...</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span>
-   <span class="o">...</span><span class="p">:</span>         <span class="n">f</span><span class="o">.</span><span class="n">window</span><span class="p">(</span>
-   <span class="o">...</span><span class="p">:</span>             <span class="s2">&quot;rank&quot;</span><span class="p">,</span>
-   <span class="o">...</span><span class="p">:</span>             <span class="p">[],</span>
-   <span class="o">...</span><span class="p">:</span>             <span class="n">partition_by</span><span class="o">=</span><span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">)],</span>
-   <span class="o">...</span><span class="p">:</span>             <span class="n">order_by</span><span class="o">=</span><span class="p">[</span><span class="n">f</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">))],</span>
-   <span class="o">...</span><span class="p">:</span>         <span class="p">),</span>
-   <span class="o">...</span><span class="p">:</span>         <span class="s2">&quot;rank&quot;</span><span class="p">,</span>
-   <span class="o">...</span><span class="p">:</span>     <span class="p">),</span>
-   <span class="o">...</span><span class="p">:</span> <span class="p">)</span>
+   <span class="o">...</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">),</span>
+   <span class="o">...</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">rank</span><span class="p">(</span>
+   <span class="o">...</span><span class="p">:</span>         <span class="n">partition_by</span><span class="o">=</span><span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">)],</span>
+   <span class="o">...</span><span class="p">:</span>         <span class="n">order_by</span><span class="o">=</span><span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">ascending</span><span class="o">=</span><span class="kc">True</span><span class="p">)],</span>
+   <span class="o">...</span><span class="p">:</span>     <span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">&quot;rank&quot;</span><span class="p">),</span>
+   <span class="o">...</span><span class="p">:</span> <span class="p">)</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">),</span> <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">))</span>
    <span class="o">...</span><span class="p">:</span> 
 <span class="n">Out</span><span class="p">[</span><span class="mi">9</span><span class="p">]:</span> 
 <span class="n">DataFrame</span><span class="p">()</span>
-<span class="o">+------------+--------+------+</span>
-<span class="o">|</span> <span class="n">Name</span>       <span class="o">|</span> <span class="n">Attack</span> <span class="o">|</span> <span class="n">rank</span> <span class="o">|</span>
-<span class="o">+------------+--------+------+</span>
-<span class="o">|</span> <span class="n">Jynx</span>       <span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Articuno</span>   <span class="o">|</span> <span class="mi">85</span>     <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Chansey</span>    <span class="o">|</span> <span class="mi">5</span>      <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Jigglypuff</span> <span class="o">|</span> <span class="mi">45</span>     <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Meowth</span>     <span class="o">|</span> <span class="mi">45</span>     <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Pidgey</span>     <span class="o">|</span> <span class="mi">45</span>     <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Ditto</span>      <span class="o">|</span> <span class="mi">48</span>     <span class="o">|</span> <span class="mi">5</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Lickitung</span>  <span class="o">|</span> <span class="mi">55</span>     <span class="o">|</span> <span class="mi">6</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Eevee</span>      <span class="o">|</span> <span class="mi">55</span>     <span class="o">|</span> <span class="mi">6</span>    <span class="o">|</span>
-<span class="o">|</span> <span class="n">Rattata</span>    <span class="o">|</span> <span class="mi">56</span>     <span class="o">|</span> <span class="mi">8</span>    <span class="o">|</span>
-<span class="o">+------------+--------+------+</span>
+<span class="o">+------------+--------+--------+------+</span>
+<span class="o">|</span> <span class="n">Name</span>       <span class="o">|</span> <span class="n">Attack</span> <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span> <span class="o">|</span> <span class="n">rank</span> <span class="o">|</span>
+<span class="o">+------------+--------+--------+------+</span>
+<span class="o">|</span> <span class="n">Metapod</span>    <span class="o">|</span> <span class="mi">20</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Kakuna</span>     <span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Caterpie</span>   <span class="o">|</span> <span class="mi">30</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">3</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Weedle</span>     <span class="o">|</span> <span class="mi">35</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">4</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Butterfree</span> <span class="o">|</span> <span class="mi">45</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">5</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Venonat</span>    <span class="o">|</span> <span class="mi">55</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">6</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Venomoth</span>   <span class="o">|</span> <span class="mi">65</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">7</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Paras</span>      <span class="o">|</span> <span class="mi">70</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">8</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Beedrill</span>   <span class="o">|</span> <span class="mi">90</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">9</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Parasect</span>   <span class="o">|</span> <span class="mi">95</span>     <span class="o">|</span> <span class="n">Bug</span>    <span class="o">|</span> <span class="mi">10</span>   <span class="o">|</span>
+<span class="o">+------------+--------+--------+------+</span>
+</pre></div>
+</div>
+</section>
+<section id="partitions">
+<h3>Partitions<a class="headerlink" href="#partitions" title="Link to this heading">¶</a></h3>
+<p>A window function can take a list of <code class="docutils literal notranslate"><span class="pre">partition_by</span></code> columns similar to an
+<a class="reference internal" href="aggregations.html#aggregation"><span class="std std-ref">Aggregation Function</span></a>. This will cause the window values to be evaluated
+independently for each of the partitions. In the example above, we found the rank of each
+Pokemon per <code class="docutils literal notranslate"><span class="pre">Type</span> <span class="pre">1</span></code> partitions. We can see the first couple of each partition if we do
+the following:</p>
+<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">10</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Name&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">rank</span><span class="p">(</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="n">partition_by</span><span class="o">=</span><span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">)],</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="n">order_by</span><span class="o">=</span><span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">ascending</span><span class="o">=</span><span class="kc">True</span><span class="p">)],</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">&quot;rank&quot;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span> <span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s2">&quot;rank&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">lit</span><span class="p">(</span><span class="mi">3</span><span class="p">))</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">co [...]
+   <span class="o">....</span><span class="p">:</span> 
+<span class="n">Out</span><span class="p">[</span><span class="mi">10</span><span class="p">]:</span> 
+<span class="n">DataFrame</span><span class="p">()</span>
+<span class="o">+-----------+--------+----------+------+</span>
+<span class="o">|</span> <span class="n">Name</span>      <span class="o">|</span> <span class="n">Attack</span> <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">rank</span> <span class="o">|</span>
+<span class="o">+-----------+--------+----------+------+</span>
+<span class="o">|</span> <span class="n">Metapod</span>   <span class="o">|</span> <span class="mi">20</span>     <span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Kakuna</span>    <span class="o">|</span> <span class="mi">25</span>     <span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Dratini</span>   <span class="o">|</span> <span class="mi">64</span>     <span class="o">|</span> <span class="n">Dragon</span>   <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Dragonair</span> <span class="o">|</span> <span class="mi">84</span>     <span class="o">|</span> <span class="n">Dragon</span>   <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Voltorb</span>   <span class="o">|</span> <span class="mi">30</span>     <span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Magnemite</span> <span class="o">|</span> <span class="mi">35</span>     <span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Clefairy</span>  <span class="o">|</span> <span class="mi">45</span>     <span class="o">|</span> <span class="n">Fairy</span>    <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Clefable</span>  <span class="o">|</span> <span class="mi">70</span>     <span class="o">|</span> <span class="n">Fairy</span>    <span class="o">|</span> <span class="mi">2</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Machop</span>    <span class="o">|</span> <span class="mi">80</span>     <span class="o">|</span> <span class="n">Fighting</span> <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">|</span> <span class="n">Mankey</span>    <span class="o">|</span> <span class="mi">80</span>     <span class="o">|</span> <span class="n">Fighting</span> <span class="o">|</span> <span class="mi">1</span>    <span class="o">|</span>
+<span class="o">+-----------+--------+----------+------+</span>
+</pre></div>
+</div>
+</section>
+<section id="window-frame">
+<h3>Window Frame<a class="headerlink" href="#window-frame" title="Link to this heading">¶</a></h3>
+<p>When using aggregate functions, the Window Frame of defines the rows over which it operates.
+If you do not specify a Window Frame, the frame will be set depending on the following
+criteria.</p>
+<ul class="simple">
+<li><p>If an <code class="docutils literal notranslate"><span class="pre">order_by</span></code> clause is set, the default window frame is defined as the rows between
+unbounded preceeding and the current row.</p></li>
+<li><p>If an <code class="docutils literal notranslate"><span class="pre">order_by</span></code> is not set, the default frame is defined as the rows betwene unbounded
+and unbounded following (the entire partition).</p></li>
+</ul>
+<p>Window Frames are defined by three parameters: unit type, starting bound, and ending bound.</p>
+<p>The unit types available are:</p>
+<ul class="simple">
+<li><p>Rows: The starting and ending boundaries are defined by the number of rows relative to the
+current row.</p></li>
+<li><p>Range: When using Range, the <code class="docutils literal notranslate"><span class="pre">order_by</span></code> clause must have exactly one term. The boundaries
+are defined bow how close the rows are to the value of the expression in the <code class="docutils literal notranslate"><span class="pre">order_by</span></code>
+parameter.</p></li>
+<li><p>Groups: A “group” is the set of all rows that have equivalent values for all terms in the
+<code class="docutils literal notranslate"><span class="pre">order_by</span></code> clause.</p></li>
+</ul>
+<p>In this example we perform a “rolling average” of the speed of the current Pokemon and the
+two preceeding rows.</p>
+<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">11</span><span class="p">]:</span> <span class="kn">from</span> <span class="nn">datafusion.expr</span> <span class="kn">import</span> <span class="n">WindowFrame</span>
+
+<span class="n">In</span> <span class="p">[</span><span class="mi">12</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Name&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Speed&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;avg&quot;</span><span class="p">,</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Speed&quot;&#39;</span><span class="p">)],</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="n">order_by</span><span class="o">=</span><span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Speed&quot;&#39;</span><span class="p">)],</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="n">window_frame</span><span class="o">=</span><span class="n">WindowFrame</span><span class="p">(</span><span class="s2">&quot;rows&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">&quot;Previous Speed&quot;</span><span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span> <span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span> 
+<span class="n">Out</span><span class="p">[</span><span class="mi">12</span><span class="p">]:</span> 
+<span class="n">DataFrame</span><span class="p">()</span>
+<span class="o">+---------------------+-------+--------------------+</span>
+<span class="o">|</span> <span class="n">Name</span>                <span class="o">|</span> <span class="n">Speed</span> <span class="o">|</span> <span class="n">Previous</span> <span class="n">Speed</span>     <span class="o">|</span>
+<span class="o">+---------------------+-------+--------------------+</span>
+<span class="o">|</span> <span class="n">Slowpoke</span>            <span class="o">|</span> <span class="mi">15</span>    <span class="o">|</span> <span class="mf">15.0</span>               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Jigglypuff</span>          <span class="o">|</span> <span class="mi">20</span>    <span class="o">|</span> <span class="mf">17.5</span>               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Geodude</span>             <span class="o">|</span> <span class="mi">20</span>    <span class="o">|</span> <span class="mf">18.333333333333332</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Rhyhorn</span>             <span class="o">|</span> <span class="mi">25</span>    <span class="o">|</span> <span class="mf">21.666666666666668</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Grimer</span>              <span class="o">|</span> <span class="mi">25</span>    <span class="o">|</span> <span class="mf">23.333333333333332</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Paras</span>               <span class="o">|</span> <span class="mi">25</span>    <span class="o">|</span> <span class="mf">25.0</span>               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Snorlax</span>             <span class="o">|</span> <span class="mi">30</span>    <span class="o">|</span> <span class="mf">26.666666666666668</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Lickitung</span>           <span class="o">|</span> <span class="mi">30</span>    <span class="o">|</span> <span class="mf">28.333333333333332</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">SlowbroMega</span> <span class="n">Slowbro</span> <span class="o">|</span> <span class="mi">30</span>    <span class="o">|</span> <span class="mf">30.0</span>               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Slowbro</span>             <span class="o">|</span> <span class="mi">30</span>    <span class="o">|</span> <span class="mf">30.0</span>               <span class="o">|</span>
+<span class="o">+---------------------+-------+--------------------+</span>
+</pre></div>
+</div>
+</section>
+<section id="null-treatment">
+<h3>Null Treatment<a class="headerlink" href="#null-treatment" title="Link to this heading">¶</a></h3>
+<p>When using aggregate functions as window functions, it is often useful to specify how null values
+should be treated. In order to do this you need to use the builder function. In future releases
+we expect this to be simplified in the interface.</p>
+<p>One common usage for handling nulls is the case where you want to find the last value up to the
+current row. In the following example we demonstrate how setting the null treatment to ignore
+nulls will fill in with the value of the most recent non-null row. To do this, we also will set
+the window frame so that we only process up to the current row.</p>
+<p>In this example, we filter down to one specific type of Pokemon that does have some entries in
+it’s <code class="docutils literal notranslate"><span class="pre">Type</span> <span class="pre">2</span></code> column that are null.</p>
+<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">13</span><span class="p">]:</span> <span class="kn">from</span> <span class="nn">datafusion.common</span> <span class="kn">import</span> <span class="n">NullTreatment</span>
+
+<span class="n">In</span> <span class="p">[</span><span class="mi">14</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">)</span> <span class="o">==</span>  <span class="n">lit</span><span class="p">(</span><span class="s2">&quot;Bug&quot;</span><span class="p">))</span><span class="o">.</s [...]
+   <span class="o">....</span><span class="p">:</span>     <span class="s1">&#39;&quot;Name&quot;&#39;</span><span class="p">,</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="s1">&#39;&quot;Type 2&quot;&#39;</span><span class="p">,</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;last_value&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 2&quot;&#39;</span><span class="p">)])</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">window_frame</span><span class="p">(</span><span class="n">WindowFrame</span><span class="p">(</span><span class="s2">&quot;rows&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Speed&quot;&#39;</span><span class="p">))</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">null_treatment</span><span class="p">(</span><span class="n">NullTreatment</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">build</span><span class="p">()</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">&quot;last_wo_null&quot;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;last_value&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 2&quot;&#39;</span><span class="p">)])</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">window_frame</span><span class="p">(</span><span class="n">WindowFrame</span><span class="p">(</span><span class="s2">&quot;rows&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Speed&quot;&#39;</span><span class="p">))</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">null_treatment</span><span class="p">(</span><span class="n">NullTreatment</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">build</span><span class="p">()</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">&quot;last_with_null&quot;</span><span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span> <span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span> 
+<span class="n">Out</span><span class="p">[</span><span class="mi">14</span><span class="p">]:</span> 
+<span class="n">DataFrame</span><span class="p">()</span>
+<span class="o">+------------+--------+--------------+----------------+</span>
+<span class="o">|</span> <span class="n">Name</span>       <span class="o">|</span> <span class="n">Type</span> <span class="mi">2</span> <span class="o">|</span> <span class="n">last_wo_null</span> <span class="o">|</span> <span class="n">last_with_null</span> <span class="o">|</span>
+<span class="o">+------------+--------+--------------+----------------+</span>
+<span class="o">|</span> <span class="n">Paras</span>      <span class="o">|</span> <span class="n">Grass</span>  <span class="o">|</span> <span class="n">Grass</span>        <span class="o">|</span> <span class="n">Grass</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="n">Metapod</span>    <span class="o">|</span>        <span class="o">|</span> <span class="n">Grass</span>        <span class="o">|</span>                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Parasect</span>   <span class="o">|</span> <span class="n">Grass</span>  <span class="o">|</span> <span class="n">Grass</span>        <span class="o">|</span> <span class="n">Grass</span>          <span class="o">|</span>
+<span class="o">|</span> <span class="n">Kakuna</span>     <span class="o">|</span> <span class="n">Poison</span> <span class="o">|</span> <span class="n">Poison</span>       <span class="o">|</span> <span class="n">Poison</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Caterpie</span>   <span class="o">|</span>        <span class="o">|</span> <span class="n">Poison</span>       <span class="o">|</span>                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Venonat</span>    <span class="o">|</span> <span class="n">Poison</span> <span class="o">|</span> <span class="n">Poison</span>       <span class="o">|</span> <span class="n">Poison</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Weedle</span>     <span class="o">|</span> <span class="n">Poison</span> <span class="o">|</span> <span class="n">Poison</span>       <span class="o">|</span> <span class="n">Poison</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Butterfree</span> <span class="o">|</span> <span class="n">Flying</span> <span class="o">|</span> <span class="n">Flying</span>       <span class="o">|</span> <span class="n">Flying</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Beedrill</span>   <span class="o">|</span> <span class="n">Poison</span> <span class="o">|</span> <span class="n">Poison</span>       <span class="o">|</span> <span class="n">Poison</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Pinsir</span>     <span class="o">|</span>        <span class="o">|</span> <span class="n">Poison</span>       <span class="o">|</span>                <span class="o">|</span>
+<span class="o">+------------+--------+--------------+----------------+</span>
 </pre></div>
 </div>
+</section>
+</section>
+<section id="aggregate-functions">
+<h2>Aggregate Functions<a class="headerlink" href="#aggregate-functions" title="Link to this heading">¶</a></h2>
+<p>You can use any <a class="reference internal" href="aggregations.html#aggregation"><span class="std std-ref">Aggregation Function</span></a> as a window function. Currently
+aggregate functions must use the deprecated
+<a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.window" title="datafusion.functions.window"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.window()</span></code></a> API but this should be resolved in
+DataFusion 42.0 (<a class="reference external" href="https://github.com/apache/datafusion-python/issues/833">Issue Link</a>). Here
+is an example that shows how to compare each pokemons’s attack power with the average attack
+power in its <code class="docutils literal notranslate"><span class="pre">&quot;Type</span> <span class="pre">1&quot;</span></code> using the <a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.avg" title="datafusion.functions.avg"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.avg()</span></code></a> function.</p>
+<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">15</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Name&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span>     <span class="n">f</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;avg&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Attack&quot;&#39;</span><span class="p">)])</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">partition_by</span><span class="p">(</span><span class="n">col</span><span class="p">(</span><span class="s1">&#39;&quot;Type 1&quot;&#39;</span><span class="p">))</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">build</span><span class="p">()</span>
+   <span class="o">....</span><span class="p">:</span>         <span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">&quot;Average Attack&quot;</span><span class="p">),</span>
+   <span class="o">....</span><span class="p">:</span> <span class="p">)</span>
+   <span class="o">....</span><span class="p">:</span> 
+<span class="n">Out</span><span class="p">[</span><span class="mi">15</span><span class="p">]:</span> 
+<span class="n">DataFrame</span><span class="p">()</span>
+<span class="o">+------------+--------+--------+----------------+</span>
+<span class="o">|</span> <span class="n">Name</span>       <span class="o">|</span> <span class="n">Attack</span> <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span> <span class="o">|</span> <span class="n">Average</span> <span class="n">Attack</span> <span class="o">|</span>
+<span class="o">+------------+--------+--------+----------------+</span>
+<span class="o">|</span> <span class="n">Jynx</span>       <span class="o">|</span> <span class="mi">50</span>     <span class="o">|</span> <span class="n">Ice</span>    <span class="o">|</span> <span class="mf">67.5</span>           <span class="o">|</span>
+<span class="o">|</span> <span class="n">Articuno</span>   <span class="o">|</span> <span class="mi">85</span>     <span class="o">|</span> <span class="n">Ice</span>    <span class="o">|</span> <span class="mf">67.5</span>           <span class="o">|</span>
+<span class="o">|</span> <span class="n">Farfetch</span><span class="s1">&#39;d | 65     | Normal | 70.625         |</span>
+<span class="o">|</span> <span class="n">Jigglypuff</span> <span class="o">|</span> <span class="mi">45</span>     <span class="o">|</span> <span class="n">Normal</span> <span class="o">|</span> <span class="mf">70.625</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Rattata</span>    <span class="o">|</span> <span class="mi">56</span>     <span class="o">|</span> <span class="n">Normal</span> <span class="o">|</span> <span class="mf">70.625</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Raticate</span>   <span class="o">|</span> <span class="mi">81</span>     <span class="o">|</span> <span class="n">Normal</span> <span class="o">|</span> <span class="mf">70.625</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Spearow</span>    <span class="o">|</span> <span class="mi">60</span>     <span class="o">|</span> <span class="n">Normal</span> <span class="o">|</span> <span class="mf">70.625</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Fearow</span>     <span class="o">|</span> <span class="mi">90</span>     <span class="o">|</span> <span class="n">Normal</span> <span class="o">|</span> <span class="mf">70.625</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Doduo</span>      <span class="o">|</span> <span class="mi">85</span>     <span class="o">|</span> <span class="n">Normal</span> <span class="o">|</span> <span class="mf">70.625</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">Wigglytuff</span> <span class="o">|</span> <span class="mi">70</span>     <span class="o">|</span> <span class="n">Normal</span> <span class="o">|</span> <span class="mf">70.625</span>         <span class="o">|</span>
+<span class="o">+------------+--------+--------+----------------+</span>
+</pre></div>
+</div>
+</section>
+<section id="available-functions">
+<h2>Available Functions<a class="headerlink" href="#available-functions" title="Link to this heading">¶</a></h2>
 <p>The possible window functions are:</p>
 <ol class="arabic simple">
 <li><dl class="simple">
 <dt>Rank Functions</dt><dd><ul class="simple">
-<li><p>rank</p></li>
-<li><p>dense_rank</p></li>
-<li><p>row_number</p></li>
-<li><p>ntile</p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.rank" title="datafusion.functions.rank"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.rank()</span></code></a></p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.dense_rank" title="datafusion.functions.dense_rank"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.dense_rank()</span></code></a></p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.ntile" title="datafusion.functions.ntile"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.ntile()</span></code></a></p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.row_number" title="datafusion.functions.row_number"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.row_number()</span></code></a></p></li>
 </ul>
 </dd>
 </dl>
 </li>
 <li><dl class="simple">
 <dt>Analytical Functions</dt><dd><ul class="simple">
-<li><p>cume_dist</p></li>
-<li><p>percent_rank</p></li>
-<li><p>lag</p></li>
-<li><p>lead</p></li>
-<li><p>first_value</p></li>
-<li><p>last_value</p></li>
-<li><p>nth_value</p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.cume_dist" title="datafusion.functions.cume_dist"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.cume_dist()</span></code></a></p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.percent_rank" title="datafusion.functions.percent_rank"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.percent_rank()</span></code></a></p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.lag" title="datafusion.functions.lag"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.lag()</span></code></a></p></li>
+<li><p><a class="reference internal" href="../../autoapi/datafusion/functions/index.html#datafusion.functions.lead" title="datafusion.functions.lead"><code class="xref py py-func docutils literal notranslate"><span class="pre">datafusion.functions.lead()</span></code></a></p></li>
 </ul>
 </dd>
 </dl>
 </li>
 <li><dl class="simple">
 <dt>Aggregate Functions</dt><dd><ul class="simple">
-<li><p>All aggregate functions can be used as window functions.</p></li>
+<li><p>All <a class="reference internal" href="aggregations.html#aggregation"><span class="std std-ref">Aggregation Functions</span></a> can be used as window functions.</p></li>
 </ul>
 </dd>
 </dl>
 </li>
 </ol>
+</section>
 </section>
 
 
diff --git a/user-guide/configuration.html b/user-guide/configuration.html
index 74b27d5..5b9bb53 100644
--- a/user-guide/configuration.html
+++ b/user-guide/configuration.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/introduction.html b/user-guide/introduction.html
index 0d22dcc..11114f3 100644
--- a/user-guide/introduction.html
+++ b/user-guide/introduction.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/io/arrow.html b/user-guide/io/arrow.html
index 3503c4e..428b604 100644
--- a/user-guide/io/arrow.html
+++ b/user-guide/io/arrow.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/io/avro.html b/user-guide/io/avro.html
index 6399c28..8586dbb 100644
--- a/user-guide/io/avro.html
+++ b/user-guide/io/avro.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/io/csv.html b/user-guide/io/csv.html
index 5cdc19d..5fc0691 100644
--- a/user-guide/io/csv.html
+++ b/user-guide/io/csv.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/io/index.html b/user-guide/io/index.html
index 072b862..043b612 100644
--- a/user-guide/io/index.html
+++ b/user-guide/io/index.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/io/json.html b/user-guide/io/json.html
index cf88df9..386f097 100644
--- a/user-guide/io/json.html
+++ b/user-guide/io/json.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/io/parquet.html b/user-guide/io/parquet.html
index 56fc8a2..1f01bd0 100644
--- a/user-guide/io/parquet.html
+++ b/user-guide/io/parquet.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   
diff --git a/user-guide/sql.html b/user-guide/sql.html
index 2857173..f1a308f 100644
--- a/user-guide/sql.html
+++ b/user-guide/sql.html
@@ -25,7 +25,7 @@
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" />
     <link rel="stylesheet" type="text/css" href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=fd3f3429" />
-    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=ef9fea58" />
+    <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=dca7052a" />
     
     <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=1999514e3f237ded88cf">
   


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org