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 2026/03/12 09:57:09 UTC

(datafusion-python) branch asf-site updated: Publish built docs triggered by d7c6e8fe80f2ebc31df163926b9361a78fdae071

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new 89d30fce Publish built docs triggered by d7c6e8fe80f2ebc31df163926b9361a78fdae071
89d30fce is described below

commit 89d30fcec8c6f939dffab7d244b41da21097ab5d
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Thu Mar 12 09:57:05 2026 +0000

    Publish built docs triggered by d7c6e8fe80f2ebc31df163926b9361a78fdae071
---
 _sources/autoapi/datafusion/index.rst.txt      | 466 ++++++++++++++
 autoapi/datafusion/index.html                  | 835 ++++++++++++++++++++++++-
 genindex.html                                  | 188 +++++-
 objects.inv                                    | Bin 9249 -> 9481 bytes
 searchindex.js                                 |   2 +-
 user-guide/common-operations/aggregations.html |  38 +-
 user-guide/common-operations/basic-info.html   |  34 +-
 user-guide/common-operations/functions.html    |  20 +-
 user-guide/introduction.html                   |   2 +-
 9 files changed, 1505 insertions(+), 80 deletions(-)

diff --git a/_sources/autoapi/datafusion/index.rst.txt b/_sources/autoapi/datafusion/index.rst.txt
index a97cdf7d..24fecff4 100644
--- a/_sources/autoapi/datafusion/index.rst.txt
+++ b/_sources/autoapi/datafusion/index.rst.txt
@@ -44,6 +44,10 @@ Attributes
    datafusion.DFSchema
    datafusion.col
    datafusion.column
+   datafusion.udaf
+   datafusion.udf
+   datafusion.udtf
+   datafusion.udwf
 
 
 Classes
@@ -51,6 +55,8 @@ Classes
 
 .. autoapisummary::
 
+   datafusion.Accumulator
+   datafusion.AggregateUDF
    datafusion.Catalog
    datafusion.CsvReadOptions
    datafusion.DataFrameWriteOptions
@@ -65,9 +71,12 @@ Classes
    datafusion.RecordBatchStream
    datafusion.RuntimeEnvBuilder
    datafusion.SQLOptions
+   datafusion.ScalarUDF
    datafusion.SessionConfig
    datafusion.Table
+   datafusion.TableFunction
    datafusion.WindowFrame
+   datafusion.WindowUDF
 
 
 Functions
@@ -87,6 +96,179 @@ Functions
 Package Contents
 ----------------
 
+.. py:class:: Accumulator
+
+   Defines how an :py:class:`AggregateUDF` accumulates values.
+
+
+   .. py:method:: evaluate() -> pyarrow.Scalar
+      :abstractmethod:
+
+
+      Return the resultant value.
+
+      While this function template expects a PyArrow Scalar value return type,
+      you can return any value that can be converted into a Scalar. This
+      includes basic Python data types such as integers and strings. In
+      addition to primitive types, we currently support PyArrow, nanoarrow,
+      and arro3 objects in addition to primitive data types. Other objects
+      that support the Arrow FFI standard will be given a "best attempt" at
+      conversion to scalar objects.
+
+
+
+   .. py:method:: merge(states: list[pyarrow.Array]) -> None
+      :abstractmethod:
+
+
+      Merge a set of states.
+
+
+
+   .. py:method:: state() -> list[pyarrow.Scalar]
+      :abstractmethod:
+
+
+      Return the current state.
+
+      While this function template expects PyArrow Scalar values return type,
+      you can return any value that can be converted into a Scalar. This
+      includes basic Python data types such as integers and strings. In
+      addition to primitive types, we currently support PyArrow, nanoarrow,
+      and arro3 objects in addition to primitive data types. Other objects
+      that support the Arrow FFI standard will be given a "best attempt" at
+      conversion to scalar objects.
+
+
+
+   .. py:method:: update(*values: pyarrow.Array) -> None
+      :abstractmethod:
+
+
+      Evaluate an array of values and update state.
+
+
+
+.. py:class:: AggregateUDF(name: str, accumulator: collections.abc.Callable[[], Accumulator], input_types: list[pyarrow.DataType], return_type: pyarrow.DataType, state_type: list[pyarrow.DataType], volatility: Volatility | str)
+              AggregateUDF(name: str, accumulator: AggregateUDFExportable, input_types: None = ..., return_type: None = ..., state_type: None = ..., volatility: None = ...)
+
+   Class for performing scalar user-defined functions (UDF).
+
+   Aggregate UDFs operate on a group of rows and return a single value. See
+   also :py:class:`ScalarUDF` for operating on a row by row basis.
+
+   Instantiate a user-defined aggregate function (UDAF).
+
+   See :py:func:`udaf` for a convenience function and argument
+   descriptions.
+
+
+   .. py:method:: __call__(*args: datafusion.expr.Expr) -> datafusion.expr.Expr
+
+      Execute the UDAF.
+
+      This function is not typically called by an end user. These calls will
+      occur during the evaluation of the dataframe.
+
+
+
+   .. py:method:: __repr__() -> str
+
+      Print a string representation of the Aggregate UDF.
+
+
+
+   .. py:method:: from_pycapsule(func: AggregateUDFExportable | _typeshed.CapsuleType) -> AggregateUDF
+      :staticmethod:
+
+
+      Create an Aggregate UDF from AggregateUDF PyCapsule object.
+
+      This function will instantiate a Aggregate UDF that uses a DataFusion
+      AggregateUDF that is exported via the FFI bindings.
+
+
+
+   .. py:method:: udaf(input_types: pyarrow.DataType | list[pyarrow.DataType], return_type: pyarrow.DataType, state_type: list[pyarrow.DataType], volatility: Volatility | str, name: str | None = None) -> collections.abc.Callable[Ellipsis, AggregateUDF]
+                  udaf(accum: collections.abc.Callable[[], Accumulator], input_types: pyarrow.DataType | list[pyarrow.DataType], return_type: pyarrow.DataType, state_type: list[pyarrow.DataType], volatility: Volatility | str, name: str | None = None) -> AggregateUDF
+                  udaf(accum: AggregateUDFExportable) -> AggregateUDF
+                  udaf(accum: _typeshed.CapsuleType) -> AggregateUDF
+      :staticmethod:
+
+
+      Create a new User-Defined Aggregate Function (UDAF).
+
+      This class allows you to define an aggregate function that can be used in
+      data aggregation or window function calls.
+
+      Usage:
+          - As a function: ``udaf(accum, input_types, return_type, state_type, volatility, name)``.
+          - As a decorator: ``@udaf(input_types, return_type, state_type, volatility, name)``.
+            When using ``udaf`` as a decorator, do not pass ``accum`` explicitly.
+
+      Function example:
+
+      If your :py:class:`Accumulator` can be instantiated with no arguments, you
+      can simply pass it's type as `accum`. If you need to pass additional
+      arguments to it's constructor, you can define a lambda or a factory method.
+      During runtime the :py:class:`Accumulator` will be constructed for every
+      instance in which this UDAF is used. The following examples are all valid::
+
+          import pyarrow as pa
+          import pyarrow.compute as pc
+
+          class Summarize(Accumulator):
+              def __init__(self, bias: float = 0.0):
+                  self._sum = pa.scalar(bias)
+
+              def state(self) -> list[pa.Scalar]:
+                  return [self._sum]
+
+              def update(self, values: pa.Array) -> None:
+                  self._sum = pa.scalar(self._sum.as_py() + pc.sum(values).as_py())
+
+              def merge(self, states: list[pa.Array]) -> None:
+                  self._sum = pa.scalar(self._sum.as_py() + pc.sum(states[0]).as_py())
+
+              def evaluate(self) -> pa.Scalar:
+                  return self._sum
+
+          def sum_bias_10() -> Summarize:
+              return Summarize(10.0)
+
+          udaf1 = udaf(Summarize, pa.float64(), pa.float64(), [pa.float64()],
+              "immutable")
+          udaf2 = udaf(sum_bias_10, pa.float64(), pa.float64(), [pa.float64()],
+              "immutable")
+          udaf3 = udaf(lambda: Summarize(20.0), pa.float64(), pa.float64(),
+              [pa.float64()], "immutable")
+
+      Decorator example:::
+
+          @udaf(pa.float64(), pa.float64(), [pa.float64()], "immutable")
+          def udf4() -> Summarize:
+              return Summarize(10.0)
+
+      :param accum: The accumulator python function. Only needed when calling as a
+                    function. Skip this argument when using ``udaf`` as a decorator.
+                    If you have a Rust backed AggregateUDF within a PyCapsule, you can
+                    pass this parameter and ignore the rest. They will be determined
+                    directly from the underlying function. See the online documentation
+                    for more information.
+      :param input_types: The data types of the arguments to ``accum``.
+      :param return_type: The data type of the return value.
+      :param state_type: The data types of the intermediate accumulation.
+      :param volatility: See :py:class:`Volatility` for allowed values.
+      :param name: A descriptive name for the function.
+
+      :returns: A user-defined aggregate function, which can be used in either data
+                aggregation or window function calls.
+
+
+
+   .. py:attribute:: _udaf
+
+
 .. py:class:: Catalog(catalog: datafusion._internal.catalog.RawCatalog)
 
    DataFusion data catalog.
@@ -1903,6 +2085,101 @@ Package Contents
    .. py:attribute:: options_internal
 
 
+.. py:class:: ScalarUDF(name: str, func: collections.abc.Callable[Ellipsis, _R], input_fields: list[pyarrow.Field], return_field: _R, volatility: Volatility | str)
+
+   Class for performing scalar user-defined functions (UDF).
+
+   Scalar UDFs operate on a row by row basis. See also :py:class:`AggregateUDF` for
+   operating on a group of rows.
+
+   Instantiate a scalar user-defined function (UDF).
+
+   See helper method :py:func:`udf` for argument details.
+
+
+   .. py:method:: __call__(*args: datafusion.expr.Expr) -> datafusion.expr.Expr
+
+      Execute the UDF.
+
+      This function is not typically called by an end user. These calls will
+      occur during the evaluation of the dataframe.
+
+
+
+   .. py:method:: __repr__() -> str
+
+      Print a string representation of the Scalar UDF.
+
+
+
+   .. py:method:: from_pycapsule(func: ScalarUDFExportable) -> ScalarUDF
+      :staticmethod:
+
+
+      Create a Scalar UDF from ScalarUDF PyCapsule object.
+
+      This function will instantiate a Scalar UDF that uses a DataFusion
+      ScalarUDF that is exported via the FFI bindings.
+
+
+
+   .. py:method:: udf(input_fields: collections.abc.Sequence[pyarrow.DataType | pyarrow.Field] | pyarrow.DataType | pyarrow.Field, return_field: pyarrow.DataType | pyarrow.Field, volatility: Volatility | str, name: str | None = None) -> collections.abc.Callable[Ellipsis, ScalarUDF]
+                  udf(func: collections.abc.Callable[Ellipsis, _R], input_fields: collections.abc.Sequence[pyarrow.DataType | pyarrow.Field] | pyarrow.DataType | pyarrow.Field, return_field: pyarrow.DataType | pyarrow.Field, volatility: Volatility | str, name: str | None = None) -> ScalarUDF
+                  udf(func: ScalarUDFExportable) -> ScalarUDF
+      :staticmethod:
+
+
+      Create a new User-Defined Function (UDF).
+
+      This class can be used both as either a function or a decorator.
+
+      Usage:
+          - As a function: ``udf(func, input_fields, return_field, volatility, name)``.
+          - As a decorator: ``@udf(input_fields, return_field, volatility, name)``.
+            When used a decorator, do **not** pass ``func`` explicitly.
+
+      In lieu of passing a PyArrow Field, you can pass a DataType for simplicity.
+      When you do so, it will be assumed that the nullability of the inputs and
+      output are True and that they have no metadata.
+
+      :param func: Only needed when calling as a function.
+                   Skip this argument when using `udf` as a decorator. If you have a Rust
+                   backed ScalarUDF within a PyCapsule, you can pass this parameter
+                   and ignore the rest. They will be determined directly from the
+                   underlying function. See the online documentation for more information.
+      :type func: Callable, optional
+      :param input_fields: The data types or Fields
+                           of the arguments to ``func``. This list must be of the same length
+                           as the number of arguments.
+      :type input_fields: list[pa.Field | pa.DataType]
+      :param return_field: The field of the return value from the function.
+      :type return_field: _R
+      :param volatility: See `Volatility` for allowed values.
+      :type volatility: Volatility | str
+      :param name: A descriptive name for the function.
+      :type name: Optional[str]
+
+      :returns: A user-defined function that can be used in SQL expressions,
+                data aggregation, or window function calls.
+
+      Example: Using ``udf`` as a function::
+
+          def double_func(x):
+              return x * 2
+          double_udf = udf(double_func, [pa.int32()], pa.int32(),
+          "volatile", "double_it")
+
+      Example: Using ``udf`` as a decorator::
+
+          @udf([pa.int32()], pa.int32(), "volatile", "double_it")
+          def double_udf(x):
+              return x * 2
+
+
+
+   .. py:attribute:: _udf
+
+
 .. py:class:: SessionConfig(config_options: dict[str, str] | None = None)
 
    Session configuration options.
@@ -2111,6 +2388,59 @@ Package Contents
       Returns the schema associated with this table.
 
 
+.. py:class:: TableFunction(name: str, func: collections.abc.Callable[[], any], ctx: datafusion.SessionContext | None = None)
+
+   Class for performing user-defined table functions (UDTF).
+
+   Table functions generate new table providers based on the
+   input expressions.
+
+   Instantiate a user-defined table function (UDTF).
+
+   See :py:func:`udtf` for a convenience function and argument
+   descriptions.
+
+
+   .. py:method:: __call__(*args: datafusion.expr.Expr) -> Any
+
+      Execute the UDTF and return a table provider.
+
+
+
+   .. py:method:: __repr__() -> str
+
+      User printable representation.
+
+
+
+   .. py:method:: _create_table_udf(func: collections.abc.Callable[Ellipsis, Any], name: str) -> TableFunction
+      :staticmethod:
+
+
+      Create a TableFunction instance from function arguments.
+
+
+
+   .. py:method:: _create_table_udf_decorator(name: str | None = None) -> collections.abc.Callable[[collections.abc.Callable[[], WindowEvaluator]], collections.abc.Callable[Ellipsis, datafusion.expr.Expr]]
+      :staticmethod:
+
+
+      Create a decorator for a WindowUDF.
+
+
+
+   .. py:method:: udtf(name: str) -> collections.abc.Callable[Ellipsis, Any]
+                  udtf(func: collections.abc.Callable[[], Any], name: str) -> TableFunction
+      :staticmethod:
+
+
+      Create a new User-Defined Table Function (UDTF).
+
+
+
+   .. py:attribute:: _udtf
+
+
 .. py:class:: WindowFrame(units: str, start_bound: Any | None, end_bound: Any | None)
 
    Defines a window frame for performing window operations.
@@ -2153,6 +2483,134 @@ Package Contents
    .. py:attribute:: window_frame
 
 
+.. py:class:: WindowUDF(name: str, func: collections.abc.Callable[[], WindowEvaluator], input_types: list[pyarrow.DataType], return_type: pyarrow.DataType, volatility: Volatility | str)
+
+   Class for performing window user-defined functions (UDF).
+
+   Window UDFs operate on a partition of rows. See
+   also :py:class:`ScalarUDF` for operating on a row by row basis.
+
+   Instantiate a user-defined window function (UDWF).
+
+   See :py:func:`udwf` for a convenience function and argument
+   descriptions.
+
+
+   .. py:method:: __call__(*args: datafusion.expr.Expr) -> datafusion.expr.Expr
+
+      Execute the UDWF.
+
+      This function is not typically called by an end user. These calls will
+      occur during the evaluation of the dataframe.
+
+
+
+   .. py:method:: __repr__() -> str
+
+      Print a string representation of the Window UDF.
+
+
+
+   .. py:method:: _create_window_udf(func: collections.abc.Callable[[], WindowEvaluator], input_types: pyarrow.DataType | list[pyarrow.DataType], return_type: pyarrow.DataType, volatility: Volatility | str, name: str | None = None) -> WindowUDF
+      :staticmethod:
+
+
+      Create a WindowUDF instance from function arguments.
+
+
+
+   .. py:method:: _create_window_udf_decorator(input_types: pyarrow.DataType | list[pyarrow.DataType], return_type: pyarrow.DataType, volatility: Volatility | str, name: str | None = None) -> collections.abc.Callable[[collections.abc.Callable[[], WindowEvaluator]], collections.abc.Callable[Ellipsis, datafusion.expr.Expr]]
+      :staticmethod:
+
+
+      Create a decorator for a WindowUDF.
+
+
+
+   .. py:method:: _get_default_name(func: collections.abc.Callable) -> str
+      :staticmethod:
+
+
+      Get the default name for a function based on its attributes.
+
+
+
+   .. py:method:: _normalize_input_types(input_types: pyarrow.DataType | list[pyarrow.DataType]) -> list[pyarrow.DataType]
+      :staticmethod:
+
+
+      Convert a single DataType to a list if needed.
+
+
+
+   .. py:method:: from_pycapsule(func: WindowUDFExportable) -> WindowUDF
+      :staticmethod:
+
+
+      Create a Window UDF from WindowUDF PyCapsule object.
+
+      This function will instantiate a Window UDF that uses a DataFusion
+      WindowUDF that is exported via the FFI bindings.
+
+
+
+   .. py:method:: udwf(input_types: pyarrow.DataType | list[pyarrow.DataType], return_type: pyarrow.DataType, volatility: Volatility | str, name: str | None = None) -> collections.abc.Callable[Ellipsis, WindowUDF]
+                  udwf(func: collections.abc.Callable[[], WindowEvaluator], input_types: pyarrow.DataType | list[pyarrow.DataType], return_type: pyarrow.DataType, volatility: Volatility | str, name: str | None = None) -> WindowUDF
+      :staticmethod:
+
+
+      Create a new User-Defined Window Function (UDWF).
+
+      This class can be used both as either a function or a decorator.
+
+      Usage:
+          - As a function: ``udwf(func, input_types, return_type, volatility, name)``.
+          - As a decorator: ``@udwf(input_types, return_type, volatility, name)``.
+            When using ``udwf`` as a decorator, do not pass ``func`` explicitly.
+
+      Function example::
+
+          import pyarrow as pa
+
+          class BiasedNumbers(WindowEvaluator):
+              def __init__(self, start: int = 0) -> None:
+                  self.start = start
+
+              def evaluate_all(self, values: list[pa.Array],
+                  num_rows: int) -> pa.Array:
+                  return pa.array([self.start + i for i in range(num_rows)])
+
+          def bias_10() -> BiasedNumbers:
+              return BiasedNumbers(10)
+
+          udwf1 = udwf(BiasedNumbers, pa.int64(), pa.int64(), "immutable")
+          udwf2 = udwf(bias_10, pa.int64(), pa.int64(), "immutable")
+          udwf3 = udwf(lambda: BiasedNumbers(20), pa.int64(), pa.int64(), "immutable")
+
+
+      Decorator example::
+
+          @udwf(pa.int64(), pa.int64(), "immutable")
+          def biased_numbers() -> BiasedNumbers:
+              return BiasedNumbers(10)
+
+      :param func: Only needed when calling as a function. Skip this argument when
+                   using ``udwf`` as a decorator. If you have a Rust backed WindowUDF
+                   within a PyCapsule, you can pass this parameter and ignore the rest.
+                   They will be determined directly from the underlying function. See
+                   the online documentation for more information.
+      :param input_types: The data types of the arguments.
+      :param return_type: The data type of the return value.
+      :param volatility: See :py:class:`Volatility` for allowed values.
+      :param name: A descriptive name for the function.
+
+      :returns: A user-defined window function that can be used in window function calls.
+
+
+
+   .. py:attribute:: _udwf
+
+
 .. py:function:: configure_formatter(**kwargs: Any) -> None
 
    Configure the global DataFrame HTML formatter.
@@ -2282,3 +2740,11 @@ Package Contents
 .. py:data:: column
    :type:  Col
 
+.. py:data:: udaf
+
+.. py:data:: udf
+
+.. py:data:: udtf
+
+.. py:data:: udwf
+
diff --git a/autoapi/datafusion/index.html b/autoapi/datafusion/index.html
index 92df89d6..49b2d73f 100644
--- a/autoapi/datafusion/index.html
+++ b/autoapi/datafusion/index.html
@@ -442,6 +442,109 @@
    Package Contents
   </a>
   <ul class="visible nav section-nav flex-column">
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.Accumulator">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       Accumulator
+      </span>
+     </code>
+    </a>
+    <ul class="nav section-nav flex-column">
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Accumulator.evaluate">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Accumulator.evaluate()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Accumulator.merge">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Accumulator.merge()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Accumulator.state">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Accumulator.state()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Accumulator.update">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Accumulator.update()
+        </span>
+       </code>
+      </a>
+     </li>
+    </ul>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.AggregateUDF">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       AggregateUDF
+      </span>
+     </code>
+    </a>
+    <ul class="nav section-nav flex-column">
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.AggregateUDF.__call__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         AggregateUDF.__call__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.AggregateUDF.__repr__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         AggregateUDF.__repr__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.AggregateUDF.from_pycapsule">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         AggregateUDF.from_pycapsule()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.AggregateUDF.udaf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         AggregateUDF.udaf()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.AggregateUDF._udaf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         AggregateUDF._udaf
+        </span>
+       </code>
+      </a>
+     </li>
+    </ul>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.Catalog">
      <code class="docutils literal notranslate">
@@ -2682,6 +2785,62 @@
      </li>
     </ul>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.ScalarUDF">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       ScalarUDF
+      </span>
+     </code>
+    </a>
+    <ul class="nav section-nav flex-column">
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.ScalarUDF.__call__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ScalarUDF.__call__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.ScalarUDF.__repr__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ScalarUDF.__repr__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.ScalarUDF.from_pycapsule">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ScalarUDF.from_pycapsule()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.ScalarUDF.udf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ScalarUDF.udf()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.ScalarUDF._udf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ScalarUDF._udf
+        </span>
+       </code>
+      </a>
+     </li>
+    </ul>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.SessionConfig">
      <code class="docutils literal notranslate">
@@ -2884,6 +3043,71 @@
      </li>
     </ul>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.TableFunction">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       TableFunction
+      </span>
+     </code>
+    </a>
+    <ul class="nav section-nav flex-column">
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.TableFunction.__call__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         TableFunction.__call__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.TableFunction.__repr__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         TableFunction.__repr__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.TableFunction._create_table_udf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         TableFunction._create_table_udf()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.TableFunction._create_table_udf_decorator">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         TableFunction._create_table_udf_decorator()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.TableFunction.udtf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         TableFunction.udtf()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.TableFunction._udtf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         TableFunction._udtf
+        </span>
+       </code>
+      </a>
+     </li>
+    </ul>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.WindowFrame">
      <code class="docutils literal notranslate">
@@ -2940,6 +3164,98 @@
      </li>
     </ul>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.WindowUDF">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       WindowUDF
+      </span>
+     </code>
+    </a>
+    <ul class="nav section-nav flex-column">
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF.__call__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF.__call__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF.__repr__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF.__repr__()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF._create_window_udf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF._create_window_udf()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF._create_window_udf_decorator">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF._create_window_udf_decorator()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF._get_default_name">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF._get_default_name()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF._normalize_input_types">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF._normalize_input_types()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF.from_pycapsule">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF.from_pycapsule()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF.udwf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF.udwf()
+        </span>
+       </code>
+      </a>
+     </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.WindowUDF._udwf">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         WindowUDF._udwf
+        </span>
+       </code>
+      </a>
+     </li>
+    </ul>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" href="#datafusion.configure_formatter">
      <code class="docutils literal notranslate">
@@ -3030,6 +3346,42 @@
      </code>
     </a>
    </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.udaf">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       udaf
+      </span>
+     </code>
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.udf">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       udf
+      </span>
+     </code>
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.udtf">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       udtf
+      </span>
+     </code>
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#datafusion.udwf">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       udwf
+      </span>
+     </code>
+    </a>
+   </li>
   </ul>
  </li>
 </ul>
@@ -3094,6 +3446,18 @@ See <a class="reference external" href="https://datafusion.apache.org/python">ht
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.column" title="datafusion.column"><code class="xref py py-obj docutils literal notranslate"><span class="pre">column</span></code></a></p></td>
 <td><p></p></td>
 </tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.udaf" title="datafusion.udaf"><code class="xref py py-obj docutils literal notranslate"><span class="pre">udaf</span></code></a></p></td>
+<td><p></p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.udf" title="datafusion.udf"><code class="xref py py-obj docutils literal notranslate"><span class="pre">udf</span></code></a></p></td>
+<td><p></p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.udtf" title="datafusion.udtf"><code class="xref py py-obj docutils literal notranslate"><span class="pre">udtf</span></code></a></p></td>
+<td><p></p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.udwf" title="datafusion.udwf"><code class="xref py py-obj docutils literal notranslate"><span class="pre">udwf</span></code></a></p></td>
+<td><p></p></td>
+</tr>
 </tbody>
 </table>
 </section>
@@ -3101,6 +3465,12 @@ See <a class="reference external" href="https://datafusion.apache.org/python">ht
 <h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">¶</a></h2>
 <table class="autosummary longtable table autosummary">
 <tbody>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.Accumulator" title="datafusion.Accumulator"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Accumulator</span></code></a></p></td>
+<td><p>Defines how an <a class="reference internal" href="#datafusion.AggregateUDF" title="datafusion.AggregateUDF"><code class="xref py py-class docutils literal notranslate"><span class="pre">AggregateUDF</span></code></a> accumulates values.</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.AggregateUDF" title="datafusion.AggregateUDF"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AggregateUDF</span></code></a></p></td>
+<td><p>Class for performing scalar user-defined functions (UDF).</p></td>
+</tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.Catalog" title="datafusion.Catalog"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Catalog</span></code></a></p></td>
 <td><p>DataFusion data catalog.</p></td>
 </tr>
@@ -3143,15 +3513,24 @@ See <a class="reference external" href="https://datafusion.apache.org/python">ht
 <tr class="row-even"><td><p><a class="reference internal" href="#datafusion.SQLOptions" title="datafusion.SQLOptions"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SQLOptions</span></code></a></p></td>
 <td><p>Options to be used when performing SQL queries.</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.SessionConfig" title="datafusion.SessionConfig"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SessionConfig</span></code></a></p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.ScalarUDF" title="datafusion.ScalarUDF"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ScalarUDF</span></code></a></p></td>
+<td><p>Class for performing scalar user-defined functions (UDF).</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.SessionConfig" title="datafusion.SessionConfig"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SessionConfig</span></code></a></p></td>
 <td><p>Session configuration options.</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.Table" title="datafusion.Table"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Table</span></code></a></p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.Table" title="datafusion.Table"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Table</span></code></a></p></td>
 <td><p>A DataFusion table.</p></td>
 </tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.TableFunction" title="datafusion.TableFunction"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TableFunction</span></code></a></p></td>
+<td><p>Class for performing user-defined table functions (UDTF).</p></td>
+</tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="#datafusion.WindowFrame" title="datafusion.WindowFrame"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WindowFrame</span></code></a></p></td>
 <td><p>Defines a window frame for performing window operations.</p></td>
 </tr>
+<tr class="row-even"><td><p><a class="reference internal" href="#datafusion.WindowUDF" title="datafusion.WindowUDF"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WindowUDF</span></code></a></p></td>
+<td><p>Class for performing window user-defined functions (UDF).</p></td>
+</tr>
 </tbody>
 </table>
 </section>
@@ -3185,6 +3564,175 @@ See <a class="reference external" href="https://datafusion.apache.org/python">ht
 </section>
 <section id="package-contents">
 <h2>Package Contents<a class="headerlink" href="#package-contents" title="Link to this heading">¶</a></h2>
+<dl class="py class">
+<dt class="sig sig-object py" id="datafusion.Accumulator">
+<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">Accumulator</span></span><a class="headerlink" href="#datafusion.Accumulator" title="Link to this definition">¶</a></dt>
+<dd><p>Defines how an <a class="reference internal" href="#datafusion.AggregateUDF" title="datafusion.AggregateUDF"><code class="xref py py-class docutils literal notranslate"><span class="pre">AggregateUDF</span></code></a> accumulates values.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Accumulator.evaluate">
+<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">evaluate</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">pyarrow.Scalar</span></span></span><a class="headerlink" href="#datafusion.Accumulator.evaluate" title="Link to this definition">¶</a></dt>
+<dd><p>Return the resultant value.</p>
+<p>While this function template expects a PyArrow Scalar value return type,
+you can return any value that can be converted into a Scalar. This
+includes basic Python data types such as integers and strings. In
+addition to primitive types, we currently support PyArrow, nanoarrow,
+and arro3 objects in addition to primitive data types. Other objects
+that support the Arrow FFI standard will be given a “best attempt” at
+conversion to scalar objects.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Accumulator.merge">
+<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">merge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">states</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">pyarrow.Array</span><span class="p"><span class [...]
+<dd><p>Merge a set of states.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Accumulator.state">
+<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">state</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">list</span><span class="p"><span class="pre">[</span></span><span class="pre">pyarrow.Scalar</span><span class="p"><span class="pre">]</span></span></sp [...]
+<dd><p>Return the current state.</p>
+<p>While this function template expects PyArrow Scalar values return type,
+you can return any value that can be converted into a Scalar. This
+includes basic Python data types such as integers and strings. In
+addition to primitive types, we currently support PyArrow, nanoarrow,
+and arro3 objects in addition to primitive data types. Other objects
+that support the Arrow FFI standard will be given a “best attempt” at
+conversion to scalar objects.</p>
+</dd></dl>
+
+<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="o"><span class="pre">*</span></span><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 clas [...]
+<dd><p>Evaluate an array of values and update state.</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="py class">
+<dt class="sig sig-object py" id="datafusion.AggregateUDF">
+<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">AggregateUDF</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-p [...]
+<dt class="sig sig-object py">
+<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">AggregateUDF</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-p [...]
+<dd><p>Class for performing scalar user-defined functions (UDF).</p>
+<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.udaf" title="datafusion.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__">
+<span class="sig-name descname"><span class="pre">__call__</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><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.expr.Expr</span></a></span></em><span class= [...]
+<dd><p>Execute the UDAF.</p>
+<p>This function is not typically called by an end user. These calls will
+occur during the evaluation of the dataframe.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.AggregateUDF.__repr__">
+<span class="sig-name descname"><span class="pre">__repr__</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.AggregateUDF.__repr__" title="Link to this definition">¶</a></dt>
+<dd><p>Print a string representation of the Aggregate UDF.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.AggregateUDF.from_pycapsule">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_pycapsule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="user_defined/index.html#datafusion.user_defined.AggregateUDFExportable" title="datafusion.user_defined [...]
+<dd><p>Create an Aggregate UDF from AggregateUDF PyCapsule object.</p>
+<p>This function will instantiate a Aggregate UDF that uses a DataFusion
+AggregateUDF that is exported via the FFI bindings.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.AggregateUDF.udaf">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udaf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_types</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">pyarrow.DataType</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><sp [...]
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udaf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">accum</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span> [...]
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udaf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">accum</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="user_defined/index.html#datafusion.user_defined.AggregateUDFExportable" title="datafusion.user_defined.Aggregat [...]
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udaf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">accum</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">_typeshed.CapsuleType</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">& [...]
+<dd><p>Create a new User-Defined Aggregate Function (UDAF).</p>
+<p>This class allows you to define an aggregate function that can be used in
+data aggregation or window function calls.</p>
+<dl class="simple">
+<dt>Usage:</dt><dd><ul class="simple">
+<li><p>As a function: <code class="docutils literal notranslate"><span class="pre">udaf(accum,</span> <span class="pre">input_types,</span> <span class="pre">return_type,</span> <span class="pre">state_type,</span> <span class="pre">volatility,</span> <span class="pre">name)</span></code>.</p></li>
+<li><p>As a decorator: <code class="docutils literal notranslate"><span class="pre">&#64;udaf(input_types,</span> <span class="pre">return_type,</span> <span class="pre">state_type,</span> <span class="pre">volatility,</span> <span class="pre">name)</span></code>.
+When using <code class="docutils literal notranslate"><span class="pre">udaf</span></code> as a decorator, do not pass <code class="docutils literal notranslate"><span class="pre">accum</span></code> explicitly.</p></li>
+</ul>
+</dd>
+</dl>
+<p>Function example:</p>
+<p>If your <a class="reference internal" href="#datafusion.Accumulator" title="datafusion.Accumulator"><code class="xref py py-class docutils literal notranslate"><span class="pre">Accumulator</span></code></a> can be instantiated with no arguments, you
+can simply pass it’s type as <cite>accum</cite>. If you need to pass additional
+arguments to it’s constructor, you can define a lambda or a factory method.
+During runtime the <a class="reference internal" href="#datafusion.Accumulator" title="datafusion.Accumulator"><code class="xref py py-class docutils literal notranslate"><span class="pre">Accumulator</span></code></a> will be constructed for every
+instance in which this UDAF is used. The following examples are all valid:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">pyarrow</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pa</span>
+<span class="kn">import</span><span class="w"> </span><span class="nn">pyarrow.compute</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pc</span>
+
+<span class="k">class</span><span class="w"> </span><span class="nc">Summarize</span><span class="p">(</span><span class="n">Accumulator</span><span class="p">):</span>
+    <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bias</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_sum</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="n">bias</span><span class="p">)</span>
+
+    <span class="k">def</span><span class="w"> </span><span class="nf">state</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">Scalar</span><span class="p">]:</span>
+        <span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_sum</span><span class="p">]</span>
+
+    <span class="k">def</span><span class="w"> </span><span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">:</span> <span class="n">pa</span><span class="o">.</span><span class="n">Array</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_sum</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_sum</span><span class="o">.</span><span class="n">as_py</span><span class="p">()</span> <span class="o">+</span> <span class="n">pc</span><span class="o">.</span><span class="n">sum</span><span class="p">(</s [...]
+
+    <span class="k">def</span><span class="w"> </span><span class="nf">merge</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">states</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">Array</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_sum</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_sum</span><span class="o">.</span><span class="n">as_py</span><span class="p">()</span> <span class="o">+</span> <span class="n">pc</span><span class="o">.</span><span class="n">sum</span><span class="p">(</s [...]
+
+    <span class="k">def</span><span class="w"> </span><span class="nf">evaluate</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pa</span><span class="o">.</span><span class="n">Scalar</span><span class="p">:</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sum</span>
+
+<span class="k">def</span><span class="w"> </span><span class="nf">sum_bias_10</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Summarize</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">Summarize</span><span class="p">(</span><span class="mf">10.0</span><span class="p">)</span>
+
+<span class="n">udaf1</span> <span class="o">=</span> <span class="n">udaf</span><span class="p">(</span><span class="n">Summarize</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p" [...]
+    <span class="s2">&quot;immutable&quot;</span><span class="p">)</span>
+<span class="n">udaf2</span> <span class="o">=</span> <span class="n">udaf</span><span class="p">(</span><span class="n">sum_bias_10</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class=" [...]
+    <span class="s2">&quot;immutable&quot;</span><span class="p">)</span>
+<span class="n">udaf3</span> <span class="o">=</span> <span class="n">udaf</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">Summarize</span><span class="p">(</span><span class="mf">20.0</span><span class="p">),</span> <span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span>
+    <span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">()],</span> <span class="s2">&quot;immutable&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Decorator example::</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@udaf</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">()],</span> <span class= [...]
+<span class="k">def</span><span class="w"> </span><span class="nf">udf4</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Summarize</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">Summarize</span><span class="p">(</span><span class="mf">10.0</span><span class="p">)</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>accum</strong> – The accumulator python function. Only needed when calling as a
+function. Skip this argument when using <code class="docutils literal notranslate"><span class="pre">udaf</span></code> as a decorator.
+If you have a Rust backed AggregateUDF within a PyCapsule, you can
+pass this parameter and ignore the rest. They will be determined
+directly from the underlying function. See the online documentation
+for more information.</p></li>
+<li><p><strong>input_types</strong> – The data types of the arguments to <code class="docutils literal notranslate"><span class="pre">accum</span></code>.</p></li>
+<li><p><strong>return_type</strong> – The data type of the return value.</p></li>
+<li><p><strong>state_type</strong> – The data types of the intermediate accumulation.</p></li>
+<li><p><strong>volatility</strong> – See <code class="xref py py-class docutils literal notranslate"><span class="pre">Volatility</span></code> for allowed values.</p></li>
+<li><p><strong>name</strong> – A descriptive name for the function.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>A user-defined aggregate function, which can be used in either data
+aggregation or window function calls.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py attribute">
+<dt class="sig sig-object py" id="datafusion.AggregateUDF._udaf">
+<span class="sig-name descname"><span class="pre">_udaf</span></span><a class="headerlink" href="#datafusion.AggregateUDF._udaf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 <dl class="py class">
 <dt class="sig sig-object py" id="datafusion.Catalog">
 <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">Catalog</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">catalog</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">datafusion._internal.catalog.RawCatalog</s [...]
@@ -5053,6 +5601,99 @@ multiple spillable operators that all will spill.</p>
 
 </dd></dl>
 
+<dl class="py class">
+<dt class="sig sig-object py" id="datafusion.ScalarUDF">
+<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">ScalarUDF</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-para [...]
+<dd><p>Class for performing scalar user-defined functions (UDF).</p>
+<p>Scalar UDFs operate on a row by row basis. See also <a class="reference internal" href="#datafusion.AggregateUDF" title="datafusion.AggregateUDF"><code class="xref py py-class docutils literal notranslate"><span class="pre">AggregateUDF</span></code></a> for
+operating on a group of rows.</p>
+<p>Instantiate a scalar user-defined function (UDF).</p>
+<p>See helper method <a class="reference internal" href="#datafusion.udf" title="datafusion.udf"><code class="xref py py-func docutils literal notranslate"><span class="pre">udf()</span></code></a> for argument details.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.ScalarUDF.__call__">
+<span class="sig-name descname"><span class="pre">__call__</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><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.expr.Expr</span></a></span></em><span class= [...]
+<dd><p>Execute the UDF.</p>
+<p>This function is not typically called by an end user. These calls will
+occur during the evaluation of the dataframe.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.ScalarUDF.__repr__">
+<span class="sig-name descname"><span class="pre">__repr__</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.ScalarUDF.__repr__" title="Link to this definition">¶</a></dt>
+<dd><p>Print a string representation of the Scalar UDF.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.ScalarUDF.from_pycapsule">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_pycapsule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="user_defined/index.html#datafusion.user_defined.ScalarUDFExportable" title="datafusion.user_defined.Sc [...]
+<dd><p>Create a Scalar UDF from ScalarUDF PyCapsule object.</p>
+<p>This function will instantiate a Scalar UDF that uses a DataFusion
+ScalarUDF that is exported via the FFI bindings.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.ScalarUDF.udf">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_fields</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">pyarrow.DataType</span><s [...]
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Callable</span><span class="p"><span class="pre">[</span></span><span class="pre">Ellipsis</span><span class="p"><s [...]
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="user_defined/index.html#datafusion.user_defined.ScalarUDFExportable" title="datafusion.user_defined.ScalarUDFExpo [...]
+<dd><p>Create a new User-Defined Function (UDF).</p>
+<p>This class can be used both as either a function or a decorator.</p>
+<dl class="simple">
+<dt>Usage:</dt><dd><ul class="simple">
+<li><p>As a function: <code class="docutils literal notranslate"><span class="pre">udf(func,</span> <span class="pre">input_fields,</span> <span class="pre">return_field,</span> <span class="pre">volatility,</span> <span class="pre">name)</span></code>.</p></li>
+<li><p>As a decorator: <code class="docutils literal notranslate"><span class="pre">&#64;udf(input_fields,</span> <span class="pre">return_field,</span> <span class="pre">volatility,</span> <span class="pre">name)</span></code>.
+When used a decorator, do <strong>not</strong> pass <code class="docutils literal notranslate"><span class="pre">func</span></code> explicitly.</p></li>
+</ul>
+</dd>
+</dl>
+<p>In lieu of passing a PyArrow Field, you can pass a DataType for simplicity.
+When you do so, it will be assumed that the nullability of the inputs and
+output are True and that they have no metadata.</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>func</strong> (<em>Callable</em><em>, </em><em>optional</em>) – Only needed when calling as a function.
+Skip this argument when using <cite>udf</cite> as a decorator. If you have a Rust
+backed ScalarUDF within a PyCapsule, you can pass this parameter
+and ignore the rest. They will be determined directly from the
+underlying function. See the online documentation for more information.</p></li>
+<li><p><strong>input_fields</strong> (<em>list</em><em>[</em><em>pa.Field</em><em> | </em><em>pa.DataType</em><em>]</em>) – The data types or Fields
+of the arguments to <code class="docutils literal notranslate"><span class="pre">func</span></code>. This list must be of the same length
+as the number of arguments.</p></li>
+<li><p><strong>return_field</strong> (<em>_R</em>) – The field of the return value from the function.</p></li>
+<li><p><strong>volatility</strong> (<a class="reference internal" href="user_defined/index.html#datafusion.user_defined.Volatility" title="datafusion.user_defined.Volatility"><em>Volatility</em></a><em> | </em><em>str</em>) – See <cite>Volatility</cite> for allowed values.</p></li>
+<li><p><strong>name</strong> (<em>Optional</em><em>[</em><em>str</em><em>]</em>) – A descriptive name for the function.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>A user-defined function that can be used in SQL expressions,
+data aggregation, or window function calls.</p>
+</dd>
+</dl>
+<p>Example: Using <code class="docutils literal notranslate"><span class="pre">udf</span></code> as a function:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">double_func</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
+    <span class="k">return</span> <span class="n">x</span> <span class="o">*</span> <span class="mi">2</span>
+<span class="n">double_udf</span> <span class="o">=</span> <span class="n">udf</span><span class="p">(</span><span class="n">double_func</span><span class="p">,</span> <span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">()],</span> <span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">(),</span>
+<span class="s2">&quot;volatile&quot;</span><span class="p">,</span> <span class="s2">&quot;double_it&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Example: Using <code class="docutils literal notranslate"><span class="pre">udf</span></code> as a decorator:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@udf</span><span class="p">([</span><span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">()],</span> <span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">(),</span> <span class="s2">&quot;volatile&quot;</span><span class="p">,</span> <span class="s2">&quot;double_it&quot;</span><span class="p">)</span>
+<span class="k">def</span><span class="w"> </span><span class="nf">double_udf</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
+    <span class="k">return</span> <span class="n">x</span> <span class="o">*</span> <span class="mi">2</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="py attribute">
+<dt class="sig sig-object py" id="datafusion.ScalarUDF._udf">
+<span class="sig-name descname"><span class="pre">_udf</span></span><a class="headerlink" href="#datafusion.ScalarUDF._udf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 <dl class="py class">
 <dt class="sig sig-object py" id="datafusion.SessionConfig">
 <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">SessionConfig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config_options</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><s [...]
@@ -5311,6 +5952,54 @@ interface (advanced)</p></li>
 
 </dd></dl>
 
+<dl class="py class">
+<dt class="sig sig-object py" id="datafusion.TableFunction">
+<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">TableFunction</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- [...]
+<dd><p>Class for performing user-defined table functions (UDTF).</p>
+<p>Table functions generate new table providers based on the
+input expressions.</p>
+<p>Instantiate a user-defined table function (UDTF).</p>
+<p>See <a class="reference internal" href="#datafusion.udtf" title="datafusion.udtf"><code class="xref py py-func docutils literal notranslate"><span class="pre">udtf()</span></code></a> for a convenience function and argument
+descriptions.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.TableFunction.__call__">
+<span class="sig-name descname"><span class="pre">__call__</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><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.expr.Expr</span></a></span></em><span class= [...]
+<dd><p>Execute the UDTF and return a table provider.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.TableFunction.__repr__">
+<span class="sig-name descname"><span class="pre">__repr__</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.TableFunction.__repr__" title="Link to this definition">¶</a></dt>
+<dd><p>User printable representation.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.TableFunction._create_table_udf">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_create_table_udf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Callable</span><span class="p"><span class="pre">[</span></span><span class="pre">Ellipsis</span><spa [...]
+<dd><p>Create a TableFunction instance from function arguments.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.TableFunction._create_table_udf_decorator">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_create_table_udf_decorator</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 class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span> [...]
+<dd><p>Create a decorator for a WindowUDF.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.TableFunction.udtf">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udtf</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><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <spa [...]
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udtf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span>< [...]
+<dd><p>Create a new User-Defined Table Function (UDTF).</p>
+</dd></dl>
+
+<dl class="py attribute">
+<dt class="sig sig-object py" id="datafusion.TableFunction._udtf">
+<span class="sig-name descname"><span class="pre">_udtf</span></span><a class="headerlink" href="#datafusion.TableFunction._udtf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 <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 [...]
@@ -5360,6 +6049,128 @@ parameter must be set.</p></li>
 
 </dd></dl>
 
+<dl class="py class">
+<dt class="sig sig-object py" id="datafusion.WindowUDF">
+<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">WindowUDF</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-para [...]
+<dd><p>Class for performing window user-defined functions (UDF).</p>
+<p>Window UDFs operate on a partition of rows. 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 window function (UDWF).</p>
+<p>See <a class="reference internal" href="#datafusion.udwf" title="datafusion.udwf"><code class="xref py py-func docutils literal notranslate"><span class="pre">udwf()</span></code></a> for a convenience function and argument
+descriptions.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF.__call__">
+<span class="sig-name descname"><span class="pre">__call__</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><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.expr.Expr</span></a></span></em><span class= [...]
+<dd><p>Execute the UDWF.</p>
+<p>This function is not typically called by an end user. These calls will
+occur during the evaluation of the dataframe.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF.__repr__">
+<span class="sig-name descname"><span class="pre">__repr__</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.WindowUDF.__repr__" title="Link to this definition">¶</a></dt>
+<dd><p>Print a string representation of the Window UDF.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF._create_window_udf">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_create_window_udf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[< [...]
+<dd><p>Create a WindowUDF instance from function arguments.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF._create_window_udf_decorator">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_create_window_udf_decorator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_types</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">pyarrow.DataType</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><sp [...]
+<dd><p>Create a decorator for a WindowUDF.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF._get_default_name">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_get_default_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Callable</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig [...]
+<dd><p>Get the default name for a function based on its attributes.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF._normalize_input_types">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_normalize_input_types</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_types</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">pyarrow.DataType</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span cla [...]
+<dd><p>Convert a single DataType to a list if needed.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF.from_pycapsule">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_pycapsule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="user_defined/index.html#datafusion.user_defined.WindowUDFExportable" title="datafusion.user_defined.Wi [...]
+<dd><p>Create a Window UDF from WindowUDF PyCapsule object.</p>
+<p>This function will instantiate a Window UDF that uses a DataFusion
+WindowUDF that is exported via the FFI bindings.</p>
+</dd></dl>
+
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.WindowUDF.udwf">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udwf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_types</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">pyarrow.DataType</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><sp [...]
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">udwf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">collections.abc.Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span>< [...]
+<dd><p>Create a new User-Defined Window Function (UDWF).</p>
+<p>This class can be used both as either a function or a decorator.</p>
+<dl class="simple">
+<dt>Usage:</dt><dd><ul class="simple">
+<li><p>As a function: <code class="docutils literal notranslate"><span class="pre">udwf(func,</span> <span class="pre">input_types,</span> <span class="pre">return_type,</span> <span class="pre">volatility,</span> <span class="pre">name)</span></code>.</p></li>
+<li><p>As a decorator: <code class="docutils literal notranslate"><span class="pre">&#64;udwf(input_types,</span> <span class="pre">return_type,</span> <span class="pre">volatility,</span> <span class="pre">name)</span></code>.
+When using <code class="docutils literal notranslate"><span class="pre">udwf</span></code> as a decorator, do not pass <code class="docutils literal notranslate"><span class="pre">func</span></code> explicitly.</p></li>
+</ul>
+</dd>
+</dl>
+<p>Function example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">pyarrow</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pa</span>
+
+<span class="k">class</span><span class="w"> </span><span class="nc">BiasedNumbers</span><span class="p">(</span><span class="n">WindowEvaluator</span><span class="p">):</span>
+    <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span>
+
+    <span class="k">def</span><span class="w"> </span><span class="nf">evaluate_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">pa</span><span class="o">.</span><span class="n">Array</span><span class="p">],</span>
+        <span class="n">num_rows</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pa</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span>
+        <span class="k">return</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">+</span> <span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_rows</span><span class="p">)])</span>
+
+<span class="k">def</span><span class="w"> </span><span class="nf">bias_10</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">BiasedNumbers</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">BiasedNumbers</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+
+<span class="n">udwf1</span> <span class="o">=</span> <span class="n">udwf</span><span class="p">(</span><span class="n">BiasedNumbers</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="s2">&quot;immutable&quot;</span><span class="p">)</span>
+<span class="n">udwf2</span> <span class="o">=</span> <span class="n">udwf</span><span class="p">(</span><span class="n">bias_10</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="s2">&quot;immutable&quot;</span><span class="p">)</span>
+<span class="n">udwf3</span> <span class="o">=</span> <span class="n">udwf</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">BiasedNumbers</span><span class="p">(</span><span class="mi">20</span><span class="p">),</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class=" [...]
+</pre></div>
+</div>
+<p>Decorator example:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@udwf</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="s2">&quot;immutable&quot;</span><span class="p">)</span>
+<span class="k">def</span><span class="w"> </span><span class="nf">biased_numbers</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">BiasedNumbers</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">BiasedNumbers</span><span class="p">(</span><span class="mi">10</span><span class="p">)</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>func</strong> – Only needed when calling as a function. Skip this argument when
+using <code class="docutils literal notranslate"><span class="pre">udwf</span></code> as a decorator. If you have a Rust backed WindowUDF
+within a PyCapsule, you can pass this parameter and ignore the rest.
+They will be determined directly from the underlying function. See
+the online documentation for more information.</p></li>
+<li><p><strong>input_types</strong> – The data types of the arguments.</p></li>
+<li><p><strong>return_type</strong> – The data type of the return value.</p></li>
+<li><p><strong>volatility</strong> – See <code class="xref py py-class docutils literal notranslate"><span class="pre">Volatility</span></code> for allowed values.</p></li>
+<li><p><strong>name</strong> – A descriptive name for the function.</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns<span class="colon">:</span></dt>
+<dd class="field-even"><p>A user-defined window function that can be used in window function calls.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py attribute">
+<dt class="sig sig-object py" id="datafusion.WindowUDF._udwf">
+<span class="sig-name descname"><span class="pre">_udwf</span></span><a class="headerlink" href="#datafusion.WindowUDF._udwf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
 <dl class="py function">
 <dt class="sig sig-object py" id="datafusion.configure_formatter">
 <span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">configure_formatter</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">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span  [...]
@@ -5526,6 +6337,26 @@ file.</p></li>
 <span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">column</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Col</span></em><a class="headerlink" href="#datafusion.column" title="Link to this definition">¶</a></dt>
 <dd></dd></dl>
 
+<dl class="py data">
+<dt class="sig sig-object py" id="datafusion.udaf">
+<span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">udaf</span></span><a class="headerlink" href="#datafusion.udaf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py data">
+<dt class="sig sig-object py" id="datafusion.udf">
+<span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">udf</span></span><a class="headerlink" href="#datafusion.udf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py data">
+<dt class="sig sig-object py" id="datafusion.udtf">
+<span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">udtf</span></span><a class="headerlink" href="#datafusion.udtf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="py data">
+<dt class="sig sig-object py" id="datafusion.udwf">
+<span class="sig-prename descclassname"><span class="pre">datafusion.</span></span><span class="sig-name descname"><span class="pre">udwf</span></span><a class="headerlink" href="#datafusion.udwf" title="Link to this definition">¶</a></dt>
+<dd></dd></dl>
+
 </section>
 </section>
 
diff --git a/genindex.html b/genindex.html
index 3dfadc6f..277d439e 100644
--- a/genindex.html
+++ b/genindex.html
@@ -490,9 +490,15 @@
         <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.__arrow_c_stream__">(datafusion.dataframe.DataFrame method)</a>
 </li>
       </ul></li>
-      <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.CellFormatter.__call__">__call__() (datafusion.dataframe_formatter.CellFormatter method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.AggregateUDF.__call__">__call__() (datafusion.AggregateUDF method)</a>
 
       <ul>
+        <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.CellFormatter.__call__">(datafusion.dataframe_formatter.CellFormatter method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.ScalarUDF.__call__">(datafusion.ScalarUDF method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.TableFunction.__call__">(datafusion.TableFunction method)</a>
+</li>
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF.__call__">(datafusion.user_defined.AggregateUDF method)</a>
 </li>
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF.__call__">(datafusion.user_defined.ScalarUDF method)</a>
@@ -500,6 +506,8 @@
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction.__call__">(datafusion.user_defined.TableFunction method)</a>
 </li>
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF.__call__">(datafusion.user_defined.WindowUDF method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF.__call__">(datafusion.WindowUDF method)</a>
 </li>
       </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDFExportable.__datafusion_aggregate_udf__">__datafusion_aggregate_udf__() (datafusion.user_defined.AggregateUDFExportable method)</a>
@@ -612,9 +620,11 @@
         <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.__rand__">(datafusion.expr.Expr attribute)</a>
 </li>
       </ul></li>
-      <li><a href="autoapi/datafusion/index.html#datafusion.Catalog.__repr__">__repr__() (datafusion.Catalog method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.AggregateUDF.__repr__">__repr__() (datafusion.AggregateUDF method)</a>
 
       <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.Catalog.__repr__">(datafusion.Catalog method)</a>
+</li>
         <li><a href="autoapi/datafusion/catalog/index.html#datafusion.catalog.Catalog.__repr__">(datafusion.catalog.Catalog method)</a>
 </li>
         <li><a href="autoapi/datafusion/catalog/index.html#datafusion.catalog.CatalogList.__repr__">(datafusion.catalog.CatalogList method)</a>
@@ -642,8 +652,12 @@
         <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.ExecutionPlan.__repr__">(datafusion.plan.ExecutionPlan method)</a>
 </li>
         <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.LogicalPlan.__repr__">(datafusion.plan.LogicalPlan method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.ScalarUDF.__repr__">(datafusion.ScalarUDF method)</a>
 </li>
         <li><a href="autoapi/datafusion/index.html#datafusion.Table.__repr__">(datafusion.Table method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.TableFunction.__repr__">(datafusion.TableFunction method)</a>
 </li>
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF.__repr__">(datafusion.user_defined.AggregateUDF method)</a>
 </li>
@@ -654,6 +668,8 @@
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF.__repr__">(datafusion.user_defined.WindowUDF method)</a>
 </li>
         <li><a href="autoapi/datafusion/index.html#datafusion.WindowFrame.__repr__">(datafusion.WindowFrame method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF.__repr__">(datafusion.WindowUDF method)</a>
 </li>
       </ul></li>
   </ul></td>
@@ -732,14 +748,30 @@
 </li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext._convert_table_partition_cols">_convert_table_partition_cols() (datafusion.context.SessionContext static method)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction._create_table_udf">_create_table_udf() (datafusion.user_defined.TableFunction static method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.TableFunction._create_table_udf">_create_table_udf() (datafusion.TableFunction static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction._create_table_udf">(datafusion.user_defined.TableFunction static method)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction._create_table_udf_decorator">_create_table_udf_decorator() (datafusion.user_defined.TableFunction static method)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.TableFunction._create_table_udf_decorator">_create_table_udf_decorator() (datafusion.TableFunction static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction._create_table_udf_decorator">(datafusion.user_defined.TableFunction static method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF._create_window_udf">_create_window_udf() (datafusion.user_defined.WindowUDF static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF._create_window_udf">(datafusion.WindowUDF static method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF._create_window_udf_decorator">_create_window_udf_decorator() (datafusion.user_defined.WindowUDF static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF._create_window_udf_decorator">(datafusion.WindowUDF static method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter._custom_cell_builder">_custom_cell_builder (datafusion.dataframe_formatter.DataFrameHtmlFormatter attribute)</a>
 </li>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter._custom_header_builder">_custom_header_builder (datafusion.dataframe_formatter.DataFrameHtmlFormatter attribute)</a>
@@ -753,7 +785,11 @@
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter._get_default_css">_get_default_css() (datafusion.dataframe_formatter.DataFrameHtmlFormatter method)</a>
 </li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF._get_default_name">_get_default_name() (datafusion.user_defined.WindowUDF static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF._get_default_name">(datafusion.WindowUDF static method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter._get_javascript">_get_javascript() (datafusion.dataframe_formatter.DataFrameHtmlFormatter method)</a>
 </li>
       <li><a href="autoapi/datafusion/catalog/index.html#datafusion.catalog.Table._inner">_inner (datafusion.catalog.Table attribute)</a>
@@ -767,7 +803,11 @@
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter._max_rows">_max_rows (datafusion.dataframe_formatter.DataFrameHtmlFormatter attribute)</a>
 </li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF._normalize_input_types">_normalize_input_types() (datafusion.user_defined.WindowUDF static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF._normalize_input_types">(datafusion.WindowUDF static method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Window._null_treatment">_null_treatment (datafusion.expr.Window attribute)</a>
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Window._order_by">_order_by (datafusion.expr.Window attribute)</a>
@@ -806,14 +846,30 @@
       </ul></li>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter._type_formatters">_type_formatters (datafusion.dataframe_formatter.DataFrameHtmlFormatter attribute)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF._udaf">_udaf (datafusion.user_defined.AggregateUDF attribute)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.AggregateUDF._udaf">_udaf (datafusion.AggregateUDF attribute)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF._udaf">(datafusion.user_defined.AggregateUDF attribute)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF._udf">_udf (datafusion.user_defined.ScalarUDF attribute)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.ScalarUDF._udf">_udf (datafusion.ScalarUDF attribute)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF._udf">(datafusion.user_defined.ScalarUDF attribute)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction._udtf">_udtf (datafusion.user_defined.TableFunction attribute)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.TableFunction._udtf">_udtf (datafusion.TableFunction attribute)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction._udtf">(datafusion.user_defined.TableFunction attribute)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF._udwf">_udwf (datafusion.user_defined.WindowUDF attribute)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF._udwf">(datafusion.WindowUDF attribute)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter._validate_bool">_validate_bool() (in module datafusion.dataframe_formatter)</a>
 </li>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter._validate_formatter_parameters">_validate_formatter_parameters() (in module datafusion.dataframe_formatter)</a>
@@ -836,8 +892,12 @@
         <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.abs">(in module datafusion.functions)</a>
 </li>
       </ul></li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator">Accumulator (class in datafusion.user_defined)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Accumulator">Accumulator (class in datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator">(class in datafusion.user_defined)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/index.html#datafusion.Expr.acos">acos() (datafusion.Expr method)</a>
 
       <ul>
@@ -860,8 +920,12 @@
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.AggregateFunction">AggregateFunction (in module datafusion.expr)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF">AggregateUDF (class in datafusion.user_defined)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.AggregateUDF">AggregateUDF (class in datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF">(class in datafusion.user_defined)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDFExportable">AggregateUDFExportable (class in datafusion.user_defined)</a>
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Alias">Alias (in module datafusion.expr)</a>
@@ -947,11 +1011,11 @@
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.array_indexof">array_indexof() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.array_intersect">array_intersect() (in module datafusion.functions)</a>
-</li>
-      <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.array_join">array_join() (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.array_join">array_join() (in module datafusion.functions)</a>
+</li>
       <li><a href="autoapi/datafusion/index.html#datafusion.Expr.array_length">array_length() (datafusion.Expr method)</a>
 
       <ul>
@@ -1827,9 +1891,11 @@
         <li><a href="autoapi/datafusion/options/index.html#datafusion.options.CsvReadOptions.escape">(datafusion.options.CsvReadOptions attribute)</a>
 </li>
       </ul></li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.evaluate">evaluate() (datafusion.user_defined.Accumulator method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Accumulator.evaluate">evaluate() (datafusion.Accumulator method)</a>
 
       <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.evaluate">(datafusion.user_defined.Accumulator method)</a>
+</li>
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowEvaluator.evaluate">(datafusion.user_defined.WindowEvaluator method)</a>
 </li>
       </ul></li>
@@ -2005,12 +2071,18 @@
         <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.LogicalPlan.from_proto">(datafusion.plan.LogicalPlan static method)</a>
 </li>
       </ul></li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF.from_pycapsule">from_pycapsule() (datafusion.user_defined.AggregateUDF static method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.AggregateUDF.from_pycapsule">from_pycapsule() (datafusion.AggregateUDF static method)</a>
 
       <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.ScalarUDF.from_pycapsule">(datafusion.ScalarUDF static method)</a>
+</li>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF.from_pycapsule">(datafusion.user_defined.AggregateUDF static method)</a>
+</li>
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF.from_pycapsule">(datafusion.user_defined.ScalarUDF static method)</a>
 </li>
         <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF.from_pycapsule">(datafusion.user_defined.WindowUDF static method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF.from_pycapsule">(datafusion.WindowUDF static method)</a>
 </li>
       </ul></li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.from_pydict">from_pydict() (datafusion.context.SessionContext method)</a>
@@ -2511,8 +2583,12 @@
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.merge">merge() (datafusion.user_defined.Accumulator method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Accumulator.merge">merge() (datafusion.Accumulator method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.merge">(datafusion.user_defined.Accumulator method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/object_store/index.html#datafusion.object_store.MicrosoftAzure">MicrosoftAzure (in module datafusion.object_store)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.min">min() (in module datafusion.functions)</a>
@@ -3002,8 +3078,12 @@
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.ScalarSubquery">ScalarSubquery (in module datafusion.expr)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF">ScalarUDF (class in datafusion.user_defined)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.ScalarUDF">ScalarUDF (class in datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF">(class in datafusion.user_defined)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDFExportable">ScalarUDFExportable (class in datafusion.user_defined)</a>
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.ScalarVariable">ScalarVariable (in module datafusion.expr)</a>
@@ -3206,8 +3286,12 @@
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.starts_with">starts_with() (in module datafusion.functions)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.state">state() (datafusion.user_defined.Accumulator method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Accumulator.state">state() (datafusion.Accumulator method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.state">(datafusion.user_defined.Accumulator method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.ParquetColumnOptions.statistics_enabled">statistics_enabled (datafusion.dataframe.ParquetColumnOptions attribute)</a>
 
       <ul>
@@ -3300,8 +3384,12 @@
         <li><a href="autoapi/datafusion/options/index.html#datafusion.options.CsvReadOptions.table_partition_cols">(datafusion.options.CsvReadOptions attribute)</a>
 </li>
       </ul></li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction">TableFunction (class in datafusion.user_defined)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.TableFunction">TableFunction (class in datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction">(class in datafusion.user_defined)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.TableProviderExportable">TableProviderExportable (class in datafusion.context)</a>
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.TableScan">TableScan (in module datafusion.expr)</a>
@@ -3352,6 +3440,8 @@
 </li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.to_polars">to_polars() (datafusion.dataframe.DataFrame method)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/index.html#datafusion.ExecutionPlan.to_proto">to_proto() (datafusion.ExecutionPlan method)</a>
 
       <ul>
@@ -3362,8 +3452,6 @@
         <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.LogicalPlan.to_proto">(datafusion.plan.LogicalPlan method)</a>
 </li>
       </ul></li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/record_batch/index.html#datafusion.record_batch.RecordBatch.to_pyarrow">to_pyarrow() (datafusion.record_batch.RecordBatch method)</a>
 
       <ul>
@@ -3442,22 +3530,56 @@
 <h2 id="U">U</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udaf">udaf (in module datafusion.user_defined)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.udaf">udaf (in module datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udaf">(in module datafusion.user_defined)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF.udaf">udaf() (datafusion.user_defined.AggregateUDF static method)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.AggregateUDF.udaf">udaf() (datafusion.AggregateUDF static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDF.udaf">(datafusion.user_defined.AggregateUDF static method)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udf">udf (in module datafusion.user_defined)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.udf">udf (in module datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udf">(in module datafusion.user_defined)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF.udf">udf() (datafusion.user_defined.ScalarUDF static method)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.ScalarUDF.udf">udf() (datafusion.ScalarUDF static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDF.udf">(datafusion.user_defined.ScalarUDF static method)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udtf">udtf (in module datafusion.user_defined)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.udtf">udtf (in module datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udtf">(in module datafusion.user_defined)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction.udtf">udtf() (datafusion.user_defined.TableFunction static method)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.TableFunction.udtf">udtf() (datafusion.TableFunction static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.TableFunction.udtf">(datafusion.user_defined.TableFunction static method)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udwf">udwf (in module datafusion.user_defined)</a>
+      </ul></li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.udwf">udwf (in module datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.udwf">(in module datafusion.user_defined)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF.udwf">udwf() (datafusion.user_defined.WindowUDF static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF.udwf">(datafusion.WindowUDF static method)</a>
 </li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.Compression.UNCOMPRESSED">UNCOMPRESSED (datafusion.dataframe.Compression attribute)</a>
 </li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Union">Union (in module datafusion.expr)</a>
@@ -3466,8 +3588,6 @@
 </li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.union_distinct">union_distinct() (datafusion.dataframe.DataFrame method)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Unnest">Unnest (in module datafusion.expr)</a>
 </li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.unnest_columns">unnest_columns() (datafusion.dataframe.DataFrame method)</a>
@@ -3478,8 +3598,12 @@
 </li>
       <li><a href="autoapi/datafusion/unparser/index.html#datafusion.unparser.Unparser.unparser">unparser (datafusion.unparser.Unparser attribute)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.update">update() (datafusion.user_defined.Accumulator method)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.Accumulator.update">update() (datafusion.Accumulator method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.Accumulator.update">(datafusion.user_defined.Accumulator method)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/index.html#datafusion.Expr.upper">upper() (datafusion.Expr method)</a>
 
       <ul>
@@ -3562,8 +3686,12 @@
       </ul></li>
       <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.WindowFrameBound">WindowFrameBound (class in datafusion.expr)</a>
 </li>
-      <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF">WindowUDF (class in datafusion.user_defined)</a>
+      <li><a href="autoapi/datafusion/index.html#datafusion.WindowUDF">WindowUDF (class in datafusion)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDF">(class in datafusion.user_defined)</a>
 </li>
+      </ul></li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.WindowUDFExportable">WindowUDFExportable (class in datafusion.user_defined)</a>
 </li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SQLOptions.with_allow_ddl">with_allow_ddl() (datafusion.context.SQLOptions method)</a>
diff --git a/objects.inv b/objects.inv
index 905cdeae..c8c4788a 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/searchindex.js b/searchindex.js
index 715cc498..235db5bf 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"API Reference": [[19, null]], "Additional Resources": [[37, "additional-resources"]], "Aggregate Functions": [[24, "aggregate-functions"], [31, "aggregate-functions"], [33, "aggregate-functions"]], "Aggregation": [[24, null]], "Alternative Approach": [[20, "alternative-approach"]], "Apache Iceberg": [[35, "apache-iceberg"]], "Arrays": [[26, "arrays"]], "Arrow": [[39, null]], "Attributes": [[4, "attributes"], [7, "attributes"], [12, "attributes"], [18, "att [...]
\ No newline at end of file
+Search.setIndex({"alltitles": {"API Reference": [[19, null]], "Additional Resources": [[37, "additional-resources"]], "Aggregate Functions": [[24, "aggregate-functions"], [31, "aggregate-functions"], [33, "aggregate-functions"]], "Aggregation": [[24, null]], "Alternative Approach": [[20, "alternative-approach"]], "Apache Iceberg": [[35, "apache-iceberg"]], "Arrays": [[26, "arrays"]], "Arrow": [[39, null]], "Attributes": [[4, "attributes"], [7, "attributes"], [12, "attributes"], [18, "att [...]
\ No newline at end of file
diff --git a/user-guide/common-operations/aggregations.html b/user-guide/common-operations/aggregations.html
index edce52dc..d2b473a6 100644
--- a/user-guide/common-operations/aggregations.html
+++ b/user-guide/common-operations/aggregations.html
@@ -620,15 +620,15 @@ Pokemon set. Since there will be many entries of <code class="docutils literal n
 <span class="o">+----------+--------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">Type</span> <span class="mi">2</span> <span class="n">List</span>                                      <span class="o">|</span>
 <span class="o">+----------+--------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[,</span> <span class="n">Grass</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                        <span class="o">|</span>
-<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Ground</span><span class="p">,</span> <span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Steel</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="p">,</span> <span class="n">Grass</span><span class="p">]</span>                        <span class="o">|</span>
+<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="p">,</span> <span class="n">Ground</span><span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="p">,</span> <span class="n">Steel</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Fairy</span>    <span class="o">|</span> <span class="p">[]</span>                                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="p">,</span> <span class="n">Fairy</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Fairy</span><span class="p">,</span> <span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ice</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                                <span class="o">|</span>
-<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Psychic</span><span class="p">,</span> <span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Dragon</span><span class="p">,</span> <span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Ice</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">]</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
+<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[,</span> <span class="n">Dragon</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Dark</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Ice</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">,</span> <span class="p">]</span> <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ground</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Rock</span><span class="p">,</span> <span class="p">]</span>                                         <span class="o">|</span>
 <span class="o">+----------+--------------------------------------------------+</span>
 <span class="n">Data</span> <span class="n">truncated</span><span class="o">.</span>
@@ -644,14 +644,14 @@ entries entirely removed. The second is we can use the <code class="docutils lit
 <span class="o">+----------+------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">Type</span> <span class="mi">2</span> <span class="n">List</span>                                    <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Grass</span><span class="p">]</span>                        <span class="o">|</span>
-<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Ground</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Steel</span><span class="p">]</span>                                <span class="o">|</span>
-<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Fairy</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
-<span class="o">|</span> <span class="n">Ice</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
+<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Grass</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                        <span class="o">|</span>
+<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Ground</span><span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Steel</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Fairy</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Ice</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                              <span class="o">|</span>
 <span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Dragon</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Fighting</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Ice</span><span class="p">]</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Dragon</span><span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Ice</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">]</span> <span class="o">|</span>
 <span class="o">|</span> <span class="n">Rock</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Ground</span><span class="p">,</span> <span class="n">Water</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                        <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ghost</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">]</span>                                       <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
@@ -663,15 +663,15 @@ entries entirely removed. The second is we can use the <code class="docutils lit
 <span class="o">+----------+------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">Type</span> <span class="mi">2</span> <span class="n">List</span>                                    <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Grass</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                        <span class="o">|</span>
+<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Grass</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                        <span class="o">|</span>
 <span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Ground</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Steel</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Steel</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Fairy</span>    <span class="o">|</span>                                                <span class="o">|</span>
-<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Fairy</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Fairy</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ice</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
 <span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Dragon</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">,</span> <span class="n">Ice</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Dragon</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Fighting</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Ice</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Dark</span><span class="p">]</span> <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ground</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Rock</span><span class="p">]</span>                                         <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
 <span class="n">Data</span> <span class="n">truncated</span><span class="o">.</span>
diff --git a/user-guide/common-operations/basic-info.html b/user-guide/common-operations/basic-info.html
index a8eb1c08..7ae87351 100644
--- a/user-guide/common-operations/basic-info.html
+++ b/user-guide/common-operations/basic-info.html
@@ -456,11 +456,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">628</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">89</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">789</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">911</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">878</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">23</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">939</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">615</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">887</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">382</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
 <span class="o">+-----+---------+--------+--------+</span>
 </pre></div>
 </div>
@@ -471,8 +471,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">628</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">89</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">23</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">939</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
 <span class="o">+-----+--------+--------+--------+</span>
 </pre></div>
 </div>
@@ -490,11 +490,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">628</span>      <span class="n">A</span>
-<span class="mi">1</span>    <span class="mi">2</span>     <span class="n">ruby</span>      <span class="mi">89</span>      <span class="n">A</span>
-<span class="mi">2</span>    <span class="mi">3</span>     <span class="n">java</span>     <span class="mi">789</span>      <span class="n">B</span>
-<span class="mi">3</span>    <span class="mi">4</span>  <span class="n">haskell</span>     <span class="mi">911</span>      <span class="n">C</span>
-<span class="mi">4</span>    <span class="mi">5</span>       <span class="n">go</span>     <span class="mi">878</span>      <span class="n">B</span>
+<span class="mi">0</span>    <span class="mi">1</span>   <span class="n">python</span>      <span class="mi">23</span>      <span class="n">A</span>
+<span class="mi">1</span>    <span class="mi">2</span>     <span class="n">ruby</span>     <span class="mi">939</span>      <span class="n">A</span>
+<span class="mi">2</span>    <span class="mi">3</span>     <span class="n">java</span>     <span class="mi">615</span>      <span class="n">B</span>
+<span class="mi">3</span>    <span class="mi">4</span>  <span class="n">haskell</span>     <span class="mi">887</span>      <span class="n">C</span>
+<span class="mi">4</span>    <span class="mi">5</span>       <span class="n">go</span>     <span class="mi">382</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>
@@ -506,11 +506,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">659.0</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">336.9814534955893</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">89.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">911.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">789.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">569.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">378.5580536720887</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">23.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">939.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">615.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/functions.html b/user-guide/common-operations/functions.html
index b4e4a5c3..1afdcb7e 100644
--- a/user-guide/common-operations/functions.html
+++ b/user-guide/common-operations/functions.html
@@ -566,16 +566,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">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">23</span><span class="n">T12</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="mf">06.752343449</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">03</span><span class="o">-</span><span class="mi">12</span><span class="n">T09</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mf">53.757149654</span> <span class="o">|</span>
 <span class="o">+-------------------------------+</span>
 <span class="n">Data</span> <span class="n">truncated</span><span class="o">.</span>
 </pre></div>
diff --git a/user-guide/introduction.html b/user-guide/introduction.html
index 439c369f..00a760dd 100644
--- a/user-guide/introduction.html
+++ b/user-guide/introduction.html
@@ -457,7 +457,7 @@ DataFusion through various examples and highlight the most effective ways of usi
 <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="w"> </span><span class="nn">datafusion</span>
 
 <span class="n">In</span> <span class="p">[</span><span class="mi">2</span><span class="p">]:</span> <span class="n">datafusion</span><span class="o">.</span><span class="n">__version__</span>
-<span class="n">Out</span><span class="p">[</span><span class="mi">2</span><span class="p">]:</span> <span class="s1">&#39;52.0.0&#39;</span>
+<span class="n">Out</span><span class="p">[</span><span class="mi">2</span><span class="p">]:</span> <span class="s1">&#39;52.3.0&#39;</span>
 </pre></div>
 </div>
 <p>In this documentation we will also show some examples for how DataFusion integrates


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