# unnest — DuckDB 1.5.5

No description supplied by the engine.

- Reference: /products/haybarn/functions/releases/duckdb-1.5.5/unnest/
- JSON: /products/haybarn/functions/api/v1/duckdb-1.5.5/functions/unnest.json
- Snapshot ID: duckdb-1.5.5
- Engine: duckdb v1.5.5
- Source ID: d8cdaa33fd
- Binary SHA-256: 8463eb26527b278109cfddffc4606e1019ebefcfe2eac75efc53c76ed8f282d5
- Captured: 2026-09-05T18:37:40.699Z
- Source: https://github.com/duckdb/duckdb/releases/tag/v1.5.5
- Loaded extensions: autocomplete, core_functions, icu, json, parquet, shell

## Interpretation

- Choose a snapshot matching the target engine and build. The default is captured from the published Haybarn WASM package used by the browser playground. Historical native snapshots are also available.
- Availability is an observation in the recorded build and extension profile, not a guarantee of support in every installation or in WASM.
- Types and descriptions are declarations from duckdb_functions(). Binding can specialize result types. Null means not supplied by the catalog; do not invent defaults, optionality, argument mode, or table output columns.
- Raw parameter arrays preserve catalog order for scalar/aggregate/macro functions. Raw table arguments are alphabetical. Use callingConvention for engine-confirmed positional order and named arguments; null modes are unrecorded. Named does not mean optional. Macro defaults and special named variadic behavior are not supplied by duckdb_functions().
- Catalog examples are source material and may require data or extensions. runnableExamples contains separately verified SQL for the pinned WASM package; sample-data adaptations and guide examples are labeled separately.
- Guide annotations and recipes are separate editorial content. The browser runner always uses Haybarn WASM 1.5.5-rc3, independently of the documentation snapshot.
- All URLs beginning with / are relative to the origin hosting this document. Exports require no JavaScript, cookies, API key, or browser engine.

## Overloads

### overload-4ebd0152fb19c7dd

Kind: table. Parameter order: alphabetical-not-call-order.

```text
unnest(col0: ANY) → TABLE
```

Link: /products/haybarn/functions/releases/duckdb-1.5.5/unnest/#overload-4ebd0152fb19c7dd

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| col0 | ANY | positional (position 1) |

Declared return type: unknown. Variadic argument type: none declared.
Stability: unknown. Declared side effects: unknown.


## Guide recipes

No guide recipes.

## Engine catalog examples

Source examples may require additional data or extensions. Expressions are wrapped in SELECT; execution verification is not recorded.

No catalog examples.

## Additional DuckDB documentation

- [Enum Data Type](https://duckdb.org/docs/current/sql/data_types/enum#ordering-of-enums)
- [Struct Data Type](https://duckdb.org/docs/current/sql/data_types/struct#unnest--struct)
- [List Functions](https://duckdb.org/docs/current/sql/functions/list#unnestlist)

## In other engines

### PostgreSQL

Uses unnest as part of a larger rewrite.

PostgreSQL:

```sql
WITH dates AS (SELECT GENERATE_SERIES('2020-01-01'::DATE, '2024-01-01'::DATE, '1 day'::INTERVAL) AS date), date_table AS (SELECT DISTINCT DATE_TRUNC('MONTH', date) AS date FROM dates) SELECT * FROM date_table
```

Haybarn / DuckDB:

```sql
WITH dates AS (SELECT UNNEST(GENERATE_SERIES(CAST('2020-01-01' AS DATE), CAST('2024-01-01' AS DATE), CAST('1 day' AS INTERVAL))) AS date), date_table AS (SELECT DISTINCT DATE_TRUNC('MONTH', date) AS date FROM dates) SELECT * FROM date_table
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_postgres.py#L787).

### Apache Hive: explode()

Uses unnest as part of a larger rewrite.

Apache Hive:

```sql
SELECT a FROM x LATERAL VIEW EXPLODE(y) t AS a
```

Haybarn / DuckDB:

```sql
SELECT a FROM x CROSS JOIN UNNEST(y) AS t(a)
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_hive.py#L281).

### Apache Spark: explode()



Apache Spark:

```sql
EXPLODE(x)
```

Haybarn / DuckDB:

```sql
UNNEST(x)
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_duckdb.py#L1119).

### BigQuery: unnest()

Uses unnest as part of a larger rewrite.

BigQuery:

```sql
SELECT * FROM UNNEST(ARRAY<STRUCT<x INT64>>[])
```

Haybarn / DuckDB:

```sql
SELECT * FROM (SELECT UNNEST(CAST([] AS STRUCT(x BIGINT)[]), max_depth => 2))
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_bigquery.py#L2815).

### Snowflake: minhash_combine()

Uses unnest as part of a larger rewrite.

Snowflake:

```sql
MINHASH_COMBINE(sig_col)
```

Haybarn / DuckDB:

```sql
(SELECT JSON_OBJECT('state', LIST(min_h ORDER BY idx NULLS FIRST), 'type', 'minhash', 'version', 1) FROM (SELECT pos AS idx, MIN(val) AS min_h FROM UNNEST(LIST(sig_col)) AS _(sig) JOIN UNNEST(CAST(sig -> '$.state' AS UBIGINT[])) WITH ORDINALITY AS t(val, pos) ON TRUE GROUP BY pos))
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_snowflake.py#L2363).

## Observed availability

| Snapshot | Observed | Overloads | JSON |
| --- | --- | --- | --- |
| haybarn-1.5.5-rc3 | present | 1 | [reference](/products/haybarn/functions/api/v1/haybarn-1.5.5-rc3/functions/unnest.json) |
| duckdb-1.5.5 | present | 1 | [reference](/products/haybarn/functions/api/v1/duckdb-1.5.5/functions/unnest.json) |
| duckdb-1.4.4 | present | 1 | [reference](/products/haybarn/functions/api/v1/duckdb-1.4.4/functions/unnest.json) |
| duckdb-1.3.2 | present | 1 | [reference](/products/haybarn/functions/api/v1/duckdb-1.3.2/functions/unnest.json) |

Engine catalog documentation is derived from MIT-licensed Haybarn and DuckDB. [Notices](/third-party-notices.txt).
