Skip to main content
Skip to main content

Map(K, V)

Data type Map(K, V) stores key-value pairs.

Unlike other databases, maps are not unique in ClickHouse, i.e. a map can contain two elements with the same key. (The reason for that is that maps are internally implemented as Array(Tuple(K, V)).)

You can use use syntax m[k] to obtain the value for key k in map m. Also, m[k] scans the map, i.e. the runtime of the operation is linear in the size of the map.

Parameters

  • K — The type of the Map keys. Arbitrary type except Nullable and LowCardinality nested with Nullable types.
  • V — The type of the Map values. Arbitrary type.

Examples

Create a table with a column of type map:

To select key2 values:

Result:

If the requested key k is not contained in the map, m[k] returns the value type's default value, e.g. 0 for integer types and '' for string types. To check whether a key exists in a map, you can use function mapContains.

Result:

Converting Tuple to Map

Values of type Tuple() can be cast to values of type Map() using function CAST:

Example

Query:

Result:

Reading subcolumns of Map

To avoid reading the entire map, you can use subcolumns keys and values in some cases.

Example

Query:

Result:

See Also