---
layout: global
title: Built-in Functions
displayTitle: Built-in Functions
license: |
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
  http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
---

All built-in functions live in the virtual schema `system.builtin`. They can always be referenced
unambiguously by their fully qualified name (for example `system.builtin.abs`), regardless of any
user-defined function that may share the same name.

### Aggregate Functions
{% include_api_gen generated-agg-funcs-table.html %}
#### Examples
{% include_api_gen generated-agg-funcs-examples.html %}

### Window Functions
{% include_api_gen generated-window-funcs-table.html %}
#### Examples
{% include_api_gen generated-window-funcs-examples.html %}

### Array Functions
{% include_api_gen generated-array-funcs-table.html %}
#### Examples
{% include_api_gen generated-array-funcs-examples.html %}

### Collection Functions
{% include_api_gen generated-collection-funcs-table.html %}
#### Examples
{% include_api_gen generated-collection-funcs-examples.html %}

### STRUCT Functions
{% include_api_gen generated-struct-funcs-table.html %}
#### Examples
{% include_api_gen generated-struct-funcs-examples.html %}

### Map Functions
{% include_api_gen generated-map-funcs-table.html %}
#### Examples
{% include_api_gen generated-map-funcs-examples.html %}

### Date and Timestamp Functions
{% include_api_gen generated-datetime-funcs-table.html %}
#### Examples
{% include_api_gen generated-datetime-funcs-examples.html %}

### Mathematical Functions
{% include_api_gen generated-math-funcs-table.html %}
#### Examples
{% include_api_gen generated-math-funcs-examples.html %}

### String Functions
{% include_api_gen generated-string-funcs-table.html %}
#### Examples
{% include_api_gen generated-string-funcs-examples.html %}

### Conditional Functions
{% include_api_gen generated-conditional-funcs-table.html %}
#### Examples
{% include_api_gen generated-conditional-funcs-examples.html %}

### Hash Functions
{% include_api_gen generated-hash-funcs-table.html %}
#### Examples
{% include_api_gen generated-hash-funcs-examples.html %}

### CSV Functions
{% include_api_gen generated-csv-funcs-table.html %}
#### Examples
{% include_api_gen generated-csv-funcs-examples.html %}

### JSON Functions
{% include_api_gen generated-json-funcs-table.html %}
#### Examples
{% include_api_gen generated-json-funcs-examples.html %}

### XML Functions
{% include_api_gen generated-xml-funcs-table.html %}
#### Examples
{% include_api_gen generated-xml-funcs-examples.html %}

### URL Functions
{% include_api_gen generated-url-funcs-table.html %}
#### Examples
{% include_api_gen generated-url-funcs-examples.html %}

### Bitwise Functions
{% include_api_gen generated-bitwise-funcs-table.html %}
#### Examples
{% include_api_gen generated-bitwise-funcs-examples.html %}

### Conversion Functions
{% include_api_gen generated-conversion-funcs-table.html %}
#### Examples
{% include_api_gen generated-conversion-funcs-examples.html %}

### Predicate Functions
{% include_api_gen generated-predicate-funcs-table.html %}
#### Examples
{% include_api_gen generated-predicate-funcs-examples.html %}

### Misc Functions
{% include_api_gen generated-misc-funcs-table.html %}
#### Examples
{% include_api_gen generated-misc-funcs-examples.html %}

### Generator Functions
{% include_api_gen generated-generator-funcs-table.html %}
#### Examples
{% include_api_gen generated-generator-funcs-examples.html %}

### Table Functions
{% include_api_gen generated-table-funcs-table.html %}
#### Examples
{% include_api_gen generated-table-funcs-examples.html %}

### Variant Functions
{% include_api_gen generated-variant-funcs-table.html %}
#### Examples
{% include_api_gen generated-variant-funcs-examples.html %}

### Geospatial ST Functions
{% include_api_gen generated-st-funcs-table.html %}
#### Examples
{% include_api_gen generated-st-funcs-examples.html %}
