# Overview

Use this section as the entry point for Pinot SQL functions. The goal here is navigation: pick the function family, understand whether it is query-safe in the single-stage engine, and jump to the detailed page when you need full syntax or examples.

Most core function families work in both engines. Window functions require the multi-stage engine, and the engine column in the function index is the quickest way to confirm the supported execution model for a specific function.

## Browse by family

| Family              | Typical use                                        | Engine signal                            | Detailed docs                                                                        |
| ------------------- | -------------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------ |
| Aggregation         | Metrics, distinct counts, sketches, percentiles    | Both, with a few window-oriented helpers | [Aggregation Functions](https://docs.pinot.apache.org/functions/aggregation)         |
| Array               | Multi-value and array manipulation                 | Both                                     | [Array Functions](https://docs.pinot.apache.org/functions/array)                     |
| Binary              | Hashing and encoding                               | Both                                     | [Binary Functions](https://docs.pinot.apache.org/functions/binary)                   |
| DateTime            | Bucketing, truncation, epoch conversion            | Both                                     | [DateTime Functions](https://docs.pinot.apache.org/functions/datetime)               |
| Funnel              | Funnel analytics                                   | Both                                     | [Funnel Functions](https://docs.pinot.apache.org/functions/funnel)                   |
| Geospatial          | Spatial predicates and geometry conversion         | Both                                     | [GeoSpatial Functions](https://docs.pinot.apache.org/functions/geospatial)           |
| Hash                | Hash-based distribution and routing helpers        | Both                                     | [Hash Functions](https://docs.pinot.apache.org/functions/hash)                       |
| IP Address          | Network and subnet checks                          | Both                                     | [IP Address Functions](https://docs.pinot.apache.org/functions/ip-address)           |
| JSON                | Path extraction, formatting, and typed JSON access | Both, with query-safe typed variants     | [JSON Functions](https://docs.pinot.apache.org/functions/json)                       |
| Math                | Arithmetic and numeric shaping                     | Both                                     | [Math Functions](https://docs.pinot.apache.org/functions/math)                       |
| Miscellaneous       | Utility predicates and helpers                     | Both                                     | [Miscellaneous Functions](https://docs.pinot.apache.org/functions/misc)              |
| Null handling       | Null-aware query behavior                          | Both, when null support is enabled       | [Null Handling Functions](https://docs.pinot.apache.org/functions/null-handling)     |
| Sketch              | Approximate analytics helpers                      | Both                                     | [Sketch Functions](https://docs.pinot.apache.org/functions/sketch)                   |
| Statistical         | Variance and covariance functions                  | Both                                     | [Statistical Functions](https://docs.pinot.apache.org/functions/statistical)         |
| String              | Case, slicing, tokenizing, regex, and formatting   | Both                                     | [String Functions](https://docs.pinot.apache.org/functions/string)                   |
| Trigonometric       | Sine, cosine, and related math                     | Both                                     | [Trigonometric Functions](https://docs.pinot.apache.org/functions/trigonometric)     |
| Type conversion     | Cast-like and conversion helpers                   | Both                                     | [Type Conversion Functions](https://docs.pinot.apache.org/functions/type-conversion) |
| UDFs                | Custom extension points                            | Varies by implementation                 | [User-Defined Functions](https://docs.pinot.apache.org/functions/udf)                |
| Vector / similarity | Embeddings and similarity search helpers           | Both, where supported                    | [Vector / Similarity Functions](https://docs.pinot.apache.org/functions/vector)      |
| Window              | Ranking, framing, and rolling calculations         | Multi-stage only                         | [Window Functions](https://docs.pinot.apache.org/functions/window)                   |

## Ingestion-time transformations

If you are shaping records before they land in Pinot, use the curated transformation guide instead of starting from the raw function catalog.

{% content-ref url="transformations" %}
[transformations](https://docs.pinot.apache.org/functions/transformations)
{% endcontent-ref %}

The transformation guide pulls together the functions most often used in schema updates, ingestion configs, and query projections, including typed JSON access, string shaping, date/time conversion, and multi-value helpers.

## Engine choice

If you are deciding whether a query belongs on the single-stage engine or the multi-stage engine, use the decision guide first and then return here for the function family that matters.

{% content-ref url="../build-with-pinot/querying-and-sql/sse-vs-mse" %}
[sse-vs-mse](https://docs.pinot.apache.org/build-with-pinot/querying-and-sql/sse-vs-mse)
{% endcontent-ref %}

## What this page covered

* The major Pinot function families and the engine signal for each family.
* Where to go for ingestion-time transformation guidance.
* Which engine decision guide to use before choosing a function-heavy query shape.

## Next step

* Open the function family page for the syntax and examples you need, then confirm the engine constraints before writing the query.

## Related pages

* [SSE vs MSE](https://docs.pinot.apache.org/build-with-pinot/querying-and-sql/sse-vs-mse)
* [Transformations](https://docs.pinot.apache.org/functions/transformations)
* [Function Index](https://docs.pinot.apache.org/functions/function-index)
