Skip to content

Schemas🔗

Iceberg tables support the following types:

Type Description Notes
boolean True or false
int 32-bit signed integers Can promote to long
long 64-bit signed integers
float 32-bit IEEE 754 floating point Can promote to double
double 64-bit IEEE 754 floating point
decimal(P,S) Fixed-point decimal; precision P, scale S Scale is fixed and precision must be 38 or less
date Calendar date without timezone or time
time Time of day without date, timezone Stored as microseconds
timestamp Timestamp without timezone Stored as microseconds
timestamptz Timestamp with timezone Stored as microseconds
timestamp_ns Timestamp without timezone, nanosecond precision Stored as nanoseconds; added in v3
timestamptz_ns Timestamp with timezone, nanosecond precision Stored as nanoseconds; added in v3
string Arbitrary-length character sequences Encoded with UTF-8
uuid Universally unique identifiers
fixed(L) Fixed-length byte array of length L
binary Arbitrary-length byte array
variant Semi-structured data (JSON-like) Added in v3
geometry(C) Geospatial features with CRS parameter Linear edge-interpolation; added in v3
geography(C, A) Geospatial features with CRS and edge algorithm Non-linear edge-interpolation; added in v3
unknown Placeholder type for undetermined columns Must be optional; added in v3
struct<...> A record with named fields of any data type
list<E> A list with elements of any data type
map<K, V> A map with keys and values of any data type

Iceberg tracks each field in a table schema using an ID that is never reused in a table. See correctness guarantees for more information.