Share via


VARIANT type

Applies to: check marked yes Databricks SQL check marked yes Databricks Runtime 15.3 and above

Important

This feature is in Public Preview.

Represents semi-structured data.

Note

Iceberg v2 tables do not support VARIANT columns. Apache Iceberg v3 supports VARIANT columns. See Use Apache Iceberg v3 features.

Syntax

VARIANT

Limits

The type supports storing semi-structured data OBJECT, ARRAY, and scalar types. To store STRUCT and MAP use the to_variant_object function. MAP keys must be of type STRING.

Literals

See parse_json function function for details on creating a VARIANT value. You can also use the CAST function to convert a literal of some type to VARIANT.

Notes

Examples

> SELECT parse_json('{"key": 123, "data": [4, 5, "str"]}');
  {"data":[4,5,"str"],"key":123}

> SELECT parse_json(null);
  null

> SELECT parse_json('123');
  123

> SELECT CAST(123.456 AS VARIANT);
  123.456

> SELECT to_variant_object(map('key', 'val'));
  { "key": "val" }

> SELECT to_variant_object(struct('field', 'val'));
  { "field": "val" }